Documentation
¶
Index ¶
- Variables
- func ControlPlaneInHCloud() bool
- func ControlPlaneInHetznerBareMetal() bool
- func GenerateSampleConfig(ctx context.Context, args *GenerateSampleConfigArgs)
- func GetGeneralConfigFilePath() string
- func GetSecretsConfigFilePath() string
- func MustGetHetznerProviderMode() string
- func UsingHCloud() bool
- func UsingHetznerBareMetal() bool
- type AADApplication
- type AMIConfig
- type APIServerConfig
- type AWSAutoScalableNodeGroup
- type AWSConfig
- type AWSControlPlane
- type AWSCredentials
- type ArgoCDConfig
- type AutoScalableNodeGroup
- type AzureAutoScalableNodeGroup
- type AzureConfig
- type AzureControlPlane
- type AzureCredentials
- type BareMetalConfig
- type BareMetalControlPlane
- type BareMetalControlPlaneEndpoint
- type BareMetalHost
- type BareMetalNodeGroup
- type BareMetalSSHConfig
- type CanonicalUbuntuImage
- type CloudConfig
- type ClusterConfig
- type DisasterRecoveryConfig
- type FileConfig
- type ForksConfig
- type GeneralConfig
- type GeneralConfigTemplateValues
- type GenerateSampleConfigArgs
- type GitConfig
- type GitCredentials
- type GitUsernameAndPassword
- type HCloudAutoScalableNodeGroup
- type HCloudControlPlane
- type HCloudControlPlaneLoadBalancer
- type HetznerBareMetalConfig
- type HetznerBareMetalControlPlane
- type HetznerBareMetalControlPlaneEndpoint
- type HetznerBareMetalHost
- type HetznerBareMetalNodeGroup
- type HetznerBareMetalSSHKeyPair
- type HetznerConfig
- type HetznerControlPlane
- type HetznerCredentials
- type HetznerHCloudConfig
- type HetznerNodeGroups
- type HetznerRobotCredentials
- type HostPathMountConfig
- type KubePrometheusConfig
- type LocalConfig
- type NodeGroup
- type ObmondoConfig
- type ReleaseDetails
- type SSHKeyPairConfig
- type SSHPrivateKeyConfig
- type SecretsConfig
- type UserConfig
- type WorkloadIdentity
Constants ¶
This section is empty.
Variables ¶
var ( GeneralConfigFileContents []byte ParsedGeneralConfig = &GeneralConfig{} ParsedSecretsConfig = &SecretsConfig{} )
var SampleConfigs embed.FS
Functions ¶
func ControlPlaneInHCloud ¶ added in v0.15.0
func ControlPlaneInHCloud() bool
func ControlPlaneInHetznerBareMetal ¶ added in v0.15.0
func ControlPlaneInHetznerBareMetal() bool
func GenerateSampleConfig ¶
func GenerateSampleConfig(ctx context.Context, args *GenerateSampleConfigArgs)
func GetGeneralConfigFilePath ¶ added in v0.14.0
func GetGeneralConfigFilePath() string
func GetSecretsConfigFilePath ¶ added in v0.14.0
func GetSecretsConfigFilePath() string
func MustGetHetznerProviderMode ¶ added in v0.15.0
func MustGetHetznerProviderMode() string
Returns the Hetzner provider mode being used. Panics, if the Hetzner provider isn't being used.
func UsingHCloud ¶ added in v0.15.0
func UsingHCloud() bool
func UsingHetznerBareMetal ¶ added in v0.15.0
func UsingHetznerBareMetal() bool
Types ¶
type AADApplication ¶
type AADApplication struct {
PrincipalID string `yaml:"principalID" validate:"notblank"`
}
Azure specific.
type APIServerConfig ¶
type APIServerConfig struct { ExtraArgs map[string]string `yaml:"extraArgs" default:"{}"` ExtraVolumes []HostPathMountConfig `yaml:"extraVolumes" default:"[]"` Files []FileConfig `yaml:"files" default:"[]"` }
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 the KubeAid Bootstrap Script not making any progress!
type AWSAutoScalableNodeGroup ¶ added in v0.12.0
type AWSAutoScalableNodeGroup struct { AutoScalableNodeGroup `yaml:",inline"` AMI AMIConfig `yaml:"ami" validate:"required"` InstanceType string `yaml:"instanceType" validate:"notblank"` RootVolumeSize uint32 `yaml:"rootVolumeSize" validate:"required"` SSHKeyName string `yaml:"sshKeyName" validate:"notblank"` }
AWS specific.
type AWSConfig ¶
type AWSConfig struct { Region string `yaml:"region" validate:"notblank"` SSHKeyName string `yaml:"sshKeyName" validate:"notblank"` VPCID *string `yaml:"vpcID"` BastionEnabled bool `yaml:"bastionEnabled" default:"True"` ControlPlane AWSControlPlane `yaml:"controlPlane" validate:"required"` NodeGroups []AWSAutoScalableNodeGroup `yaml:"nodeGroups"` }
AWS specific.
type AWSControlPlane ¶
type AWSControlPlane struct { LoadBalancerScheme string `yaml:"loadBalancerScheme" default:"internet-facing" validate:"notblank"` Replicas uint32 `yaml:"replicas" validate:"required"` InstanceType string `yaml:"instanceType" validate:"notblank"` AMI AMIConfig `yaml:"ami" validate:"required"` }
AWS specific.
type AWSCredentials ¶
type ArgoCDConfig ¶ added in v0.15.2
type AutoScalableNodeGroup ¶ added in v0.12.0
type AzureAutoScalableNodeGroup ¶ added in v0.12.0
type AzureAutoScalableNodeGroup struct { AutoScalableNodeGroup `yaml:",inline"` VMSize string `yaml:"vmSize" validate:"notblank"` DiskSizeGB uint32 `yaml:"diskSizeGB" validate:"required"` }
Azure specific.
type AzureConfig ¶
type AzureConfig struct { TenantID string `yaml:"tenantID" validate:"notblank"` SubscriptionID string `yaml:"subscriptionID" validate:"notblank"` AADApplication AADApplication `yaml:"aadApplication" validate:"required"` Location string `yaml:"location" validate:"notblank"` StorageAccount string `yaml:"storageAccount" validate:"notblank"` WorkloadIdentity WorkloadIdentity `yaml:"workloadIdentity" validate:"required"` SSHPublicKey string `yaml:"sshPublicKey" validate:"notblank"` CanonicalUbuntuImage CanonicalUbuntuImage `yaml:"canonicalUbuntuImage" validate:"required"` ControlPlane AzureControlPlane `yaml:"controlPlane" validate:"required"` NodeGroups []AzureAutoScalableNodeGroup `yaml:"nodeGroups"` }
Azure specific.
type AzureControlPlane ¶
type AzureControlPlane struct { LoadBalancerType string `yaml:"loadBalancerType" validate:"notblank" default:"Public"` DiskSizeGB uint32 `yaml:"diskSizeGB" validate:"required,gt=100"` VMSize string `yaml:"vmSize" validate:"notblank"` Replicas uint32 `yaml:"replicas" validate:"required,gt=0"` }
Azure specific.
type AzureCredentials ¶ added in v0.7.2
type BareMetalConfig ¶ added in v0.12.0
type BareMetalConfig struct { SSH BareMetalSSHConfig `yaml:"ssh"` ControlPlane BareMetalControlPlane `yaml:"controlPlane" validate:"required"` NodeGroups []BareMetalNodeGroup `yaml:"nodeGroups"` }
type BareMetalControlPlane ¶ added in v0.12.0
type BareMetalControlPlane struct { Endpoint BareMetalControlPlaneEndpoint `yaml:"endpoint" validate:"required"` Hosts []*BareMetalHost `yaml:"hosts" validate:"required"` }
type BareMetalControlPlaneEndpoint ¶ added in v0.12.0
type BareMetalHost ¶ added in v0.12.0
type BareMetalHost struct { PublicAddress *string `yaml:"publicAddress" validate:"notblank"` PrivateAddress *string `yaml:"privateAddress" validate:"notblank"` SSH *BareMetalSSHConfig `yaml:"ssh"` }
type BareMetalNodeGroup ¶ added in v0.12.0
type BareMetalNodeGroup struct { NodeGroup `yaml:",inline"` Hosts []*BareMetalHost `yaml:"hosts" validate:"required"` }
type BareMetalSSHConfig ¶ added in v0.12.0
type BareMetalSSHConfig struct { Port uint `yaml:"port" validate:"required" default:"22"` PrivateKey *SSHPrivateKeyConfig `yaml:"privateKey"` }
type CanonicalUbuntuImage ¶ added in v0.12.2
type CanonicalUbuntuImage struct { Offer string `yaml:"offer" validate:"notblank"` SKU string `yaml:"sku" validate:"notblank"` }
Azure specific.
type CloudConfig ¶
type CloudConfig struct { AWS *AWSConfig `yaml:"aws"` Azure *AzureConfig `yaml:"azure"` Hetzner *HetznerConfig `yaml:"hetzner"` BareMetal *BareMetalConfig `yaml:"bare-metal"` Local *LocalConfig `yaml:"local"` DisasterRecovery *DisasterRecoveryConfig `yaml:"disasterRecovery"` }
type ClusterConfig ¶
type ClusterConfig struct { Name string `yaml:"name" validate:"notblank"` K8sVersion string `yaml:"k8sVersion" validate:"notblank"` KubeaidVersion string `yaml:"kubeaidVersion" validate:"notblank"` EnableAuditLogging bool `yaml:"enableAuditLogging" default:"True"` APIServer APIServerConfig `yaml:"apiServer"` AdditionalUsers []UserConfig `yaml:"additionalUsers"` }
type DisasterRecoveryConfig ¶ added in v0.9.0
type FileConfig ¶
type FileConfig struct { Path string `yaml:"path" validate:"notblank"` Content string `yaml:"content" validate:"notblank"` }
REFER : "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1".File
type ForksConfig ¶
type GeneralConfig ¶ added in v0.7.2
type GeneralConfig struct { Git GitConfig `yaml:"git"` Cluster ClusterConfig `yaml:"cluster" validate:"required"` Forks ForksConfig `yaml:"forkURLs" validate:"required"` Cloud CloudConfig `yaml:"cloud" validate:"required"` KubePrometheus KubePrometheusConfig `yaml:"kubePrometheus"` Obmondo *ObmondoConfig `yaml:"obmondo"` ArgoCDConfig ArgoCDConfig `yaml:"argocd"` }
type GeneralConfigTemplateValues ¶ added in v0.13.0
type GeneralConfigTemplateValues struct {
KubeAidVersion string
}
type GenerateSampleConfigArgs ¶ added in v0.12.0
type GitCredentials ¶ added in v0.7.2
type GitCredentials struct {
*GitUsernameAndPassword `yaml:",inline"`
}
type GitUsernameAndPassword ¶ added in v0.12.0
type HCloudAutoScalableNodeGroup ¶ added in v0.12.0
type HCloudAutoScalableNodeGroup struct { AutoScalableNodeGroup `yaml:",inline"` MachineType string `yaml:"machineType" validate:"notblank"` RootVolumeSize uint32 ` validate:"required"` }
Hetzner specific.
type HCloudControlPlane ¶
type HCloudControlPlane struct { MachineType string `yaml:"machineType" validate:"notblank"` Replicas uint `yaml:"replicas" validate:"notblank"` LoadBalancer HCloudControlPlaneLoadBalancer `yaml:"loadBalancer" validate:"required"` }
Hetzner specific.
type HCloudControlPlaneLoadBalancer ¶ added in v0.11.0
type HCloudControlPlaneLoadBalancer struct { Enabled bool `yaml:"enabled" validate:"required"` Region string `yaml:"region" validate:"notblank"` }
Hetzner specific.
type HetznerBareMetalConfig ¶ added in v0.12.0
type HetznerBareMetalConfig struct { WipeDisks bool `yaml:"wipeDisks" default:"false"` ImagePath string `yaml:"imagePath" default:"/root/.oldroot/nfs/images/Ubuntu-2404-noble-amd64-base.tar.gz" validate:"notblank"` SSHKeyPair HetznerBareMetalSSHKeyPair `yaml:"sshKeyPair" validate:"required"` }
Hetzner specific.
type HetznerBareMetalControlPlane ¶
type HetznerBareMetalControlPlane struct { Endpoint HetznerBareMetalControlPlaneEndpoint `yaml:"endpoint" validate:"required"` BareMetalHosts []HetznerBareMetalHost `yaml:"bareMetalHosts" validate:"required,gt=0"` }
Hetzner specific.
type HetznerBareMetalControlPlaneEndpoint ¶ added in v0.12.0
type HetznerBareMetalControlPlaneEndpoint struct { IsFailoverIP bool `yaml:"isFailoverIP" validate:"required"` Host string `yaml:"host" validate:"ip"` }
Hetzner specific.
type HetznerBareMetalHost ¶ added in v0.12.0
type HetznerBareMetalHost struct { ServerID string `yaml:"serverID" validate:"notblank"` WWNs []string `yaml:"wwns" validate:"required,gt=0"` }
Hetzner specific.
type HetznerBareMetalNodeGroup ¶
type HetznerBareMetalNodeGroup struct { NodeGroup `yaml:",inline"` BareMetalHosts []HetznerBareMetalHost `yaml:"bareMetalHosts" validate:"required,gt=0"` }
Hetzner specific.
type HetznerBareMetalSSHKeyPair ¶ added in v0.12.0
type HetznerBareMetalSSHKeyPair struct { Name string `yaml:"name" validate:"notblank"` SSHKeyPairConfig ` yaml:",inline"` }
Hetzner specific.
type HetznerConfig ¶
type HetznerConfig struct { Mode string `yaml:"mode" default:"hcloud" validate:"notblank,oneof=bare-metal hcloud hybrid"` HCloud *HetznerHCloudConfig `yaml:"hcloud"` BareMetal *HetznerBareMetalConfig `yaml:"bareMetal"` ControlPlane HetznerControlPlane `yaml:"controlPlane" validate:"required"` NodeGroups HetznerNodeGroups `yaml:"nodeGroups"` }
Hetzner specific.
type HetznerControlPlane ¶ added in v0.11.0
type HetznerControlPlane struct { HCloud *HCloudControlPlane `yaml:"hcloud"` BareMetal *HetznerBareMetalControlPlane `yaml:"bareMetal"` Regions []string `yaml:"regions" validate:"required"` }
Hetzner specific.
type HetznerCredentials ¶
type HetznerCredentials struct { APIToken string `yaml:"apiToken" validate:"notblank"` Robot *HetznerRobotCredentials `yaml:"robot"` }
type HetznerHCloudConfig ¶ added in v0.12.0
type HetznerHCloudConfig struct { Zone string `yaml:"zone" validate:"notblank"` ImageName string `yaml:"imageName" validate:"notblank" default:"ubuntu-24.04"` SSHKeyPairName string `yaml:"sshKeyPairName" validate:"notblank"` }
Hetzner specific.
type HetznerNodeGroups ¶ added in v0.11.0
type HetznerNodeGroups struct { HCloud []HCloudAutoScalableNodeGroup `yaml:"hcloud"` BareMetal []HetznerBareMetalNodeGroup `yaml:"bareMetal"` }
Hetzner specific.
type HetznerRobotCredentials ¶ added in v0.12.0
type HostPathMountConfig ¶
type HostPathMountConfig struct { Name string `yaml:"name" validate:"notblank"` HostPath string `yaml:"hostPath" validate:"notblank"` MountPath string `yaml:"mountPath" validate:"notblank"` PathType coreV1.HostPathType `yaml:"pathType" validate:"required"` /* Whether the mount should be read-only or not. Defaults to true. NOTE : If you want the mount to be read-only, then set this true. Otherwise, omit setting this field. It gets removed by the Kubeadm control-plane provider component, which results to the capi-cluster ArgoCD App always being in OutOfSync state. */ ReadOnly bool `yaml:"readOnly,omitempty"` }
REFER : "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1".HostPathMount
type KubePrometheusConfig ¶ added in v0.12.0
type ObmondoConfig ¶ added in v0.12.0
type ReleaseDetails ¶ added in v0.14.0
type ReleaseDetails struct {
TagName string `json:"tag_name"`
}
type SSHKeyPairConfig ¶
type SSHKeyPairConfig struct { SSHPrivateKeyConfig `yaml:",inline"` PublicKeyFilePath string `yaml:"publicKeyFilePath" validate:"notblank"` PublicKey string ` validate:"notblank"` }
type SSHPrivateKeyConfig ¶ added in v0.12.0
type SecretsConfig ¶ added in v0.7.2
type SecretsConfig struct { Git GitCredentials `yaml:"git"` AWS *AWSCredentials `yaml:"aws"` Azure *AzureCredentials `yaml:"azure"` Hetzner *HetznerCredentials `yaml:"hetzner"` }
type UserConfig ¶
type WorkloadIdentity ¶
type WorkloadIdentity struct {
OpenIDProviderSSHKeyPair SSHKeyPairConfig `yaml:"openIDProviderSSHKeyPair" validate:"notblank"`
}
Azure specific.