config

package
v0.20.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2026 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	GeneralConfigFileContents []byte

	ParsedGeneralConfig = &GeneralConfig{}
	ParsedSecretsConfig = &SecretsConfig{}
)

Functions

func ControlPlaneInHCloud added in v0.15.0

func ControlPlaneInHCloud() bool

Returns whether the control-plane is in HCloud.

func ControlPlaneInHetznerBareMetal added in v0.15.0

func ControlPlaneInHetznerBareMetal() bool

Returns whether the control-plane is in Hetzner Bare Metal.

func GetGeneralConfigFilePath added in v0.14.0

func GetGeneralConfigFilePath() string

func GetSecretsConfigFilePath added in v0.14.0

func GetSecretsConfigFilePath() string

func UsingHCloud added in v0.15.0

func UsingHCloud() bool

Returns whether we're using HCloud.

func UsingHetznerBareMetal added in v0.15.0

func UsingHetznerBareMetal() bool

Returns whether we're using Hetzner Bare Metal.

Types

type AADApplication

type AADApplication struct {
	PrincipalID string `yaml:"principalID" validate:"notblank"`
}

Azure specific.

type AMIConfig

type AMIConfig struct {
	ID string `yaml:"id" validate:"notblank"`
}

AWS specific.

type APIServerConfig

type APIServerConfig struct {
	ExtraArgs    map[string]string     `yaml:"extraArgs"    default:"{}"`
	ExtraVolumes []HostPathMountConfig `yaml:"extraVolumes" default:"[]"`
	Files        []FileConfig          `yaml:"files"        default:"[]"`
}

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!

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 AWSCredentials struct {
	AWSAccessKeyID     string `yaml:"accessKeyID"     validate:"notblank"`
	AWSSecretAccessKey string `yaml:"secretAccessKey" validate:"notblank"`
	AWSSessionToken    string `yaml:"sessionToken"`
}

type ArgoCDConfig added in v0.15.2

type ArgoCDConfig struct {
	DeployKeys DeployKeysConfig `yaml:"deployKeys" validate:"required"`
}

type AutoScalableNodeGroup added in v0.12.0

type AutoScalableNodeGroup struct {
	NodeGroup `yaml:",inline"`

	CPU    uint32 `validate:"required"`
	Memory uint32 `validate:"required"`

	// Minimum number of replicas in the nodegroup.
	MinSize uint `yaml:"minSize" validate:"required"`

	// Maximum number of replicas in the nodegroup.
	Maxsize uint `yaml:"maxSize" validate:"required"`
}

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 AzureCredentials struct {
	ClientID     string `yaml:"clientID"     validate:"notblank"`
	ClientSecret string `yaml:"clientSecret" validate:"notblank"`
}

type BareMetalConfig added in v0.12.0

type BareMetalConfig struct {
	SSH BareMetalSSHConfig `yaml:"ssh"`

	ControlPlane BareMetalControlPlane `yaml:"controlPlane" validate:"required"`
	NodeGroups   []BareMetalNodeGroup  `yaml:"nodeGroups"`
}

Bare Metal specific.

type BareMetalControlPlane added in v0.12.0

type BareMetalControlPlane struct {
	Endpoint BareMetalControlPlaneEndpoint `yaml:"endpoint" validate:"required"`
	Hosts    []*BareMetalHost              `yaml:"hosts"    validate:"required"`
}

Bare Metal specific.

type BareMetalControlPlaneEndpoint added in v0.12.0

type BareMetalControlPlaneEndpoint struct {
	Host string `yaml:"host" validate:"notblank"`
	Port uint   `yaml:"port" validate:"required" default:"6443"`
}

Bare Metal specific.

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"`
}

Bare Metal specific.

type BareMetalNodeGroup added in v0.12.0

type BareMetalNodeGroup struct {
	NodeGroup `yaml:",inline"`

	Hosts []*BareMetalHost `yaml:"hosts" validate:"required"`
}

Bare Metal specific.

type BareMetalSSHConfig added in v0.12.0

type BareMetalSSHConfig struct {
	Port       uint                 `yaml:"port"       validate:"required" default:"22"`
	PrivateKey *SSHPrivateKeyConfig `yaml:"privateKey"`
}

Bare Metal specific.

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 {
	Type string `yaml:"type" validate:"notblank,oneof=vpn workload" default:"workload"`

	// 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.
	Name string `yaml:"name" validate:"notblank"`

	// Kubernetes version (>= 1.30.0).
	K8sVersion string `yaml:"k8sVersion" validate:"notblank"`

	// 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.
	EnableAuditLogging bool `yaml:"enableAuditLogging" default:"True"`

	// Configuration options for the Kubernetes API server.
	APIServer APIServerConfig `yaml:"apiServer"`

	// 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.
	AdditionalUsers []UserConfig `yaml:"additionalUsers"`

	// ArgoCD specific details.
	ArgoCD ArgoCDConfig `yaml:"argoCD" validate:"required"`
}

