Skip to content

Latest commit

 

History

History
676 lines (495 loc) · 25.8 KB

File metadata and controls

676 lines (495 loc) · 25.8 KB

Configuration Reference

AADApplication

Field Type Default Description
principalID string

AMIConfig

Field Type Default Description
id string

APIServerConfig

REFER : https://github.com/kubernetes-sigs/cluster-api/blob/main/controlplane/kubeadm/config/crd/bases/controlplane.cluster.x-k8s.io_kubeadmcontrolplanes.yaml.

NOTE : Generally, refer to the KubeadmControlPlane CRD instead of the corresponding GoLang source types linked below. There are some configuration options which appear in the corresponding GoLang source type, but not in the CRD. If you set those fields, then they get removed by the Kubeadm control-plane provider. This causes the capi-cluster ArgoCD App to always be in an OutOfSync state, resulting to KubeAid CLI not making any progress!

Field Type Default Description
extraArgs map[string]string {}
extraVolumes []HostPathMountConfig []
files []FileConfig []

AWSAutoScalableNodeGroup

Field Type Default Description
ami AMIConfig
instanceType string
rootVolumeSize uint32
sshKeyName string
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.
minSize uint Minimum number of replicas in the nodegroup.
maxSize uint Maximum number of replicas in the nodegroup.

AWSConfig

Field Type Default Description
region string
sshKeyName string
vpcID string
bastionEnabled bool True
controlPlane AWSControlPlane
nodeGroups []AWSAutoScalableNodeGroup

AWSControlPlane

Field Type Default Description
loadBalancerScheme string internet-facing
replicas uint32
instanceType string
ami AMIConfig

AWSCredentials

Field Type Default Description
accessKeyID string
secretAccessKey string
sessionToken string

ArgoCDConfig

Field Type Default Description
deployKeys DeployKeysConfig

AutoScalableNodeGroup

Field Type Default Description
minSize uint Minimum number of replicas in the nodegroup.
maxSize uint Maximum number of replicas in the nodegroup.
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.

AzureAutoScalableNodeGroup

Field Type Default Description
vmSize string
diskSizeGB uint32
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.
minSize uint Minimum number of replicas in the nodegroup.
maxSize uint Maximum number of replicas in the nodegroup.

AzureConfig

Field Type Default Description
tenantID string
subscriptionID string
aadApplication AADApplication
location string
storageAccount string
workloadIdentity WorkloadIdentity
sshPublicKey string
canonicalUbuntuImage CanonicalUbuntuImage
controlPlane AzureControlPlane
nodeGroups []AzureAutoScalableNodeGroup

AzureControlPlane

Field Type Default Description
loadBalancerType string Public
diskSizeGB uint32
vmSize string
replicas uint32

AzureCredentials

Field Type Default Description
clientID string
clientSecret string

BareMetalConfig

Field Type Default Description
ssh BareMetalSSHConfig
controlPlane BareMetalControlPlane
nodeGroups []BareMetalNodeGroup

BareMetalControlPlane

Field Type Default Description
endpoint BareMetalControlPlaneEndpoint
hosts []BareMetalHost

BareMetalControlPlaneEndpoint

Field Type Default Description
host string
port uint 6443

BareMetalHost

Field Type Default Description
publicAddress string
privateAddress string
ssh BareMetalSSHConfig

BareMetalNodeGroup

Field Type Default Description
hosts []BareMetalHost
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.

BareMetalSSHConfig

Field Type Default Description
port uint 22
privateKey SSHPrivateKeyConfig

CanonicalUbuntuImage

Field Type Default Description
offer string
sku string

CloudConfig

Field Type Default Description
aws AWSConfig
azure AzureConfig
hetzner HetznerConfig
bare-metal BareMetalConfig
local LocalConfig
disasterRecovery DisasterRecoveryConfig

ClusterConfig

Field Type Default Description
type string workload
name string Name of the Kubernetes cluster.

