KFDDistribution - Distribution Only Cluster Schema
This document explains the full schema for the kind: KFDDistribution
for the furyctl.yaml
file used by furyctl
. This configuration file will be used to deploy the Kubernetes Fury Distribution modules on top of an existing Kubernetes cluster.
An example configuration file can be created by running the following command:
furyctl create config --kind KFDDistribution --version v1.29.4 --name example-cluster
Replace the version with your desired version of KFD.
Properties
Property | Type | Required |
---|---|---|
apiVersion | string | Required |
kind | string | Required |
metadata | object | Required |
spec | object | Required |
Description
KFD modules deployed on top of an existing Kubernetes cluster.
.apiVersion
Constraints
pattern: the string must match the following regular expression:
^kfd\.sighup\.io/v\d+((alpha|beta)\d+)?$
.kind
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"KFDDistribution" |
.metadata
Properties
Property | Type | Required |
---|---|---|
name | string | Required |
.metadata.name
Description
The name of the cluster. It will also be used as a prefix for all the other resources created.
Constraints
maximum length: the maximum number of characters for this string is: 56
minimum length: the minimum number of characters for this string is: 1
.spec
Properties
Property | Type | Required |
---|---|---|
distribution | object | Required |
distributionVersion | string | Required |
plugins | object | Optional |
.spec.distribution
Properties
Property | Type | Required |
---|---|---|
common | object | Optional |
customPatches | object | Optional |
kubeconfig | string | Required |
modules | object | Required |
.spec.distribution.common
Properties
Property | Type | Required |
---|---|---|
nodeSelector | object | Optional |
provider | object | Optional |
registry | string | Optional |
relativeVendorPath | string | Optional |
tolerations | array | Optional |
Description
Common configuration for all the distribution modules.
.spec.distribution.common.nodeSelector
Description
The node selector to use to place the pods for all the KFD modules. Follows Kubernetes selector format. Example: node.kubernetes.io/role: infra
.
.spec.distribution.common.provider
Properties
Property | Type | Required |
---|---|---|
type | string | Required |
.spec.distribution.common.provider.type
Description
The provider type. Don't set. FOR INTERNAL USE ONLY.
.spec.distribution.common.registry
Description
URL of the registry where to pull images from for the Distribution phase. (Default is registry.sighup.io/fury
).
NOTE: If plugins are pulling from the default registry, the registry will be replaced for the plugin too.
.spec.distribution.common.relativeVendorPath
Description
The relative path to the vendor directory, does not need to be changed.
.spec.distribution.common.tolerations
Properties
Property | Type | Required |
---|---|---|
effect | string | Required |
key | string | Required |
operator | string | Optional |
value | string | Optional |
Description
An array with the tolerations that will be added to the pods for all the KFD modules. Follows Kubernetes tolerations format. Example:
- effect: NoSchedule
key: node.kubernetes.io/role
value: infra
.spec.distribution.common.tolerations.effect
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"NoSchedule" |
"PreferNoSchedule" |
"NoExecute" |
.spec.distribution.common.tolerations.key
Description
The key of the toleration
.spec.distribution.common.tolerations.operator
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"Exists" |
"Equal" |
.spec.distribution.common.tolerations.value
Description
The value of the toleration
.spec.distribution.customPatches
Properties
Property | Type | Required |
---|---|---|
configMapGenerator | array | Optional |
images | array | Optional |
patches | array | Optional |
patchesStrategicMerge | array | Optional |
secretGenerator | array | Optional |
.spec.distribution.customPatches.configMapGenerator
Properties
Property | Type | Required |
---|---|---|
behavior | string | Optional |
envs | array | Optional |
files | array | Optional |
literals | array | Optional |
name | string | Required |
namespace | string | Optional |
options | object | Optional |
.spec.distribution.customPatches.configMapGenerator.behavior
Description
The behavior of the configmap
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"create" |
"replace" |
"merge" |
.spec.distribution.customPatches.configMapGenerator.envs
Description
The envs of the configmap
.spec.distribution.customPatches.configMapGenerator.files
Description
The files of the configmap
.spec.distribution.customPatches.configMapGenerator.literals
Description
The literals of the configmap
.spec.distribution.customPatches.configMapGenerator.name
Description
The name of the configmap
.spec.distribution.customPatches.configMapGenerator.namespace
Description
The namespace of the configmap
.spec.distribution.customPatches.configMapGenerator.options
Properties
Property | Type | Required |
---|---|---|
annotations | object | Optional |
disableNameSuffixHash | boolean | Optional |
immutable | boolean | Optional |
labels | object | Optional |
.spec.distribution.customPatches.configMapGenerator.options.annotations
Description
The annotations of the configmap
.spec.distribution.customPatches.configMapGenerator.options.disableNameSuffixHash
Description
If true, the name suffix hash will be disabled
.spec.distribution.customPatches.configMapGenerator.options.immutable
Description
If true, the configmap will be immutable
.spec.distribution.customPatches.configMapGenerator.options.labels
Description
The labels of the configmap
.spec.distribution.customPatches.images
Description
Each entry should follow the format of Kustomize's images patch
.spec.distribution.customPatches.patches
Properties
Property | Type | Required |
---|---|---|
options | object | Optional |
patch | string | Optional |
path | string | Optional |
target | object | Optional |
.spec.distribution.customPatches.patches.options
Properties
Property | Type | Required |
---|---|---|
allowKindChange | boolean | Optional |
allowNameChange | boolean | Optional |
.spec.distribution.customPatches.patches.options.allowKindChange
Description
If true, the kind change will be allowed
.spec.distribution.customPatches.patches.options.allowNameChange
Description
If true, the name change will be allowed
.spec.distribution.customPatches.patches.patch
Description
The patch content
.spec.distribution.customPatches.patches.path
Description
The path of the patch
.spec.distribution.customPatches.patches.target
Properties
Property | Type | Required |
---|---|---|
annotationSelector | string | Optional |
group | string | Optional |
kind | string | Optional |
labelSelector | string | Optional |
name | string | Optional |
namespace | string | Optional |
version | string | Optional |
.spec.distribution.customPatches.patches.target.annotationSelector
Description
The annotation selector of the target
.spec.distribution.customPatches.patches.target.group
Description
The group of the target
.spec.distribution.customPatches.patches.target.kind
Description
The kind of the target
.spec.distribution.customPatches.patches.target.labelSelector
Description
The label selector of the target
.spec.distribution.customPatches.patches.target.name
Description
The name of the target
.spec.distribution.customPatches.patches.target.namespace
Description
The namespace of the target
.spec.distribution.customPatches.patches.target.version
Description
The version of the target
.spec.distribution.customPatches.patchesStrategicMerge
Description
Each entry should be either a relative file path or an inline content resolving to a partial or complete resource definition
.spec.distribution.customPatches.secretGenerator
Properties
Property | Type | Required |
---|---|---|
behavior | string | Optional |
envs | array | Optional |
files | array | Optional |
literals | array | Optional |
name | string | Required |
namespace | string | Optional |
options | object | Optional |
type | string | Optional |
.spec.distribution.customPatches.secretGenerator.behavior
Description
The behavior of the secret
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"create" |
"replace" |
"merge" |
.spec.distribution.customPatches.secretGenerator.envs
Description
The envs of the secret
.spec.distribution.customPatches.secretGenerator.files
Description
The files of the secret
.spec.distribution.customPatches.secretGenerator.literals
Description
The literals of the secret
.spec.distribution.customPatches.secretGenerator.name
Description
The name of the secret
.spec.distribution.customPatches.secretGenerator.namespace
Description
The namespace of the secret
.spec.distribution.customPatches.secretGenerator.options
Properties
Property | Type | Required |
---|---|---|
annotations | object | Optional |
disableNameSuffixHash | boolean | Optional |
immutable | boolean | Optional |
labels | object | Optional |
.spec.distribution.customPatches.secretGenerator.options.annotations
Description
The annotations of the secret
.spec.distribution.customPatches.secretGenerator.options.disableNameSuffixHash
Description
If true, the name suffix hash will be disabled
.spec.distribution.customPatches.secretGenerator.options.immutable
Description
If true, the secret will be immutable
.spec.distribution.customPatches.secretGenerator.options.labels
Description
The labels of the secret
.spec.distribution.customPatches.secretGenerator.type
Description
The type of the secret
.spec.distribution.kubeconfig
Description
The path to the kubeconfig file.
.spec.distribution.modules
Properties
Property | Type | Required |
---|---|---|
auth | object | Optional |
dr | object | Required |
ingress | object | Required |
logging | object | Required |
monitoring | object | Optional |
networking | object | Optional |
policy | object | Required |
tracing | object | Optional |
.spec.distribution.modules.auth
Properties
Property | Type | Required |
---|---|---|
baseDomain | string | Optional |
dex | object | Optional |
overrides | object | Optional |
pomerium | object | Optional |
provider | object | Required |
Description
Configuration for the Auth module.
.spec.distribution.modules.auth.baseDomain
Description
The base domain for the ingresses created by the Auth module (Gangplank, Pomerium, Dex). Notice that when the ingress module type is dual
, these will use the external
ingress class.
.spec.distribution.modules.auth.dex
Properties
Property | Type | Required |
---|---|---|
additionalStaticClients | array | Optional |
connectors | array | Required |
expiry | object | Optional |
overrides | object | Optional |
Description
Configuration for the Dex package.
.spec.distribution.modules.auth.dex.additionalStaticClients
Description
Additional static clients defitions that will be added to the default clients included with the distribution in Dex's configuration. Example:
additionalStaticClients:
- id: my-custom-client
name: "A custom additional static client"
redirectURIs:
- "https://myapp.tld/redirect"
- "https://alias.tld/oidc-callback"
secret: supersecretpassword
Reference: https://dexidp.io/docs/connectors/local/
.spec.distribution.modules.auth.dex.connectors
Description
A list with each item defining a Dex connector. Follows Dex connectors configuration format: https://dexidp.io/docs/connectors/
.spec.distribution.modules.auth.dex.expiry
Properties
Property | Type | Required |
---|---|---|
idTokens | string | Optional |
signingKeys | string | Optional |
.spec.distribution.modules.auth.dex.expiry.idTokens
Description
Dex ID tokens expiration time duration (default 24h).
.spec.distribution.modules.auth.dex.expiry.signingKeys
Description
Dex signing key expiration time duration (default 6h).
.spec.distribution.modules.auth.dex.overrides
Properties
Property | Type | Required |
---|---|---|
nodeSelector | object | Optional |
tolerations | array | Optional |
.spec.distribution.modules.auth.dex.overrides.nodeSelector
Description
Set to override the node selector used to place the pods of the package.
.spec.distribution.modules.auth.dex.overrides.tolerations
Properties
Property | Type | Required |
---|---|---|
effect | string | Required |
key | string | Required |
operator | string | Optional |
value | string | Optional |
Description
Set to override the tolerations that will be added to the pods of the package.
.spec.distribution.modules.auth.dex.overrides.tolerations.effect
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"NoSchedule" |
"PreferNoSchedule" |
"NoExecute" |
.spec.distribution.modules.auth.dex.overrides.tolerations.key
Description
The key of the toleration
.spec.distribution.modules.auth.dex.overrides.tolerations.operator
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"Exists" |
"Equal" |
.spec.distribution.modules.auth.dex.overrides.tolerations.value
Description
The value of the toleration
.spec.distribution.modules.auth.overrides
Properties
Property | Type | Required |
---|---|---|
ingresses | object | Optional |
nodeSelector | object | Optional |
tolerations | array | Optional |
Description
Override the common configuration with a particular configuration for the Auth module.
.spec.distribution.modules.auth.overrides.ingresses
Description
Override the definition of the Auth module ingresses.
.spec.distribution.modules.auth.overrides.nodeSelector
Description
Set to override the node selector used to place the pods of the Auth module.
.spec.distribution.modules.auth.overrides.tolerations
Properties
Property | Type | Required |
---|---|---|
effect | string | Required |
key | string | Required |
operator | string | Optional |
value | string | Optional |
Description
Set to override the tolerations that will be added to the pods of the Auth module.
.spec.distribution.modules.auth.overrides.tolerations.effect
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"NoSchedule" |
"PreferNoSchedule" |
"NoExecute" |
.spec.distribution.modules.auth.overrides.tolerations.key
Description
The key of the toleration
.spec.distribution.modules.auth.overrides.tolerations.operator
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"Exists" |
"Equal" |
.spec.distribution.modules.auth.overrides.tolerations.value
Description
The value of the toleration
.spec.distribution.modules.auth.pomerium
Properties
Property | Type | Required |
---|---|---|
defaultRoutesPolicy | object | Optional |
overrides | object | Optional |
policy | string | Optional |
routes | array | Optional |
secrets | object | Required |
Description
Configuration for Pomerium, an identity-aware reverse proxy used for SSO.
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy
Properties
Property | Type | Required |
---|---|---|
gatekeeperPolicyManager | array | Optional |
hubbleUi | array | Optional |
ingressNgnixForecastle | array | Optional |
loggingMinioConsole | array | Optional |
loggingOpensearchDashboards | array | Optional |
monitoringAlertmanager | array | Optional |
monitoringGrafana | array | Optional |
monitoringMinioConsole | array | Optional |
monitoringPrometheus | array | Optional |
tracingMinioConsole | array | Optional |
Description
override default routes for KFD components
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.gatekeeperPolicyManager
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.hubbleUi
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.ingressNgnixForecastle
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.loggingMinioConsole
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.loggingOpensearchDashboards
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.monitoringAlertmanager
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.monitoringGrafana
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.monitoringMinioConsole
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.monitoringPrometheus
.spec.distribution.modules.auth.pomerium.defaultRoutesPolicy.tracingMinioConsole
.spec.distribution.modules.auth.pomerium.overrides
Properties
Property | Type | Required |
---|---|---|
nodeSelector | object | Optional |
tolerations | array | Optional |
.spec.distribution.modules.auth.pomerium.overrides.nodeSelector
.spec.distribution.modules.auth.pomerium.overrides.tolerations
Properties
Property | Type | Required |
---|---|---|
effect | string | Required |
key | string | Required |
operator | string | Optional |
value | string | Required |
.spec.distribution.modules.auth.pomerium.overrides.tolerations.effect
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"NoSchedule" |
"PreferNoSchedule" |
"NoExecute" |
.spec.distribution.modules.auth.pomerium.overrides.tolerations.key
.spec.distribution.modules.auth.pomerium.overrides.tolerations.operator
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"Exists" |
"Equal" |
.spec.distribution.modules.auth.pomerium.overrides.tolerations.value
.spec.distribution.modules.auth.pomerium.policy
Description
DEPRECATED: Use defaultRoutesPolicy and/or routes
.spec.distribution.modules.auth.pomerium.routes
Description
Additional routes configuration for Pomerium. Follows Pomerium's route format: https://www.pomerium.com/docs/reference/routes
.spec.distribution.modules.auth.pomerium.secrets
Properties
Property | Type | Required |
---|---|---|
COOKIE_SECRET | string | Required |
IDP_CLIENT_SECRET | string | Required |
SHARED_SECRET | string | Required |
SIGNING_KEY | string | Required |
Description
Pomerium needs some user-provided secrets to be fully configured. These secrets should be unique between clusters.
.spec.distribution.modules.auth.pomerium.secrets.COOKIE_SECRET
Description
Cookie Secret is the secret used to encrypt and sign session cookies.
To generate a random key, run the following command: head -c32 /dev/urandom | base64
.spec.distribution.modules.auth.pomerium.secrets.IDP_CLIENT_SECRET
Description
Identity Provider Client Secret is the OAuth 2.0 Secret Identifier. When auth type is SSO, this value will be the secret used to authenticate Pomerium with Dex, use a strong random value.
.spec.distribution.modules.auth.pomerium.secrets.SHARED_SECRET
Description
Shared Secret is the base64-encoded, 256-bit key used to mutually authenticate requests between Pomerium services. It's critical that secret keys are random, and stored safely.
To generate a key, run the following command: head -c32 /dev/urandom | base64
.spec.distribution.modules.auth.pomerium.secrets.SIGNING_KEY
Description
Signing Key is the base64 representation of one or more PEM-encoded private keys used to sign a user's attestation JWT, which can be consumed by upstream applications to pass along identifying user information like username, id, and groups.
To generates an P-256 (ES256) signing key:
openssl ecparam -genkey -name prime256v1 -noout -out ec_private.pem
# careful! this will output your private key in terminal
cat ec_private.pem | base64
.spec.distribution.modules.auth.provider
Properties
Property | Type | Required |
---|---|---|
basicAuth | object | Optional |
type | string | Required |
.spec.distribution.modules.auth.provider.basicAuth
Properties
Property | Type | Required |
---|---|---|
password | string | Required |
username | string | Required |
Description
Configuration for the HTTP Basic Auth provider.
.spec.distribution.modules.auth.provider.basicAuth.password
Description
The password for logging in with the HTTP basic authentication.
.spec.distribution.modules.auth.provider.basicAuth.username
Description
The username for logging in with the HTTP basic authentication.
.spec.distribution.modules.auth.provider.type
Description
The type of the Auth provider, options are:
none
: will disable authentication in the infrastructural ingresses.sso
: will protect the infrastructural ingresses with Pomerium and Dex (SSO) and require authentication before accessing them.basicAuth
: will protect the infrastructural ingresses with HTTP basic auth (username and password) authentication.
Default is none
.
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"none" |
"basicAuth" |
"sso" |
.spec.distribution.modules.dr
Properties
Property | Type | Required |
---|---|---|
overrides | object | Optional |
type | string | Required |
velero | object | Optional |
Description
Configuration for the Disaster Recovery module.
.spec.distribution.modules.dr.overrides
Properties
Property | Type | Required |
---|---|---|
ingresses | object | Optional |
nodeSelector | object | Optional |
tolerations | array | Optional |
Description
Override the common configuration with a particular configuration for the module.
.spec.distribution.modules.dr.overrides.ingresses
.spec.distribution.modules.dr.overrides.nodeSelector
Description
Set to override the node selector used to place the pods of the module.
.spec.distribution.modules.dr.overrides.tolerations
Properties
Property | Type | Required |
---|---|---|
effect | string | Required |
key | string | Required |
operator | string | Optional |
value | string | Optional |
Description
Set to override the tolerations that will be added to the pods of the module.
.spec.distribution.modules.dr.overrides.tolerations.effect
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"NoSchedule" |
"PreferNoSchedule" |
"NoExecute" |
.spec.distribution.modules.dr.overrides.tolerations.key
Description
The key of the toleration
.spec.distribution.modules.dr.overrides.tolerations.operator
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"Exists" |
"Equal" |
.spec.distribution.modules.dr.overrides.tolerations.value
Description
The value of the toleration
.spec.distribution.modules.dr.type
Description
The type of the Disaster Recovery, must be none
or on-premises
. none
disables the module and on-premises
will install Velero and an optional MinIO deployment.
Default is none
.
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"none" |
"on-premises" |
.spec.distribution.modules.dr.velero
Properties
Property | Type | Required |
---|---|---|
backend | string | Optional |
externalEndpoint | object | Optional |
overrides | object | Optional |
schedules | object | Optional |
snapshotController | object | Optional |
Description
Configuration for the Velero package.
.spec.distribution.modules.dr.velero.backend
Description
The storage backend type for Velero. minio
will use an in-cluster MinIO deployment for object storage, externalEndpoint
can be used to point to an external S3-compatible object storage instead of deploying an in-cluster MinIO.
Constraints
enum: the value of this property must be equal to one of the following string values:
Value |
---|
"minio" |
"externalEndpoint" |