type DeployKeysConfig added in v0.19.0

type DeployKeysConfig struct {
	KubeaidConfig SSHPrivateKeyConfig  `yaml:"kubeaidConfig" validate:"required"`
	Kubeaid       *SSHPrivateKeyConfig `yaml:"kubeaid"`
}

type DisasterRecoveryConfig added in v0.9.0

type DisasterRecoveryConfig struct {
	VeleroBackupsBucketName        string `yaml:"veleroBackupsBucketName"        validate:"notblank"`
	SealedSecretsBackupsBucketName string `yaml:"sealedSecretsBackupsBucketName" validate:"notblank"`
}

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 ForksConfig struct {
	// KubeAid repository specific details.
	KubeaidFork KubeAidForkConfig `yaml:"kubeaid" validate:"required"`

	// KubeAid Config repository specific details.
	KubeaidConfigFork KubeaidConfigForkConfig `yaml:"kubeaidConfig" validate:"required"`
}

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

type GeneralConfig added in v0.7.2

type GeneralConfig struct {
	// Git server specific details.
	Git GitConfig `yaml:"git"`

	// KubeAid and KubeAid Config repository specific details.
	// The KubeAid and KubeAid Config repositories must be hosted in the same Git server.
	Forks ForksConfig `yaml:"forkURLs" validate:"required"`

	// Kubernetes specific details.
	Cluster ClusterConfig `yaml:"cluster" validate:"required"`

	// Cloud provider specific details.
	Cloud CloudConfig `yaml:"cloud" validate:"required"`

	// Kube Prometheus installation specific details. Defaults to Latest
	// Fill this only if you want a specific version
	KubePrometheus KubePrometheusConfig `yaml:"kubePrometheus"`

	// Obmondo customer specific details.
	Obmondo *ObmondoConfig `yaml:"obmondo"`
}

Non secret configuration options.

type GitConfig

type GitConfig struct {
	CABundlePath string `yaml:"caBundlePath"`
	CABundle     []byte

	// SSH username.
	SSHUsername string `yaml:"sshUsername" validate:"notblank" default:"git"`

	// Either make KubeAid CLI use the given SSH private key.
	*SSHPrivateKeyConfig `yaml:",inline"`

	// Or, make KubeAid CLI use the SSH Agent.
	// So, you (the one who runs KubeAid CLI) can use your YubiKey.
	UseSSHAgent bool `yaml:"useSSHAgent"`

	// Additional SSH known host entries.
	// Merged with the bundled known hosts for
	// GitHub, GitLab, Bitbucket and Azure DevOps.
	KnownHosts []string `yaml:"knownHosts"`
}

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.

type HCloudAutoScalableNodeGroup added in v0.12.0

type HCloudAutoScalableNodeGroup struct {
	AutoScalableNodeGroup `yaml:",inline"`

	// HCloud machine type.
	// You can browse all available HCloud machine types here : https://hetzner.com/cloud.
	MachineType string `yaml:"machineType" validate:"notblank"`

	// The root volume size for each HCloud machine.
	RootVolumeSize uint32 `validate:"required"`
}

Details about (autoscalable) node-groups in HCloud.

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 HCloudVPNClusterConfig added in v0.20.0

type HCloudVPNClusterConfig struct {
	Name string `yaml:"name" validate:"notblank"`
}

Hetzner specific.

type HetznerBareMetalConfig added in v0.12.0

type HetznerBareMetalConfig struct {
	WipeDisks    bool                       `yaml:"wipeDisks"    default:"false"`
	InstallImage InstallImageConfig         `yaml:"installImage"`
	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"`

	// 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.
	ZFS ZFSConfig `yaml:"zfs" validate:"required"`

	StoragePlan storageplan.StoragePlan
}

Hetzner specific.

type HetznerBareMetalControlPlaneEndpoint added in v0.12.0

type HetznerBareMetalControlPlaneEndpoint struct {
	IsFailoverIP bool   `yaml:"isFailoverIP"`
	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
}

Hetzner specific.

type HetznerBareMetalNodeGroup