We don't allow using dots in the cluster name, since it can cause issues with tools like
ClusterAPI and Cilium : which use the cluster name to generate other configurations.
k8sVersion string Kubernetes version (>= 1.30.0).
enableAuditLogging bool True Whether you would like to enable Kubernetes Audit Logging out of the box.
Suitable Kubernetes API configurations will be done for you automatically. And they can be
changed using the apiSever struct field.
apiServer APIServerConfig Configuration options for the Kubernetes API server.
additionalUsers []UserConfig Other than the root user, addtional users that you would like to be created in each node.
NOTE : Currently, we can't register additional SSH key-pairs against the root user.
argoCD ArgoCDConfig ArgoCD specific details.

DeployKeysConfig

Field Type Default Description
kubeaidConfig SSHPrivateKeyConfig
kubeaid SSHPrivateKeyConfig

DisasterRecoveryConfig

Field Type Default Description
veleroBackupsBucketName string
sealedSecretsBackupsBucketName string

FileConfig

REFER : "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1".File.

Field Type Default Description
path string
content string

ForksConfig

KubeAid and KubeAid Config repository specific details. We require the KubeAid and KubeAid Config repositories to be hosted in the same Git server.

Field Type Default Description
kubeaid KubeAidForkConfig KubeAid repository specific details.
kubeaidConfig KubeaidConfigForkConfig KubeAid Config repository specific details.

GeneralConfig

Non secret configuration options.

Field Type Default Description
git GitConfig Git server specific details.
forkURLs ForksConfig KubeAid and KubeAid Config repository specific details.
The KubeAid and KubeAid Config repositories must be hosted in the same Git server.
cluster ClusterConfig Kubernetes specific details.
cloud CloudConfig Cloud provider specific details.
kubePrometheus KubePrometheusConfig Kube Prometheus installation specific details. Defaults to Latest
Fill this only if you want a specific version
obmondo ObmondoConfig Obmondo customer specific details.

GitConfig

Git specific details, used by KubeAid CLI, to clone repositories from and push changes to the Git server. We enforce the user to use SSH, for authenticating to the Git server.

Field Type Default Description
caBundlePath string
sshUsername string git SSH username.
useSSHAgent bool Or, make KubeAid CLI use the SSH Agent.
So, you (the one who runs KubeAid CLI) can use your YubiKey.
privateKeyFilePath string

HCloudAutoScalableNodeGroup

Details about (autoscalable) node-groups in HCloud.

Field Type Default Description
machineType string HCloud machine type.
You can browse all available HCloud machine types here : https://hetzner.com/cloud.
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.
minSize uint Minimum number of replicas in the nodegroup.
maxSize uint Maximum number of replicas in the nodegroup.

HCloudControlPlane

Field Type Default Description
machineType string
replicas uint
loadBalancer HCloudControlPlaneLoadBalancer

HCloudControlPlaneLoadBalancer

Field Type Default Description
enabled bool
region string

HCloudVPNClusterConfig

Field Type Default Description
name string

HetznerBareMetalConfig

Field Type Default Description
wipeDisks bool false
installImage InstallImageConfig
sshKeyPair HetznerBareMetalSSHKeyPair

HetznerBareMetalControlPlane

Field Type Default Description
endpoint HetznerBareMetalControlPlaneEndpoint
bareMetalHosts []HetznerBareMetalHost
zfs ZFSConfig ZFS specific configuration.
Every node runs a ZFS pool, named primary. We carve out storage for container images, pod
logs and pod ephemeral volumes from that ZFS pool, as required.
The ZFS pool has RAIDZ-1 enabled, which means it can survive single disk failure.

HetznerBareMetalControlPlaneEndpoint

Field Type Default Description
isFailoverIP bool
host string

HetznerBareMetalHost

Field Type Default Description
serverID string

HetznerBareMetalNodeGroup

Field Type Default Description
bareMetalHosts []HetznerBareMetalHost
zfs ZFSConfig ZFS specific configuration.
Every node runs a ZFS pool, named primary. We carve out storage for container images, pod
logs and pod ephemeral volumes from that ZFS pool, as required.
The ZFS pool has RAIDZ-1 enabled, which means it can survive single disk failure.
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.

HetznerBareMetalSSHKeyPair

Field Type Default Description
name string
publicKeyFilePath string
privateKeyFilePath string

HetznerConfig

Field Type Default Description
mode string hcloud The Hetzner mode to use :

