Documentation ¶
Overview ¶
+k8s:openapi-gen=true +k8s:deepcopy-gen=package,register +k8s:defaulter-gen=TypeMeta +groupName=karpenter.k8s.aws
Index ¶
- Variables
- func MergeTags(ctx context.Context, custom ...map[string]string) (result []*ec2.Tag)
- type AWS
- type AWSNodeTemplate
- func (in *AWSNodeTemplate) DeepCopy() *AWSNodeTemplate
- func (in *AWSNodeTemplate) DeepCopyInto(out *AWSNodeTemplate)
- func (in *AWSNodeTemplate) DeepCopyObject() runtime.Object
- func (a *AWSNodeTemplate) SetDefaults(ctx context.Context)
- func (a *AWSNodeTemplate) SupportedVerbs() []admissionregistrationv1.OperationType
- func (a *AWSNodeTemplate) Validate(ctx context.Context) (errs *apis.FieldError)
- type AWSNodeTemplateList
- type AWSNodeTemplateSpec
- type AWSNodeTemplateStatus
- type BlockDevice
- type BlockDeviceMapping
- type LaunchTemplate
- type MetadataOptions
- type SecurityGroupStatus
- type SubnetStatus
Constants ¶
This section is empty.
Variables ¶
var ( LabelDomain = "karpenter.k8s.aws" CapacityTypeSpot = ec2.DefaultTargetCapacityTypeSpot CapacityTypeOnDemand = ec2.DefaultTargetCapacityTypeOnDemand AWSToKubeArchitectures = map[string]string{ "x86_64": v1alpha5.ArchitectureAmd64, v1alpha5.ArchitectureArm64: v1alpha5.ArchitectureArm64, } RestrictedLabelDomains = []string{ LabelDomain, } AMIFamilyBottlerocket = "Bottlerocket" AMIFamilyAL2 = "AL2" AMIFamilyUbuntu = "Ubuntu" AMIFamilyCustom = "Custom" SupportedAMIFamilies = []string{ AMIFamilyBottlerocket, AMIFamilyAL2, AMIFamilyUbuntu, AMIFamilyCustom, } SupportedContainerRuntimesByAMIFamily = map[string]sets.String{ AMIFamilyBottlerocket: sets.NewString("containerd"), AMIFamilyAL2: sets.NewString("dockerd", "containerd"), AMIFamilyUbuntu: sets.NewString("dockerd", "containerd"), } ResourceNVIDIAGPU v1.ResourceName = "nvidia.com/gpu" ResourceAMDGPU v1.ResourceName = "amd.com/gpu" ResourceAWSNeuron v1.ResourceName = "aws.amazon.com/neuron" ResourceHabanaGaudi v1.ResourceName = "habana.ai/gaudi" ResourceAWSPodENI v1.ResourceName = "vpc.amazonaws.com/pod-eni" LabelInstanceHypervisor = LabelDomain + "/instance-hypervisor" LabelInstanceEncryptionInTransitSupported = LabelDomain + "/instance-encryption-in-transit-supported" LabelInstanceCategory = LabelDomain + "/instance-category" LabelInstanceFamily = LabelDomain + "/instance-family" LabelInstanceGeneration = LabelDomain + "/instance-generation" LabelInstanceLocalNVME = LabelDomain + "/instance-local-nvme" LabelInstanceSize = LabelDomain + "/instance-size" LabelInstanceCPU = LabelDomain + "/instance-cpu" LabelInstanceMemory = LabelDomain + "/instance-memory" LabelInstanceNetworkBandwidth = LabelDomain + "/instance-network-bandwidth" LabelInstancePods = LabelDomain + "/instance-pods" LabelInstanceGPUName = LabelDomain + "/instance-gpu-name" LabelInstanceGPUManufacturer = LabelDomain + "/instance-gpu-manufacturer" LabelInstanceGPUCount = LabelDomain + "/instance-gpu-count" LabelInstanceGPUMemory = LabelDomain + "/instance-gpu-memory" LabelInstanceAMIID = LabelDomain + "/instance-ami-id" InterruptionInfrastructureFinalizer = Group + "/interruption-infrastructure" )
var ( Scheme = runtime.NewScheme() Group = "karpenter.k8s.aws" SchemeGroupVersion = schema.GroupVersion{Group: Group, Version: "v1alpha1"} SchemeBuilder = runtime.NewSchemeBuilder(func(scheme *runtime.Scheme) error { scheme.AddKnownTypes(SchemeGroupVersion, &AWSNodeTemplate{}, &AWSNodeTemplateList{}, ) metav1.AddToGroupVersion(scheme, SchemeGroupVersion) return nil }) )
Functions ¶
Types ¶
type AWS ¶
type AWS struct { // TypeMeta includes version and kind of the extensions, inferred if not provided. // +optional metav1.TypeMeta `json:",inline"` // AMIFamily is the AMI family that instances use. // +optional AMIFamily *string `json:"amiFamily,omitempty"` // Context is a Reserved field in EC2 APIs // https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateFleet.html // +optional Context *string `json:"context,omitempty"` // InstanceProfile is the AWS identity that instances use. // +optional InstanceProfile *string `json:"instanceProfile,omitempty"` // SubnetSelector discovers subnets by tags. A value of "" is a wildcard. // +optional SubnetSelector map[string]string `json:"subnetSelector,omitempty"` // SecurityGroups specify the names of the security groups. // +optional SecurityGroupSelector map[string]string `json:"securityGroupSelector,omitempty"` // Tags to be applied on ec2 resources like instances and launch templates. // +optional Tags map[string]string `json:"tags,omitempty"` // LaunchTemplate parameters to use when generating an LT LaunchTemplate `json:",inline,omitempty"` }
AWS contains parameters specific to this cloud provider +kubebuilder:object:root=true
func DeserializeProvider ¶
func (*AWS) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWS.
func (*AWS) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AWS) DeepCopyObject ¶
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*AWS) Validate ¶
func (a *AWS) Validate() (errs *apis.FieldError)
type AWSNodeTemplate ¶
type AWSNodeTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` Spec AWSNodeTemplateSpec `json:"spec,omitempty"` Status AWSNodeTemplateStatus `json:"status,omitempty"` }
AWSNodeTemplate is the Schema for the AWSNodeTemplate API +kubebuilder:object:root=true +kubebuilder:resource:path=awsnodetemplates,scope=Cluster,categories=karpenter +kubebuilder:subresource:status
func (*AWSNodeTemplate) DeepCopy ¶
func (in *AWSNodeTemplate) DeepCopy() *AWSNodeTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSNodeTemplate.
func (*AWSNodeTemplate) DeepCopyInto ¶
func (in *AWSNodeTemplate) DeepCopyInto(out *AWSNodeTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AWSNodeTemplate) DeepCopyObject ¶
func (in *AWSNodeTemplate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*AWSNodeTemplate) SetDefaults ¶
func (a *AWSNodeTemplate) SetDefaults(ctx context.Context)
SetDefaults for the AWSNodeTemplate
func (*AWSNodeTemplate) SupportedVerbs ¶
func (a *AWSNodeTemplate) SupportedVerbs() []admissionregistrationv1.OperationType
func (*AWSNodeTemplate) Validate ¶
func (a *AWSNodeTemplate) Validate(ctx context.Context) (errs *apis.FieldError)
type AWSNodeTemplateList ¶
type AWSNodeTemplateList struct { metav1.TypeMeta `json:",inline"` metav1.ListMeta `json:"metadata,omitempty"` Items []AWSNodeTemplate `json:"items"` }
AWSNodeTemplateList contains a list of AWSNodeTemplate +kubebuilder:object:root=true
func (*AWSNodeTemplateList) DeepCopy ¶
func (in *AWSNodeTemplateList) DeepCopy() *AWSNodeTemplateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSNodeTemplateList.
func (*AWSNodeTemplateList) DeepCopyInto ¶
func (in *AWSNodeTemplateList) DeepCopyInto(out *AWSNodeTemplateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AWSNodeTemplateList) DeepCopyObject ¶
func (in *AWSNodeTemplateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AWSNodeTemplateSpec ¶
type AWSNodeTemplateSpec struct { // UserData to be applied to the provisioned nodes. // It must be in the appropriate format based on the AMIFamily in use. Karpenter will merge certain fields into // this UserData to ensure nodes are being provisioned with the correct configuration. // +optional UserData *string `json:"userData,omitempty"` AWS `json:",inline"` // AMISelector discovers AMIs to be used by Amazon EC2 tags. // +optional AMISelector map[string]string `json:"amiSelector,omitempty"` // DetailedMonitoring controls if detailed monitoring is enabled for instances that are launched // +optional DetailedMonitoring *bool `json:"detailedMonitoring,omitempty"` }
AWSNodeTemplateSpec is the top level specification for the AWS Karpenter Provider. This will contain configuration necessary to launch instances in AWS.
func (*AWSNodeTemplateSpec) DeepCopy ¶
func (in *AWSNodeTemplateSpec) DeepCopy() *AWSNodeTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSNodeTemplateSpec.
func (*AWSNodeTemplateSpec) DeepCopyInto ¶
func (in *AWSNodeTemplateSpec) DeepCopyInto(out *AWSNodeTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AWSNodeTemplateStatus ¶
type AWSNodeTemplateStatus struct { // Subnets contains the current Subnet values that are available to the // cluster under the subnet selectors. // +optional Subnets []SubnetStatus `json:"subnets,omitempty"` // SecurityGroups contains the current Security Groups values that are available to the // cluster under the SecurityGroups selectors. // +optional SecurityGroups []SecurityGroupStatus `json:"securityGroups,omitempty"` }
AWSNodeTemplateStatus contains the resolved state of the AWSNodeTemplate
func (*AWSNodeTemplateStatus) DeepCopy ¶
func (in *AWSNodeTemplateStatus) DeepCopy() *AWSNodeTemplateStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AWSNodeTemplateStatus.
func (*AWSNodeTemplateStatus) DeepCopyInto ¶
func (in *AWSNodeTemplateStatus) DeepCopyInto(out *AWSNodeTemplateStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockDevice ¶
type BlockDevice struct { // DeleteOnTermination indicates whether the EBS volume is deleted on instance termination. DeleteOnTermination *bool `json:"deleteOnTermination,omitempty"` // Encrypted indicates whether the EBS volume is encrypted. Encrypted volumes can only // be attached to instances that support Amazon EBS encryption. If you are creating // a volume from a snapshot, you can't specify an encryption value. Encrypted *bool `json:"encrypted,omitempty"` // IOPS is the number of I/O operations per second (IOPS). For gp3, io1, and io2 volumes, // this represents the number of IOPS that are provisioned for the volume. For // gp2 volumes, this represents the baseline performance of the volume and the // rate at which the volume accumulates I/O credits for bursting. // // The following are the supported values for each volume type: // // * gp3: 3,000-16,000 IOPS // // * io1: 100-64,000 IOPS // // * io2: 100-64,000 IOPS // // For io1 and io2 volumes, we guarantee 64,000 IOPS only for Instances built // on the Nitro System (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html#ec2-nitro-instances). // Other instance families guarantee performance up to 32,000 IOPS. // // This parameter is supported for io1, io2, and gp3 volumes only. This parameter // is not supported for gp2, st1, sc1, or standard volumes. IOPS *int64 `json:"iops,omitempty"` // KMSKeyID (ARN) of the symmetric Key Management Service (KMS) CMK used for encryption. KMSKeyID *string `json:"kmsKeyID,omitempty"` // SnapshotID is the ID of an EBS snapshot SnapshotID *string `json:"snapshotID,omitempty"` // Throughput to provision for a gp3 volume, with a maximum of 1,000 MiB/s. // Valid Range: Minimum value of 125. Maximum value of 1000. Throughput *int64 `json:"throughput,omitempty"` // VolumeSize in GiBs. You must specify either a snapshot ID or // a volume size. The following are the supported volumes sizes for each volume // type: // // * gp2 and gp3: 1-16,384 // // * io1 and io2: 4-16,384 // // * st1 and sc1: 125-16,384 // // * standard: 1-1,024 VolumeSize *resource.Quantity `json:"volumeSize,omitempty" hash:"string"` // VolumeType of the block device. // For more information, see Amazon EBS volume types (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSVolumeTypes.html) // in the Amazon Elastic Compute Cloud User Guide. VolumeType *string `json:"volumeType,omitempty"` }
func (*BlockDevice) DeepCopy ¶
func (in *BlockDevice) DeepCopy() *BlockDevice
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockDevice.
func (*BlockDevice) DeepCopyInto ¶
func (in *BlockDevice) DeepCopyInto(out *BlockDevice)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BlockDeviceMapping ¶
type BlockDeviceMapping struct { // The device name (for example, /dev/sdh or xvdh). DeviceName *string `json:"deviceName,omitempty"` // EBS contains parameters used to automatically set up EBS volumes when an instance is launched. EBS *BlockDevice `json:"ebs,omitempty"` }
func (*BlockDeviceMapping) DeepCopy ¶
func (in *BlockDeviceMapping) DeepCopy() *BlockDeviceMapping
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BlockDeviceMapping.
func (*BlockDeviceMapping) DeepCopyInto ¶
func (in *BlockDeviceMapping) DeepCopyInto(out *BlockDeviceMapping)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LaunchTemplate ¶
type LaunchTemplate struct { // LaunchTemplateName for the node. If not specified, a launch template will be generated. // NOTE: This field is for specifying a custom launch template and is exposed in the Spec // as `launchTemplate` for backwards compatibility. // +optional LaunchTemplateName *string `json:"launchTemplate,omitempty"` // MetadataOptions for the generated launch template of provisioned nodes. // // This specifies the exposure of the Instance Metadata Service to // provisioned EC2 nodes. For more information, // see Instance Metadata and User Data // (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) // in the Amazon Elastic Compute Cloud User Guide. // // Refer to recommended, security best practices // (https://aws.github.io/aws-eks-best-practices/security/docs/iam/#restrict-access-to-the-instance-profile-assigned-to-the-worker-node) // for limiting exposure of Instance Metadata and User Data to pods. // If omitted, defaults to httpEndpoint enabled, with httpProtocolIPv6 // disabled, with httpPutResponseLimit of 2, and with httpTokens // required. // +optional MetadataOptions *MetadataOptions `json:"metadataOptions,omitempty"` // BlockDeviceMappings to be applied to provisioned nodes. // +optionals BlockDeviceMappings []*BlockDeviceMapping `json:"blockDeviceMappings,omitempty"` }
func (*LaunchTemplate) DeepCopy ¶
func (in *LaunchTemplate) DeepCopy() *LaunchTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LaunchTemplate.
func (*LaunchTemplate) DeepCopyInto ¶
func (in *LaunchTemplate) DeepCopyInto(out *LaunchTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MetadataOptions ¶
type MetadataOptions struct { // HTTPEndpoint enables or disables the HTTP metadata endpoint on provisioned // nodes. If metadata options is non-nil, but this parameter is not specified, // the default state is "enabled". // // If you specify a value of "disabled", instance metadata will not be accessible // on the node. // +optional HTTPEndpoint *string `json:"httpEndpoint,omitempty"` // HTTPProtocolIPv6 enables or disables the IPv6 endpoint for the instance metadata // service on provisioned nodes. If metadata options is non-nil, but this parameter // is not specified, the default state is "disabled". // +optional HTTPProtocolIPv6 *string `json:"httpProtocolIPv6,omitempty"` // HTTPPutResponseHopLimit is the desired HTTP PUT response hop limit for // instance metadata requests. The larger the number, the further instance // metadata requests can travel. Possible values are integers from 1 to 64. // If metadata options is non-nil, but this parameter is not specified, the // default value is 1. // +optional HTTPPutResponseHopLimit *int64 `json:"httpPutResponseHopLimit,omitempty"` // HTTPTokens determines the state of token usage for instance metadata // requests. If metadata options is non-nil, but this parameter is not // specified, the default state is "optional". // // If the state is optional, one can choose to retrieve instance metadata with // or without a signed token header on the request. If one retrieves the IAM // role credentials without a token, the version 1.0 role credentials are // returned. If one retrieves the IAM role credentials using a valid signed // token, the version 2.0 role credentials are returned. // // If the state is "required", one must send a signed token header with any // instance metadata retrieval requests. In this state, retrieving the IAM // role credentials always returns the version 2.0 credentials; the version // 1.0 credentials are not available. // +optional HTTPTokens *string `json:"httpTokens,omitempty"` }
MetadataOptions contains parameters for specifying the exposure of the Instance Metadata Service to provisioned EC2 nodes.
func (*MetadataOptions) DeepCopy ¶
func (in *MetadataOptions) DeepCopy() *MetadataOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetadataOptions.
func (*MetadataOptions) DeepCopyInto ¶
func (in *MetadataOptions) DeepCopyInto(out *MetadataOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecurityGroupStatus ¶
type SecurityGroupStatus struct { // Id of the security group // +optional ID string `json:"id,omitempty"` }
SecurityGroupStatus contains resolved SecurityGroup selector values utilized for node launch
func (*SecurityGroupStatus) DeepCopy ¶
func (in *SecurityGroupStatus) DeepCopy() *SecurityGroupStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupStatus.
func (*SecurityGroupStatus) DeepCopyInto ¶
func (in *SecurityGroupStatus) DeepCopyInto(out *SecurityGroupStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetStatus ¶
type SubnetStatus struct { // Id of the subnet // +optional ID string `json:"id,omitempty"` // The associated availability zone // +optional Zone string `json:"zone,omitempty"` }
SubnetStatus contains resolved Subnet selector values utilized for node launch
func (*SubnetStatus) DeepCopy ¶
func (in *SubnetStatus) DeepCopy() *SubnetStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetStatus.
func (*SubnetStatus) DeepCopyInto ¶
func (in *SubnetStatus) DeepCopyInto(out *SubnetStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.