Documentation
¶
Overview ¶
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.azure.com
Index ¶
- Constants
- Variables
- type AKSNodeClass
- func (in *AKSNodeClass) DeepCopy() *AKSNodeClass
- func (in *AKSNodeClass) DeepCopyInto(out *AKSNodeClass)
- func (in *AKSNodeClass) DeepCopyObject() runtime.Object
- func (in *AKSNodeClass) GetConditions() []status.Condition
- func (in *AKSNodeClass) GetEncryptionAtHost() bool
- func (in *AKSNodeClass) GetImages() ([]NodeImage, error)
- func (in *AKSNodeClass) GetKubernetesVersion() (string, error)
- func (in *AKSNodeClass) Hash() string
- func (in *AKSNodeClass) IsLocalDNSEnabled() bool
- func (in *AKSNodeClass) SetConditions(conditions []status.Condition)
- func (in *AKSNodeClass) StatusConditions() status.ConditionSet
- type AKSNodeClassList
- type AKSNodeClassSpec
- type AKSNodeClassStatus
- type FIPSMode
- type KubeletConfiguration
- type LocalDNS
- type LocalDNSForwardDestination
- type LocalDNSForwardPolicy
- type LocalDNSMode
- type LocalDNSOverrides
- type LocalDNSProtocol
- type LocalDNSQueryLogging
- type LocalDNSServeStale
- type LocalDNSZoneOverride
- type NodeImage
- type Security
Constants ¶
const ( ConditionTypeImagesReady = "ImagesReady" ConditionTypeKubernetesVersionReady = "KubernetesVersionReady" ConditionTypeSubnetsReady = "SubnetsReady" )
const ( UbuntuImageFamily = "Ubuntu" Ubuntu2204ImageFamily = "Ubuntu2204" Ubuntu2404ImageFamily = "Ubuntu2404" AzureLinuxImageFamily = "AzureLinux" )
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
const Group = "karpenter.azure.com"
Variables ¶
var ( FIPSModeFIPS = FIPSMode("FIPS") FIPSModeDisabled = FIPSMode("Disabled") )
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 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
func (in *KubeletConfiguration) DeepCopy() *KubeletConfiguration
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalDNS.
func (*LocalDNS) DeepCopyInto ¶ added in v1.6.7
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
func (in *LocalDNSZoneOverride) DeepCopy() *LocalDNSZoneOverride
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeImage.
func (*NodeImage) DeepCopyInto ¶ added in v1.4.0
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
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Security.
func (*Security) DeepCopyInto ¶ added in v1.6.5
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.