(1) hcloud : Both the control-plane and the nodegroups will be in HCloud.

(2) bare-metal : Both the control-plane and the nodegroups will be in Hetzner Bare Metal.

(3) hybrid : The control-plane will be in HCloud, and each node-group can be either in
HCloud or Hetzner Bare Metal.
vswitch VSwitchConfig
hcloud HetznerHCloudConfig
bareMetal HetznerBareMetalConfig
controlPlane HetznerControlPlane
nodeGroups HetznerNodeGroups Details about node-groups in Hetzner.
vpnCluster HCloudVPNClusterConfig

HetznerControlPlane

Field Type Default Description
hcloud HCloudControlPlane
bareMetal HetznerBareMetalControlPlane
regions []string

HetznerCredentials

Field Type Default Description
apiToken string
robot HetznerRobotCredentials

HetznerHCloudConfig

Field Type Default Description
zone string
imageName string ubuntu-24.04
sshKeyPairName string

HetznerNodeGroups

Details about node-groups in Hetzner.

Field Type Default Description
hcloud []HCloudAutoScalableNodeGroup Details about node-groups in HCloud.
bareMetal []HetznerBareMetalNodeGroup Details about node-groups in Hetzner Bare Metal.

HetznerRobotCredentials

Field Type Default Description
user string
password string

HostPathMountConfig

REFER : "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1".HostPathMount

Field Type Default Description
name string
hostPath string
mountPath string
pathType k8s.io/api/core/v1.HostPathType
readOnly bool true Whether the mount should be read-only.

InstallImageConfig

Field Type Default Description
imagePath string /root/.oldroot/nfs/images/Ubuntu-2404-noble-amd64-base.tar.gz
vg0 VG0Config

KubeAidForkConfig

KubeAid repository specific details.

Field Type Default Description
url string KubeAid repository SSH URL.
version string KubeAid tag.

KubePrometheusConfig

Field Type Default Description
version string
grafanaURL string

KubeaidConfigForkConfig

KubeAid Config repository specific details.

Field Type Default Description
url string KubeAid Config repository SSH URL.
directory string Name of the directory inside your KubeAid Config repository's k8s folder, where the KubeAid
Config files for this cluster will be contained.

When not specified, the directory name will default to the cluster name.

So, suppose your cluster name is 'staging'. Then, the directory name will default to
'staging'. Or you can customize it to something like 'staging.qa'.

LocalConfig

Local specific.

Field Type Default Description

NodeGroup

Field Type Default Description
name string Nodegroup name.
labels map[string]string [] Labels that you want to be propagated to each node in the nodegroup.

Each label should meet one of the following criterias to propagate to each of the nodes :

1. Has node-role.kubernetes.io as prefix.
2. Belongs to node-restriction.kubernetes.io domain.
3. Belongs to node.cluster.x-k8s.io domain.

REFER : https://cluster-api.sigs.k8s.io/developer/architecture/controllers/metadata-propagation#machine.
taints []k8s.io/api/core/v1.Taint [] Taints that you want to be propagated to each node in the nodegroup.

ObmondoConfig

Field Type Default Description
customerID string
monitoring bool

SSHKeyPairConfig

Field Type Default Description
publicKeyFilePath string
privateKeyFilePath string

SSHPrivateKeyConfig

Field Type Default Description
privateKeyFilePath string

SecretsConfig

Field Type Default Description
aws AWSCredentials
azure AzureCredentials
hetzner HetznerCredentials

UserConfig

Field Type Default Description
name string
sshPublicKey string

VG0Config

Field Type Default Description
size int 80
rootVolumeSize int 50

VSwitchConfig

Field Type Default Description
vlanID int
name string

WorkloadIdentity

Field Type Default Description
openIDProviderSSHKeyPair SSHKeyPairConfig

ZFSConfig

Field Type Default Description
size int 220 ZFS pool size (in GB), on each node in the corresponding node-group.
Must be >= 200 GB : reserving 100 GB for container images, 50 GB for pod logs and 50 GB for
pod ephemeral volumes.
On top of that, if you want x GB of node-local storage for your workloads (like Redis),
the ZFS pool size will be (200 + 2x) GB, keeping in mind that RAIDZ-1 is enabled.