type HetznerBareMetalNodeGroup struct {
	NodeGroup `yaml:",inline"`

	BareMetalHosts []*HetznerBareMetalHost `yaml:"bareMetalHosts" validate:"required,gt=0"`

	// 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.
	ZFS ZFSConfig `yaml:"zfs" validate:"required"`

	StoragePlan storageplan.StoragePlan
}

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 {
	/*
		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.
	*/
	Mode string `yaml:"mode" default:"hcloud" validate:"notblank,oneof=bare-metal hcloud hybrid"`

	VSwitch *VSwitchConfig `yaml:"vswitch"`

	HCloud    *HetznerHCloudConfig    `yaml:"hcloud"`
	BareMetal *HetznerBareMetalConfig `yaml:"bareMetal"`

	ControlPlane HetznerControlPlane `yaml:"controlPlane" validate:"required"`

	// Details about node-groups in Hetzner.
	NodeGroups HetznerNodeGroups `yaml:"nodeGroups"`

	VPNCluster *HCloudVPNClusterConfig `yaml:"vpnCluster"`
}

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 {
	// Details about node-groups in HCloud.
	HCloud []HCloudAutoScalableNodeGroup `yaml:"hcloud"`

	// Details about node-groups in Hetzner Bare Metal.
	BareMetal []*HetznerBareMetalNodeGroup `yaml:"bareMetal"`
}

Details about node-groups in Hetzner.

type HetznerRobotCredentials added in v0.12.0

type HetznerRobotCredentials struct {
	User     string `yaml:"user"     validate:"notblank"`
	Password string `yaml:"password" validate:"notblank"`
}

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.
	ReadOnly bool `yaml:"readOnly" default:"true"`
}

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

type InstallImageConfig added in v0.17.0

type InstallImageConfig struct {
	ImagePath string    `yaml:"imagePath" default:"/root/.oldroot/nfs/images/Ubuntu-2404-noble-amd64-base.tar.gz" validate:"notblank"`
	VG0       VG0Config `yaml:"vg0"`
}

Hetzner specific.

type KubeAidForkConfig added in v0.17.0

type KubeAidForkConfig struct {
	// KubeAid repository SSH URL.
	URL       string `yaml:"url" validate:"required"`
	ParsedURL gogiturl.IGitURL

	// KubeAid tag.
	Version string `yaml:"version" validate:"notblank"`
}

KubeAid repository specific details.

type KubePrometheusConfig added in v0.12.0

type KubePrometheusConfig struct {
	Version    string `yaml:"version"`
	GrafanaURL string `yaml:"grafanaURL"`
}

type KubeaidConfigForkConfig added in v0.17.0

type KubeaidConfigForkConfig struct {
	// KubeAid Config repository SSH URL.
	URL       string `yaml:"url" validate:"required"`
	ParsedURL gogiturl.IGitURL

	// 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'.
	Directory string `yaml:"directory"`
}

KubeAid Config repository specific details.

type LocalConfig

type LocalConfig struct{}

Local specific.

type NodeGroup

type NodeGroup struct {
	// Nodegroup name.
	Name string `yaml:"name" validate:"notblank"`

	// 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.
	Labels map[string]string `yaml:"labels" default:"[]"`

	// Taints that you want to be propagated to each node in the nodegroup.
	Taints []*coreV1.Taint `yaml:"taints" default:"[]"`
}

type ObmondoConfig added in v0.12.0

type ObmondoConfig struct {
	CustomerID string `yaml:"customerID" validate:"notblank"`
	Monitoring bool   `yaml:"monitoring"`
}

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 SSHPrivateKeyConfig struct {
	PrivateKeyFilePath string `yaml:"privateKeyFilePath" validate:"notblank"`
	PrivateKey         string `                          validate:"notblank"`
}

type SecretsConfig added in v0.7.2

type SecretsConfig struct {
	AWS     *AWSCredentials     `yaml:"aws"`
	Azure   *AzureCredentials   `yaml:"azure"`
	Hetzner *HetznerCredentials `yaml:"hetzner"`
}

type UserConfig

type UserConfig struct {
	Name         string `yaml:"name"         validate:"required"`
	SSHPublicKey string `yaml:"sshPublicKey" validate:"required"`
}

type VG0Config added in v0.16.0

type VG0Config struct {
	Size           int `yaml:"size"           validate:"notblank" default:"80"`
	RootVolumeSize int `yaml:"rootVolumeSize" validate:"notblank" default:"50"`
}

Hetzner specific.

type VSwitchConfig added in v0.16.0

type VSwitchConfig struct {
	VLANID int    `yaml:"vlanID"`
	Name   string `yaml:"name"   validate:"notblank"`
}

Hetzner specific.

type WorkloadIdentity

type WorkloadIdentity struct {
	OpenIDProviderSSHKeyPair SSHKeyPairConfig `yaml:"openIDProviderSSHKeyPair" validate:"notblank"`
}

Azure specific.

type ZFSConfig added in v0.20.0

type ZFSConfig struct {
	// 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.
	Size int `yaml:"size" validate:"required,gt=200" default:"220"`
}

Hetzner specific.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL