v1alpha2

package
v1.6.8 Latest Latest
Warning

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

Go to latest
Published: Jan 6, 2026 License: Apache-2.0, Apache-2.0 Imports: 13 Imported by: 3

Documentation

Overview

+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.azure.com

Index

Constants

View Source
const (
	ConditionTypeImagesReady            = "ImagesReady"
	ConditionTypeKubernetesVersionReady = "KubernetesVersionReady"
	ConditionTypeSubnetsReady           = "SubnetsReady"
)
View Source
const (
	UbuntuImageFamily     = "Ubuntu"
	Ubuntu2204ImageFamily = "Ubuntu2204"
	Ubuntu2404ImageFamily = "Ubuntu2404"
	AzureLinuxImageFamily = "AzureLinux"
)
View Source
const AKSNodeClassHashVersion = "v3"

We need to bump the AKSNodeClassHashVersion when we make an update to the AKSNodeClass CRD under these conditions: 1. A field changes its default value for an existing field that is already hashed 2. A field is added to the hash calculation with an already-set value 3. A field is removed from the hash calculations

View Source
const Group = "karpenter.azure.com"

Variables

View Source
var (
	FIPSModeFIPS     = FIPSMode("FIPS")
	FIPSModeDisabled = FIPSMode("Disabled")
)
View Source
var (
	SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: "v1alpha2"}
	SchemeBuilder      = runtime.NewSchemeBuilder(func(scheme *runtime.Scheme) error {
		scheme.AddKnownTypes(SchemeGroupVersion,
			&AKSNodeClass{},
			&AKSNodeClassList{},
		)
		metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
		return nil
	})
)

Functions

This section is empty.

Types

type AKSNodeClass

type AKSNodeClass struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AKSNodeClassSpec   `json:"spec,omitempty"`
	Status AKSNodeClassStatus `json:"status,omitempty"`
}

AKSNodeClass is the Schema for the AKSNodeClass API +kubebuilder:object:root=true +kubebuilder:resource:path=aksnodeclasses,scope=Cluster,categories={karpenter,nap},shortName={aksnc,aksncs} +kubebuilder:printcolumn:name="Ready",type=string,JSONPath=".status.conditions[?(@.type=='Ready')].status" +kubebuilder:printcolumn:name="Age",type=date,JSONPath=".metadata.creationTimestamp" +kubebuilder:printcolumn:name="ImageFamily",type=string,JSONPath=".spec.imageFamily",priority=1 +kubebuilder:subresource:status +kubebuilder:deprecatedversion:warning="use v1beta1.AKSNodeClass instead"

func (*AKSNodeClass) DeepCopy

func (in *AKSNodeClass) DeepCopy() *AKSNodeClass

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AKSNodeClass.

func (*AKSNodeClass) DeepCopyInto

func (in *AKSNodeClass) DeepCopyInto(out *AKSNodeClass)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AKSNodeClass) DeepCopyObject

func (in *AKSNodeClass) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*AKSNodeClass) GetConditions added in v0.7.0

func (in *AKSNodeClass) GetConditions() []status.Condition

func (*AKSNodeClass) GetEncryptionAtHost added in v1.6.5

func (in *AKSNodeClass) GetEncryptionAtHost() bool

GetEncryptionAtHost returns whether encryption at host is enabled for the node class. Returns false if Security or EncryptionAtHost is nil.

func (*AKSNodeClass) GetImages added in v1.4.0

func (in *AKSNodeClass) GetImages() ([]NodeImage, error)

GetImages returns the Status.Images if its up to date and valid to use, otherwise returns an error.

func (*AKSNodeClass) GetKubernetesVersion added in v1.4.0

func (in *AKSNodeClass) GetKubernetesVersion() (string, error)

GetKubernetesVersion returns the Status.KubernetesVersion if its up to date and valid to use, otherwise returns an error.

func (*AKSNodeClass) Hash

func (in *AKSNodeClass) Hash() string

func (*AKSNodeClass) IsLocalDNSEnabled added in v1.6.7

func (in *AKSNodeClass) IsLocalDNSEnabled() bool

IsLocalDNSEnabled returns whether LocalDNS should be enabled for this node class. Returns true for Required mode, false for Disabled mode, and for Preferred mode, returns true only if the Kubernetes version is >= 1.36.

func (*AKSNodeClass) SetConditions added in v0.7.0

func (in *AKSNodeClass) SetConditions(conditions []status.Condition)

func (*AKSNodeClass) StatusConditions added in v0.7.0

func (in *AKSNodeClass) StatusConditions() status.ConditionSet

type AKSNodeClassList

type AKSNodeClassList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []AKSNodeClass `json:"items"`
}

AKSNodeClassList contains a list of AKSNodeClass +kubebuilder:object:root=true

func (*AKSNodeClassList) DeepCopy

func (in *AKSNodeClassList) DeepCopy() *AKSNodeClassList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AKSNodeClassList.

func (*AKSNodeClassList) DeepCopyInto

func (in *AKSNodeClassList) DeepCopyInto(out *AKSNodeClassList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AKSNodeClassList) DeepCopyObject

func (in *AKSNodeClassList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AKSNodeClassSpec

type AKSNodeClassSpec struct {
	// VNETSubnetID is the subnet used by nics provisioned with this nodeclass.
	// If not specified, we will use the default --vnet-subnet-id specified in karpenter's options config
	// +kubebuilder:validation:Pattern=`(?i)^\/subscriptions\/[^\/]+\/resourceGroups\/[a-zA-Z0-9_\-().]{0,89}[a-zA-Z0-9_\-()]\/providers\/Microsoft\.Network\/virtualNetworks\/[^\/]+\/subnets\/[^\/]+$`
	// +optional
	VNETSubnetID *string `json:"vnetSubnetID,omitempty"`
	// +kubebuilder:default=128
	// +kubebuilder:validation:Minimum=30
	// +kubebuilder:validation:Maximum=2048
	// osDiskSizeGB is the size of the OS disk in GB.
	OSDiskSizeGB *int32 `json:"osDiskSizeGB,omitempty"`
	// ImageID is the ID of the image that instances use.
	// Not exposed in the API yet
	ImageID *string `json:"-"`
	// ImageFamily is the image family that instances use.
	// +kubebuilder:default=Ubuntu
	// +kubebuilder:validation:Enum:={Ubuntu,Ubuntu2204,Ubuntu2404,AzureLinux}
	ImageFamily *string `json:"imageFamily,omitempty"`
	// FIPSMode controls FIPS compliance for the provisioned nodes
	// +kubebuilder:validation:Enum:={FIPS,Disabled}
	// +optional
	FIPSMode *FIPSMode `json:"fipsMode,omitempty"`
	// Tags to be applied on Azure resources like instances.
	// +kubebuilder:validation:XValidation:message="tags keys must be less than 512 characters",rule="self.all(k, size(k) <= 512)"
	// +kubebuilder:validation:XValidation:message="tags keys must not contain '<', '>', '%', '&', or '?'",rule="self.all(k, !k.matches('[<>%&?]'))"
	// +kubebuilder:validation:XValidation:message="tags keys must not contain '\\'",rule="self.all(k, !k.contains('\\\\'))"
	// +kubebuilder:validation:XValidation:message="tags values must be less than 256 characters",rule="self.all(k, size(self[k]) <= 256)"
	// +optional
	Tags map[string]string `json:"tags,omitempty" hash:"ignore"`
	// Kubelet defines args to be used when configuring kubelet on provisioned nodes.
	// They are a subset of the upstream types, recognizing not all options may be supported.
	// Wherever possible, the types and names should reflect the upstream kubelet types.
	// +kubebuilder:validation:XValidation:message="imageGCHighThresholdPercent must be greater than imageGCLowThresholdPercent",rule="has(self.imageGCHighThresholdPercent) && has(self.imageGCLowThresholdPercent) ?  self.imageGCHighThresholdPercent > self.imageGCLowThresholdPercent  : true"
	// +optional
	Kubelet *KubeletConfiguration `json:"kubelet,omitempty"`
	// MaxPods is an override for the maximum number of pods that can run on a worker node instance.
	// See minimum + maximum pods per node documentation: https://learn.microsoft.com/en-us/azure/aks/concepts-network-ip-address-planning#maximum-pods-per-node
	// Default behavior if this is not specified depends on the network plugin:
	//   - If Network Plugin is Azure with "" (v1 or NodeSubnet), the default is 30.
	//   - If Network Plugin is Azure with "overlay", the default is 250.
	//   - If Network Plugin is None, the default is 250.
	//   - Otherwise, the default is 110 (the usual Kubernetes default).
	//
	// +kubebuilder:validation:Minimum:=10
	// +kubebuilder:validation:Maximum:=250
	// +optional
	MaxPods *int32 `json:"maxPods,omitempty"`

	// Collection of security related karpenter fields
	Security *Security `json:"security,omitempty"`
	// LocalDNS configures the per-node local DNS, with VnetDNS and KubeDNS overrides.
	// LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster.
	// For more details see aka.ms/aks/localdns.
	// +optional
	LocalDNS *LocalDNS `json:"localDNS,omitempty"`
}

AKSNodeClassSpec is the top level specification for the AKS Karpenter Provider. This will contain configuration necessary to launch instances in AKS. +kubebuilder:validation:XValidation:message="FIPS is not yet supported for Ubuntu2204 or Ubuntu2404",rule="has(self.fipsMode) && self.fipsMode == 'FIPS' ? (has(self.imageFamily) && self.imageFamily != 'Ubuntu2204' && self.imageFamily != 'Ubuntu2404') : true"

func (*AKSNodeClassSpec) DeepCopy

func (in *AKSNodeClassSpec) DeepCopy() *AKSNodeClassSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AKSNodeClassSpec.

func (*AKSNodeClassSpec) DeepCopyInto

func (in *AKSNodeClassSpec) DeepCopyInto(out *AKSNodeClassSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AKSNodeClassStatus

type AKSNodeClassStatus struct {
	// Images contains the current set of images available to use
	// for the NodeClass
	// +optional
	Images []NodeImage `json:"images,omitempty"`
	// KubernetesVersion contains the current kubernetes version which should be
	// used for nodes provisioned for the NodeClass
	// +optional
	KubernetesVersion string `json:"kubernetesVersion,omitempty"`
	// Conditions contains signals for health and readiness
	// +optional
	Conditions []status.Condition `json:"conditions,omitempty"`
}

AKSNodeClassStatus contains the resolved state of the AKSNodeClass

func (*AKSNodeClassStatus) DeepCopy

func (in *AKSNodeClassStatus) DeepCopy() *AKSNodeClassStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AKSNodeClassStatus.

func (*AKSNodeClassStatus) DeepCopyInto

func (in *AKSNodeClassStatus) DeepCopyInto(out *AKSNodeClassStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FIPSMode added in v1.6.2

type FIPSMode string

type KubeletConfiguration added in v0.7.0

type KubeletConfiguration struct {
	// cpuManagerPolicy is the name of the policy to use.
	// +kubebuilder:validation:Enum:={none,static}
	// +kubebuilder:default="none"
	// +optional
	CPUManagerPolicy string `json:"cpuManagerPolicy,omitempty"`
	// CPUCFSQuota enables CPU CFS quota enforcement for containers that specify CPU limits.
	// Note: AKS CustomKubeletConfig uses cpuCfsQuota (camelCase)
	// +kubebuilder:default=true
	// +optional
	CPUCFSQuota *bool `json:"cpuCFSQuota,omitempty"`
	// cpuCfsQuotaPeriod sets the CPU CFS quota period value, `cpu.cfs_period_us`.
	// The value must be between 1 ms and 1 second, inclusive.
	// Default: "100ms"
	// +optional
	// +kubebuilder:default="100ms"
	// TODO: validation
	CPUCFSQuotaPeriod metav1.Duration `json:"cpuCFSQuotaPeriod,omitempty"`
	// ImageGCHighThresholdPercent is the percent of disk usage after which image
	// garbage collection is always run. The percent is calculated by dividing this
	// field value by 100, so this field must be between 0 and 100, inclusive.
	// When specified, the value must be greater than ImageGCLowThresholdPercent.
	// Note: AKS CustomKubeletConfig does not have "Percent" in the field name
	// +kubebuilder:validation:Minimum:=0
	// +kubebuilder:validation:Maximum:=100
	// +optional
	ImageGCHighThresholdPercent *int32 `json:"imageGCHighThresholdPercent,omitempty"`
	// ImageGCLowThresholdPercent is the percent of disk usage before which image
	// garbage collection is never run. Lowest disk usage to garbage collect to.
	// The percent is calculated by dividing this field value by 100,
	// so the field value must be between 0 and 100, inclusive.
	// When specified, the value must be less than imageGCHighThresholdPercent
	// Note: AKS CustomKubeletConfig does not have "Percent" in the field name
	// +kubebuilder:validation:Minimum:=0
	// +kubebuilder:validation:Maximum:=100
	// +optional
	ImageGCLowThresholdPercent *int32 `json:"imageGCLowThresholdPercent,omitempty"`
	// topologyManagerPolicy is the name of the topology manager policy to use.
	// Valid values include:
	//
	// - `restricted`: kubelet only allows pods with optimal NUMA node alignment for requested resources;
	// - `best-effort`: kubelet will favor pods with NUMA alignment of CPU and device resources;
	// - `none`: kubelet has no knowledge of NUMA alignment of a pod's CPU and device resources.
	// - `single-numa-node`: kubelet only allows pods with a single NUMA alignment
	//   of CPU and device resources.
	//
	// +kubebuilder:validation:Enum:={restricted,best-effort,none,single-numa-node}
	// +kubebuilder:default="none"
	// +optional
	TopologyManagerPolicy string `json:"topologyManagerPolicy,omitempty"`
	// A comma separated whitelist of unsafe sysctls or sysctl patterns (ending in `*`).
	// Unsafe sysctl groups are `kernel.shm*`, `kernel.msg*`, `kernel.sem`, `fs.mqueue.*`,
	// and `net.*`. For example: "`kernel.msg*,net.ipv4.route.min_pmtu`"
	// Default: []
	// TODO: validation
	// +optional
	AllowedUnsafeSysctls []string `json:"allowedUnsafeSysctls,omitempty"`
	// containerLogMaxSize is a quantity defining the maximum size of the container log
	// file before it is rotated. For example: "5Mi" or "256Ki".
	// Default: "10Mi"
	// AKS CustomKubeletConfig has containerLogMaxSizeMB (with units), defaults to 50
	// +kubebuilder:validation:Pattern=`^\d+(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$`
	// +kubebuilder:default="50Mi"
	// +optional
	ContainerLogMaxSize string `json:"containerLogMaxSize,omitempty"`
	// containerLogMaxFiles specifies the maximum number of container log files that can be present for a container.
	// Default: 5
	// +kubebuilder:validation:Minimum:=2
	// +kubebuilder:default=5
	// +optional
	ContainerLogMaxFiles *int32 `json:"containerLogMaxFiles,omitempty"`
	// podPidsLimit is the maximum number of PIDs in any pod.
	// AKS CustomKubeletConfig uses PodMaxPids, int32 (!)
	// Default: -1
	// +optional
	PodPidsLimit *int64 `json:"podPidsLimit,omitempty"`
}

KubeletConfiguration defines args to be used when configuring kubelet on provisioned nodes. They are a subset of the upstream types, recognizing not all options may be supported. Wherever possible, the types and names should reflect the upstream kubelet types. https://pkg.go.dev/k8s.io/kubelet/config/v1beta1#KubeletConfiguration https://github.com/kubernetes/kubernetes/blob/9f82d81e55cafdedab619ea25cabf5d42736dacf/cmd/kubelet/app/options/options.go#L53

AKS CustomKubeletConfig w/o CPUReserved,MemoryReserved,SeccompDefault https://learn.microsoft.com/en-us/azure/aks/custom-node-configuration?tabs=linux-node-pools

func (*KubeletConfiguration) DeepCopy added in v0.7.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeletConfiguration.

func (*KubeletConfiguration) DeepCopyInto added in v0.7.0

func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalDNS added in v1.6.7

type LocalDNS struct {
	// Mode of enablement for localDNS.
	// +required
	Mode LocalDNSMode `json:"mode,omitempty"`
	// VnetDNS overrides apply to DNS traffic from pods with dnsPolicy:default or kubelet (referred to as VnetDNS traffic).
	// +required
	// +listType=map
	// +listMapKey=zone
	// +kubebuilder:validation:XValidation:message="must contain required zones '.' and 'cluster.local'",rule="['.', 'cluster.local'].all(z, self.exists(x, x.zone == z))"
	// +kubebuilder:validation:XValidation:message="root zone '.' cannot be forwarded to ClusterCoreDNS from vnetDNSOverrides",rule="!self.exists(x, x.zone == '.' && x.forwardDestination == 'ClusterCoreDNS')"
	// +kubebuilder:validation:XValidation:message="external domains cannot be forwarded to ClusterCoreDNS from vnetDNSOverrides",rule="!self.exists(x, x.zone != '.' && !x.zone.endsWith('cluster.local') && x.forwardDestination == 'ClusterCoreDNS')"
	// +kubebuilder:validation:MaxItems=100
	VnetDNSOverrides []LocalDNSZoneOverride `json:"vnetDNSOverrides,omitempty"`
	// KubeDNS overrides apply to DNS traffic from pods with dnsPolicy:ClusterFirst (referred to as KubeDNS traffic).
	// +required
	// +listType=map
	// +listMapKey=zone
	// +kubebuilder:validation:XValidation:message="must contain required zones '.' and 'cluster.local'",rule="['.', 'cluster.local'].all(z, self.exists(x, x.zone == z))"
	// +kubebuilder:validation:MaxItems=100
	KubeDNSOverrides []LocalDNSZoneOverride `json:"kubeDNSOverrides,omitempty"`
}

LocalDNS configures the per-node local DNS, with VnetDNS and KubeDNS overrides. LocalDNS helps improve performance and reliability of DNS resolution in an AKS cluster. For more details see aka.ms/aks/localdns.

func (*LocalDNS) DeepCopy added in v1.6.7

func (in *LocalDNS) DeepCopy() *LocalDNS

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalDNS.

func (*LocalDNS) DeepCopyInto added in v1.6.7

func (in *LocalDNS) DeepCopyInto(out *LocalDNS)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalDNSForwardDestination added in v1.6.7

type LocalDNSForwardDestination string

+kubebuilder:validation:Enum:={ClusterCoreDNS,VnetDNS}

const (
	// Forward DNS queries from localDNS to cluster CoreDNS.
	LocalDNSForwardDestinationClusterCoreDNS LocalDNSForwardDestination = "ClusterCoreDNS"
	// Forward DNS queries from localDNS to DNS server configured in the VNET. A VNET can have multiple DNS servers configured.
	LocalDNSForwardDestinationVnetDNS LocalDNSForwardDestination = "VnetDNS"
)

type LocalDNSForwardPolicy added in v1.6.7

type LocalDNSForwardPolicy string

+kubebuilder:validation:Enum:={Sequential,RoundRobin,Random}

const (
	// Implements sequential upstream DNS server selection. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	LocalDNSForwardPolicySequential LocalDNSForwardPolicy = "Sequential"
	// Implements round robin upstream DNS server selection. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	LocalDNSForwardPolicyRoundRobin LocalDNSForwardPolicy = "RoundRobin"
	// Implements random upstream DNS server selection. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	LocalDNSForwardPolicyRandom LocalDNSForwardPolicy = "Random"
)

type LocalDNSMode added in v1.6.7

type LocalDNSMode string

+kubebuilder:validation:Enum:={Preferred,Required,Disabled}

const (
	// If the current orchestrator version supports this feature, prefer enabling localDNS.
	LocalDNSModePreferred LocalDNSMode = "Preferred"
	// Enable localDNS.
	LocalDNSModeRequired LocalDNSMode = "Required"
	// Disable localDNS.
	LocalDNSModeDisabled LocalDNSMode = "Disabled"
)

type LocalDNSOverrides added in v1.6.7

type LocalDNSOverrides struct {
	// Log level for DNS queries in localDNS.
	// +required
	QueryLogging LocalDNSQueryLogging `json:"queryLogging,omitempty"`
	// Enforce TCP or prefer UDP protocol for connections from localDNS to upstream DNS server.
	// +required
	Protocol LocalDNSProtocol `json:"protocol,omitempty"`
	// Destination server for DNS queries to be forwarded from localDNS.
	// +required
	ForwardDestination LocalDNSForwardDestination `json:"forwardDestination,omitempty"`
	// Forward policy for selecting upstream DNS server. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	// +required
	ForwardPolicy LocalDNSForwardPolicy `json:"forwardPolicy,omitempty"`
	// Maximum number of concurrent queries. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	// +kubebuilder:validation:Minimum=0
	// +required
	MaxConcurrent *int32 `json:"maxConcurrent,omitempty"`
	// Cache max TTL. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +kubebuilder:validation:Pattern=`^([0-9]+(s|m|h))+$`
	// +kubebuilder:validation:Type="string"
	// +kubebuilder:validation:Schemaless
	// +required
	CacheDuration karpv1.NillableDuration `json:"cacheDuration"`
	// Serve stale duration. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +kubebuilder:validation:Pattern=`^([0-9]+(s|m|h))+$`
	// +kubebuilder:validation:Type="string"
	// +kubebuilder:validation:Schemaless
	// +required
	ServeStaleDuration karpv1.NillableDuration `json:"serveStaleDuration"`
	// Policy for serving stale data. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +required
	ServeStale LocalDNSServeStale `json:"serveStale,omitempty"`
}

LocalDNSOverrides specifies DNS override configuration Deprecated: Use LocalDNSZoneOverride instead

func (*LocalDNSOverrides) DeepCopy added in v1.6.7

func (in *LocalDNSOverrides) DeepCopy() *LocalDNSOverrides

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalDNSOverrides.

func (*LocalDNSOverrides) DeepCopyInto added in v1.6.7

func (in *LocalDNSOverrides) DeepCopyInto(out *LocalDNSOverrides)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalDNSProtocol added in v1.6.7

type LocalDNSProtocol string

+kubebuilder:validation:Enum:={PreferUDP,ForceTCP}

const (
	// Prefer UDP protocol for connections from localDNS to upstream DNS server.
	LocalDNSProtocolPreferUDP LocalDNSProtocol = "PreferUDP"
	// Enforce TCP protocol for connections from localDNS to upstream DNS server.
	LocalDNSProtocolForceTCP LocalDNSProtocol = "ForceTCP"
)

type LocalDNSQueryLogging added in v1.6.7

type LocalDNSQueryLogging string

+kubebuilder:validation:Enum:={Error,Log}

const (
	// Enables error logging in localDNS. See [errors plugin](https://coredns.io/plugins/errors) for more information.
	LocalDNSQueryLoggingError LocalDNSQueryLogging = "Error"
	// Enables query logging in localDNS. See [log plugin](https://coredns.io/plugins/log) for more information.
	LocalDNSQueryLoggingLog LocalDNSQueryLogging = "Log"
)

type LocalDNSServeStale added in v1.6.7

type LocalDNSServeStale string

+kubebuilder:validation:Enum:={Verify,Immediate,Disable}

const (
	// Serve stale data with verification. First verify that an entry is still unavailable from the source before sending the expired entry to the client. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	LocalDNSServeStaleVerify LocalDNSServeStale = "Verify"
	// Serve stale data immediately. Send the expired entry to the client before checking to see if the entry is available from the source. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	LocalDNSServeStaleImmediate LocalDNSServeStale = "Immediate"
	// Disable serving stale data.
	LocalDNSServeStaleDisable LocalDNSServeStale = "Disable"
)

type LocalDNSZoneOverride added in v1.6.7

type LocalDNSZoneOverride struct {
	// Zone is the DNS zone this override applies to (e.g., ".", "cluster.local").
	// +required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=254
	// +kubebuilder:validation:Pattern=`^(\.|[A-Za-z0-9]([A-Za-z0-9_-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9_-]{0,61}[A-Za-z0-9])?)*\.?)$`
	Zone string `json:"zone,omitempty"`
	// Log level for DNS queries in localDNS.
	// +required
	QueryLogging LocalDNSQueryLogging `json:"queryLogging,omitempty"`
	// Enforce TCP or prefer UDP protocol for connections from localDNS to upstream DNS server.
	// +required
	Protocol LocalDNSProtocol `json:"protocol,omitempty"`
	// Destination server for DNS queries to be forwarded from localDNS.
	// +required
	ForwardDestination LocalDNSForwardDestination `json:"forwardDestination,omitempty"`
	// Forward policy for selecting upstream DNS server. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	// +required
	ForwardPolicy LocalDNSForwardPolicy `json:"forwardPolicy,omitempty"`
	// Maximum number of concurrent queries. See [forward plugin](https://coredns.io/plugins/forward) for more information.
	// +kubebuilder:validation:Minimum=0
	// +required
	MaxConcurrent *int32 `json:"maxConcurrent,omitempty"`
	// Cache max TTL. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +kubebuilder:validation:Pattern=`^([0-9]+(s|m|h))+$`
	// +kubebuilder:validation:Type="string"
	// +kubebuilder:validation:Schemaless
	// +required
	CacheDuration karpv1.NillableDuration `json:"cacheDuration"`
	// Serve stale duration. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +kubebuilder:validation:Pattern=`^([0-9]+(s|m|h))+$`
	// +kubebuilder:validation:Type="string"
	// +kubebuilder:validation:Schemaless
	// +required
	ServeStaleDuration karpv1.NillableDuration `json:"serveStaleDuration"`
	// Policy for serving stale data. See [cache plugin](https://coredns.io/plugins/cache) for more information.
	// +required
	ServeStale LocalDNSServeStale `json:"serveStale,omitempty"`
}

LocalDNSZoneOverride specifies DNS override configuration for a specific zone +kubebuilder:validation:XValidation:message="'cluster.local' cannot be forwarded to VnetDNS",rule="!(self.zone.endsWith('cluster.local') && self.forwardDestination == 'VnetDNS')" +kubebuilder:validation:XValidation:message="serveStale Verify cannot be used with protocol ForceTCP",rule="!(self.serveStale == 'Verify' && self.protocol == 'ForceTCP')"

func (*LocalDNSZoneOverride) DeepCopy added in v1.6.7

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalDNSZoneOverride.

func (*LocalDNSZoneOverride) DeepCopyInto added in v1.6.7

func (in *LocalDNSZoneOverride) DeepCopyInto(out *LocalDNSZoneOverride)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NodeImage added in v1.4.0

type NodeImage struct {
	// The ID of the image. Examples:
	// - CIG: /CommunityGalleries/AKSUbuntu-38d80f77-467a-481f-a8d4-09b6d4220bd2/images/2204gen2containerd/versions/2022.10.03
	// - SIG: /subscriptions/10945678-1234-1234-1234-123456789012/resourceGroups/AKS-Ubuntu/providers/Microsoft.Compute/galleries/AKSUbuntu/images/2204gen2containerd/versions/2022.10.03
	// +required
	ID string `json:"id"`
	// Requirements of the image to be utilized on an instance type
	// +required
	Requirements []corev1.NodeSelectorRequirement `json:"requirements"`
}

NodeImage contains resolved image selector values utilized for node launch

func (*NodeImage) DeepCopy added in v1.4.0

func (in *NodeImage) DeepCopy() *NodeImage

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeImage.

func (*NodeImage) DeepCopyInto added in v1.4.0

func (in *NodeImage) DeepCopyInto(out *NodeImage)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Security added in v1.6.5

type Security struct {
	// EncryptionAtHost specifies whether host-level encryption is enabled for provisioned nodes.
	// For more information, see:
	// https://learn.microsoft.com/en-us/azure/aks/enable-host-encryption
	// https://learn.microsoft.com/en-us/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data
	// +optional
	EncryptionAtHost *bool `json:"encryptionAtHost,omitempty"`
}

TODO: Add link for the aka.ms/nap/aksnodeclass-enable-host-encryption docs

func (*Security) DeepCopy added in v1.6.5

func (in *Security) DeepCopy() *Security

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Security.

func (*Security) DeepCopyInto added in v1.6.5

func (in *Security) DeepCopyInto(out *Security)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

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