Documentation
¶
Overview ¶
Package aws contains AWS-specific structures for installer configuration and management. +k8s:deepcopy-gen=package
Index ¶
- Constants
- Variables
- func IsPublicOnlySubnetsEnabled() bool
- type AWSSubnetID
- type CPUOptions
- type ConfidentialComputePolicy
- type DedicatedHost
- type EC2Metadata
- type EC2RootVolume
- type HostAffinity
- type HostPlacement
- type MachinePool
- type Metadata
- type Platform
- type ServiceEndpoint
- type Subnet
- type SubnetRole
- type SubnetRoleType
- type VPC
Constants ¶
const ( // AvailabilityZoneType is the type of regular zone placed on the region. AvailabilityZoneType = "availability-zone" // LocalZoneType is the type of AWS Local Zones placed on the metropolitan area. LocalZoneType = "local-zone" // WavelengthZoneType is the type of AWS Wavelength Zones placed on the telecommunications // providers’ data centers at the edge of the 5G network. WavelengthZoneType = "wavelength-zone" // ZoneOptInStatusOptedIn is the opt-in status of the zone. // For Availability Zones, this parameter always has the value of opt-in-not-required. // For Local Zones and Wavelength Zones, this parameter is the opt-in status. ZoneOptInStatusOptedIn = "opted-in" )
const ( // VolumeTypeGp2 is the type of EBS volume for General Purpose SSD gp2. VolumeTypeGp2 = "gp2" // VolumeTypeGp3 is the type of EBS volume for General Purpose SSD gp3. VolumeTypeGp3 = "gp3" )
const ( AwsPartitionID = "aws" // AWS Standard partition. AwsCnPartitionID = "aws-cn" // AWS China partition. AwsUsGovPartitionID = "aws-us-gov" // AWS GovCloud (US) partition. AwsIsoPartitionID = "aws-iso" // AWS ISO (US) partition. AwsIsoBPartitionID = "aws-iso-b" // AWS ISOB (US) partition. AwsEuscPartitionID = "aws-eusc" // AWS Europe Sovereign Cloud. )
Partition identifiers.
const ( AfSouth1RegionID = "af-south-1" // Africa (Cape Town). ApEast1RegionID = "ap-east-1" // Asia Pacific (Hong Kong). ApEast2RegionID = "ap-east-2" // Asia Pacific (Taipei). ApNortheast1RegionID = "ap-northeast-1" // Asia Pacific (Tokyo). ApNortheast2RegionID = "ap-northeast-2" // Asia Pacific (Seoul). ApNortheast3RegionID = "ap-northeast-3" // Asia Pacific (Osaka). ApSouth1RegionID = "ap-south-1" // Asia Pacific (Mumbai). ApSouth2RegionID = "ap-south-2" // Asia Pacific (Hyderabad). ApSoutheast1RegionID = "ap-southeast-1" // Asia Pacific (Singapore). ApSoutheast2RegionID = "ap-southeast-2" // Asia Pacific (Sydney). ApSoutheast3RegionID = "ap-southeast-3" // Asia Pacific (Jakarta). ApSoutheast4RegionID = "ap-southeast-4" // Asia Pacific (Melbourne). ApSoutheast5RegionID = "ap-southeast-5" // Asia Pacific (Malaysia). ApSoutheast6RegionID = "ap-southeast-6" // Asia Pacific (New Zealand). ApSoutheast7RegionID = "ap-southeast-7" // Asia Pacific (Thailand). CaCentral1RegionID = "ca-central-1" // Canada (Central). CaWest1RegionID = "ca-west-1" // Canada West (Calgary). EuCentral1RegionID = "eu-central-1" // Europe (Frankfurt). EuCentral2RegionID = "eu-central-2" // Europe (Zurich). EuNorth1RegionID = "eu-north-1" // Europe (Stockholm). EuSouth1RegionID = "eu-south-1" // Europe (Milan). EuSouth2RegionID = "eu-south-2" // Europe (Spain). EuWest1RegionID = "eu-west-1" // Europe (Ireland). EuWest2RegionID = "eu-west-2" // Europe (London). EuWest3RegionID = "eu-west-3" // Europe (Paris). IlCentral1RegionID = "il-central-1" // Israel (Tel Aviv). MeCentral1RegionID = "me-central-1" // Middle East (UAE). MeSouth1RegionID = "me-south-1" // Middle East (Bahrain). MxCentral1RegionID = "mx-central-1" // Mexico (Central). SaEast1RegionID = "sa-east-1" // South America (Sao Paulo). UsEast1RegionID = "us-east-1" // US East (N. Virginia). UsEast2RegionID = "us-east-2" // US East (Ohio). UsWest1RegionID = "us-west-1" // US West (N. California). UsWest2RegionID = "us-west-2" // US West (Oregon). )
AWS Standard partition's regions.
const ( CnNorth1RegionID = "cn-north-1" // China (Beijing). CnNorthwest1RegionID = "cn-northwest-1" // China (Ningxia). )
AWS China partition's regions.
const ( UsGovEast1RegionID = "us-gov-east-1" // AWS GovCloud (US-East). UsGovWest1RegionID = "us-gov-west-1" // AWS GovCloud (US-West). )
AWS GovCloud (US) partition's regions.
const ( UsIsoEast1RegionID = "us-iso-east-1" // AWS ISO (US) East. UsIsoWest1RegionID = "us-iso-west-1" // AWS ISO (US) West. )
AWS ISO (US) partition's regions.
const (
EuscDeEast1RegionID = "eusc-de-east-1" // AWS European Sovereign Cloud (Germany).
)
AWS European Sovereign Cloud partition's regions.
const Name string = "aws"
Name is name for the AWS platform.
const (
UsIsoBEast1RegionID = "us-isob-east-1" // AWS ISOB (US) East.
)
AWS ISOB (US) partition's regions.
Variables ¶
var ( // RegionLookupMap is a static map containing the known AWS regions and the // descriptive location information including the Continent and City/Area. RegionLookupMap = map[string]string{ AfSouth1RegionID: "Africa (Cape Town)", ApEast1RegionID: "Asia Pacific (Hong Kong)", ApSouth2RegionID: "Asia Pacific (Hyderabad)", ApSoutheast3RegionID: "Asia Pacific (Jakarta)", ApSoutheast5RegionID: "Asia Pacific (Malaysia)", ApSoutheast4RegionID: "Asia Pacific (Melbourne)", ApSouth1RegionID: "Asia Pacific (Mumbai)", ApNortheast3RegionID: "Asia Pacific (Osaka)", ApNortheast2RegionID: "Asia Pacific (Seoul)", ApSoutheast1RegionID: "Asia Pacific (Singapore)", ApSoutheast2RegionID: "Asia Pacific (Sydney)", ApSoutheast6RegionID: "Asia Pacific (New Zealand)", ApEast2RegionID: "Asia Pacific (Taipei)", ApSoutheast7RegionID: "Asia Pacific (Thailand)", ApNortheast1RegionID: "Asia Pacific (Tokyo)", UsGovEast1RegionID: "AWS GovCloud (US-East)", UsGovWest1RegionID: "AWS GovCloud (US-West)", CaCentral1RegionID: "Canada (Central)", CaWest1RegionID: "Canada West (Calgary)", EuCentral1RegionID: "Europe (Frankfurt)", EuWest1RegionID: "Europe (Ireland)", EuWest2RegionID: "Europe (London)", EuSouth1RegionID: "Europe (Milan)", EuWest3RegionID: "Europe (Paris)", EuSouth2RegionID: "Europe (Spain)", EuNorth1RegionID: "Europe (Stockholm)", EuCentral2RegionID: "Europe (Zurich)", IlCentral1RegionID: "Israel (Tel Aviv)", MxCentral1RegionID: "Mexico (Central)", MeSouth1RegionID: "Middle East (Bahrain)", MeCentral1RegionID: "Middle East (UAE)", SaEast1RegionID: "South America (São Paulo)", UsEast1RegionID: "US East (N. Virginia)", UsEast2RegionID: "US East (Ohio)", UsWest1RegionID: "US West (N. California)", UsWest2RegionID: "US West (Oregon)", } // HostedZoneIDPerRegionNLBMap maps HostedZoneIDs from known regions. // See https://docs.aws.amazon.com/general/latest/gr/elb.html#elb_region HostedZoneIDPerRegionNLBMap = map[string]string{ AfSouth1RegionID: "Z203XCE67M25HM", ApEast1RegionID: "Z12Y7K3UBGUAD1", ApNortheast1RegionID: "Z31USIVHYNEOWT", ApNortheast2RegionID: "ZIBE1TIR4HY56", ApNortheast3RegionID: "Z1GWIQ4HH19I5X", ApSouth1RegionID: "ZVDDRBQ08TROA", ApSouth2RegionID: "Z0711778386UTO08407HT", ApSoutheast1RegionID: "ZKVM4W9LS7TM", ApSoutheast2RegionID: "ZCT6FZBF4DROD", ApSoutheast3RegionID: "Z01971771FYVNCOVWJU1G", ApSoutheast4RegionID: "Z01156963G8MIIL7X90IV", CaCentral1RegionID: "Z2EPGBW3API2WT", CnNorth1RegionID: "Z3QFB96KMJ7ED6", CnNorthwest1RegionID: "ZQEIKTCZ8352D", EuCentral1RegionID: "Z3F0SRJ5LGBH90", EuCentral2RegionID: "Z02239872DOALSIDCX66S", EuNorth1RegionID: "Z1UDT6IFJ4EJM", EuSouth1RegionID: "Z23146JA1KNAFP", EuSouth2RegionID: "Z1011216NVTVYADP1SSV", EuWest1RegionID: "Z2IFOLAFXWLO4F", EuWest2RegionID: "ZD4D7Y8KGAS4G", EuWest3RegionID: "Z1CMS0P5QUZ6D5", MeCentral1RegionID: "Z00282643NTTLPANJJG2P", MeSouth1RegionID: "Z3QSRYVP46NYYV", SaEast1RegionID: "ZTK26PT1VY4CU", UsEast1RegionID: "Z26RNL4JYFTOTI", UsEast2RegionID: "ZLMOA37VPKANP", UsGovEast1RegionID: "Z1ZSMQQ6Q24QQ8", UsGovWest1RegionID: "ZMG1MZ2THAWF1", UsWest1RegionID: "Z24FKFUX50B4VW", UsWest2RegionID: "Z18D5FSROUN65G", } )
AWS SDK Go v2 does not expose region and partition constants; thus we need to define them in the installer code.
Functions ¶
func IsPublicOnlySubnetsEnabled ¶ added in v0.90.0
func IsPublicOnlySubnetsEnabled() bool
IsPublicOnlySubnetsEnabled returns whether the public-only subnets feature has been enabled via env var.
Types ¶
type AWSSubnetID ¶
type AWSSubnetID string // nolint:revive
AWSSubnetID is a reference to an AWS subnet ID. +kubebuilder:validation:MinLength=24 +kubebuilder:validation:MaxLength=24 +kubebuilder:validation:Pattern=`^subnet-[0-9A-Za-z]+$`
type CPUOptions ¶
type CPUOptions struct {
// ConfidentialCompute specifies whether confidential computing should be enabled for the instance,
// and, if so, which confidential computing technology to use.
// Valid values are: Disabled, AMDEncryptedVirtualizationNestedPaging and omitted.
// When set to Disabled, confidential computing will be disabled for the instance.
// When set to AMDEncryptedVirtualizationNestedPaging, AMD SEV-SNP will be used as the confidential computing technology for the instance.
// In this case, ensure the following conditions are met:
// 1) The selected instance type supports AMD SEV-SNP.
// 2) The selected AWS region supports AMD SEV-SNP.
// 3) The selected AMI supports AMD SEV-SNP.
// More details can be checked at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sev-snp.html
// When omitted, this means no opinion and the AWS platform is left to choose a reasonable default,
// which is subject to change without notice. The current default is Disabled.
// +optional
ConfidentialCompute *ConfidentialComputePolicy `json:"confidentialCompute,omitempty"`
}
CPUOptions defines CPU-related settings for the instance, including the confidential computing policy. If provided, it must not be empty — at least one field must be set. +kubebuilder:validation:MinProperties=1
func (*CPUOptions) DeepCopy ¶
func (in *CPUOptions) DeepCopy() *CPUOptions
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CPUOptions.
func (*CPUOptions) DeepCopyInto ¶
func (in *CPUOptions) DeepCopyInto(out *CPUOptions)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ConfidentialComputePolicy ¶
type ConfidentialComputePolicy string
ConfidentialComputePolicy represents the confidential compute configuration for the instance. +kubebuilder:validation:Enum=Disabled;AMDEncryptedVirtualizationNestedPaging
const ( // ConfidentialComputePolicyDisabled disables confidential computing for the instance. ConfidentialComputePolicyDisabled ConfidentialComputePolicy = "Disabled" // ConfidentialComputePolicySEVSNP enables AMD SEV-SNP as the confidential computing technology for the instance. ConfidentialComputePolicySEVSNP ConfidentialComputePolicy = "AMDEncryptedVirtualizationNestedPaging" )
type DedicatedHost ¶
type DedicatedHost struct {
// id identifies the AWS Dedicated Host on which the instance must run.
// The value must start with "h-" followed by 17 lowercase hexadecimal characters (0-9 and a-f).
// Must be exactly 19 characters in length.
// +kubebuilder:validation:XValidation:rule="self.matches('^h-[0-9a-f]{17}$')",message="hostID must start with 'h-' followed by 17 lowercase hexadecimal characters (0-9 and a-f)"
// +kubebuilder:validation:MinLength=19
// +kubebuilder:validation:MaxLength=19
// +required
ID string `json:"id,omitempty"`
}
DedicatedHost represents the configuration for the usage of dedicated host.
func (*DedicatedHost) DeepCopy ¶
func (in *DedicatedHost) DeepCopy() *DedicatedHost
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DedicatedHost.
func (*DedicatedHost) DeepCopyInto ¶
func (in *DedicatedHost) DeepCopyInto(out *DedicatedHost)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EC2Metadata ¶ added in v0.4.15
type EC2Metadata struct {
// Authentication determines whether or not the host requires the use of authentication when interacting with the metadata service.
// When using authentication, this enforces v2 interaction method (IMDSv2) with the metadata service.
// When omitted, this means the user has no opinion and the value is left to the platform to choose a good
// default, which is subject to change over time. The current default is optional.
// At this point this field represents `HttpTokens` parameter from `InstanceMetadataOptionsRequest` structure in AWS EC2 API
// https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html
// +kubebuilder:validation:Enum=Required;Optional
// +optional
Authentication string `json:"authentication,omitempty"`
}
EC2Metadata defines the metadata service interaction options for an ec2 instance. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html
func (*EC2Metadata) DeepCopy ¶
func (in *EC2Metadata) DeepCopy() *EC2Metadata
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EC2Metadata.
func (*EC2Metadata) DeepCopyInto ¶
func (in *EC2Metadata) DeepCopyInto(out *EC2Metadata)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EC2RootVolume ¶
type EC2RootVolume struct {
// IOPS defines the amount of provisioned IOPS. (KiB/s). IOPS may only be set for
// io1, io2, & gp3 volume types.
//
// +kubebuilder:validation:Minimum=0
// +optional
IOPS int `json:"iops"`
// Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
//
// This parameter is valid only for gp3 volumes.
// Valid Range: Minimum value of 125. Maximum value of 2000.
//
// When omitted, this means no opinion, and the platform is left to
// choose a reasonable default, which is subject to change over time.
// The current default is 125.
//
// +kubebuilder:validation:Minimum:=125
// +kubebuilder:validation:Maximum:=2000
// +optional
Throughput *int32 `json:"throughput,omitempty"`
// Size defines the size of the volume in gibibytes (GiB).
//
// +kubebuilder:validation:Minimum=0
Size int `json:"size"`
// Type defines the type of the volume.
Type string `json:"type"`
// The KMS key that will be used to encrypt the EBS volume.
// If no key is provided the default KMS key for the account will be used.
// https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetEbsDefaultKmsKeyId.html
// +optional
KMSKeyARN string `json:"kmsKeyARN,omitempty"`
}
EC2RootVolume defines the storage for an ec2 instance.
func (*EC2RootVolume) DeepCopy ¶
func (in *EC2RootVolume) DeepCopy() *EC2RootVolume
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EC2RootVolume.
func (*EC2RootVolume) DeepCopyInto ¶
func (in *EC2RootVolume) DeepCopyInto(out *EC2RootVolume)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HostAffinity ¶
type HostAffinity string
HostAffinity selects how an instance should be placed on AWS Dedicated Hosts. +kubebuilder:validation:Enum:=DedicatedHost;AnyAvailable
const ( // HostAffinityAnyAvailable lets the platform select any available dedicated host. HostAffinityAnyAvailable HostAffinity = "AnyAvailable" // HostAffinityDedicatedHost requires specifying a particular host via dedicatedHost.host.id. HostAffinityDedicatedHost HostAffinity = "DedicatedHost" )
type HostPlacement ¶
type HostPlacement struct {
// affinity specifies the affinity setting for the instance.
// Allowed values are AnyAvailable and DedicatedHost.
// When Affinity is set to DedicatedHost, an instance started onto a specific host always restarts on the same host if stopped. In this scenario, the `dedicatedHost` field must be set.
// When Affinity is set to AnyAvailable, and you stop and restart the instance, it can be restarted on any available host.
// +required
// +unionDiscriminator
Affinity *HostAffinity `json:"affinity,omitempty"`
// dedicatedHost specifies the exact host that an instance should be restarted on if stopped.
// dedicatedHost is required when 'affinity' is set to DedicatedHost, and forbidden otherwise.
// +optional
// +unionMember
DedicatedHost []DedicatedHost `json:"dedicatedHost,omitempty"`
}
HostPlacement is the type that will be used to configure the placement of AWS instances. This can be configured for default placement (AnyAvailable) and dedicated hosts (DedicatedHost). +kubebuilder:validation:XValidation:rule="has(self.affinity) && self.affinity == 'DedicatedHost' ? has(self.dedicatedHost) : !has(self.dedicatedHost)",message="dedicatedHost is required when affinity is DedicatedHost, and forbidden otherwise"
func (*HostPlacement) DeepCopy ¶
func (in *HostPlacement) DeepCopy() *HostPlacement
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HostPlacement.
func (*HostPlacement) DeepCopyInto ¶
func (in *HostPlacement) DeepCopyInto(out *HostPlacement)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MachinePool ¶
type MachinePool struct {
// Zones is list of availability zones that can be used.
//
// +optional
Zones []string `json:"zones,omitempty"`
// InstanceType defines the ec2 instance type.
// eg. m4-large
//
// +optional
InstanceType string `json:"type"`
// AMIID is the AMI that should be used to boot the ec2 instance.
// If set, the AMI should belong to the same region as the cluster.
//
// +optional
AMIID string `json:"amiID,omitempty"`
// EC2RootVolume defines the root volume for EC2 instances in the machine pool.
//
// +optional
EC2RootVolume `json:"rootVolume"`
// EC2MetadataOptions defines metadata service interaction options for EC2 instances in the machine pool.
//
// +optional
EC2Metadata EC2Metadata `json:"metadataService"`
// IAMRole is the name of the IAM Role to use for the instance profile of the machine.
// Leave unset to have the installer create the IAM Role on your behalf.
// Cannot be specified together with iamProfile.
// +optional
IAMRole string `json:"iamRole,omitempty"`
// IAMProfile is the name of the IAM instance profile to use for the machine.
// Leave unset to have the installer create the IAM Profile on your behalf.
// Cannot be specified together with iamRole.
// +optional
IAMProfile string `json:"iamProfile,omitempty"`
// AdditionalSecurityGroupIDs contains IDs of additional security groups for machines, where each ID
// is presented in the format sg-xxxx.
//
// +kubebuilder:validation:MaxItems=10
// +optional
AdditionalSecurityGroupIDs []string `json:"additionalSecurityGroupIDs,omitempty"`
// CPUOptions defines CPU-related settings for the instance, including the confidential computing policy.
// When omitted, this means no opinion and the AWS platform is left to choose a reasonable default.
// More info:
// https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CpuOptionsRequest.html,
// https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/cpu-options-supported-instances-values.html
// +optional
CPUOptions *CPUOptions `json:"cpuOptions,omitempty,omitzero"`
// hostPlacement configures placement on AWS Dedicated Hosts. This allows admins to assign instances to specific host
// for a variety of needs including for regulatory compliance, to leverage existing per-socket or per-core software licenses (BYOL),
// and to gain visibility and control over instance placement on a physical server.
// When omitted, the instance is not constrained to a dedicated host.
// +openshift:enable:FeatureGate=AWSDedicatedHosts
// +optional
HostPlacement *HostPlacement `json:"hostPlacement,omitempty"`
}
MachinePool stores the configuration for a machine pool installed on AWS.
func (*MachinePool) DeepCopy ¶
func (in *MachinePool) DeepCopy() *MachinePool
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MachinePool.
func (*MachinePool) DeepCopyInto ¶
func (in *MachinePool) DeepCopyInto(out *MachinePool)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*MachinePool) Set ¶
func (a *MachinePool) Set(required *MachinePool)
Set sets the values from `required` to `a`.
type Metadata ¶
type Metadata struct {
Region string `json:"region"`
// ServiceEndpoints list contains custom endpoints which will override default
// service endpoint of AWS Services.
// There must be only one ServiceEndpoint for a service.
// +optional
ServiceEndpoints []ServiceEndpoint `json:"serviceEndpoints,omitempty"`
// Identifier holds a slice of filter maps. The maps hold the
// key/value pairs for the tags we will be matching against. A
// resource matches the map if all of the key/value pairs are in its
// tags. A resource matches Identifier if it matches any of the maps.
Identifier []map[string]string `json:"identifier"`
// ClusterDomain is the domain for the cluster.
ClusterDomain string `json:"clusterDomain"`
// HostedZoneRole is the role to assume when performing operations
// on a hosted zone owned by another account.
HostedZoneRole string `json:"hostedZoneRole,omitempty"`
}
Metadata contains AWS metadata (e.g. for uninstalling the cluster).
func (*Metadata) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Metadata.
func (*Metadata) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Platform ¶
type Platform struct {
// The field is deprecated. AMIID is the AMI that should be used to boot
// machines for the cluster. If set, the AMI should belong to the same
// region as the cluster.
//
// +optional
AMIID string `json:"amiID,omitempty"`
// Region specifies the AWS region where the cluster will be created.
Region string `json:"region"`
// Subnets specifies existing subnets (by ID) where cluster
// resources will be created. Leave unset to have the installer
// create subnets in a new VPC on your behalf.
//
// Deprecated: use platform.aws.vpc.subnets
//
// +optional
DeprecatedSubnets []string `json:"subnets,omitempty"`
// VPC specifies the VPC configuration for the cluster.
//
// +optional
VPC VPC `json:"vpc,omitempty"`
// HostedZone is the ID of an existing hosted zone into which to add DNS
// records for the cluster's internal API. An existing hosted zone can
// only be used when also using existing subnets. The hosted zone must be
// associated with the VPC containing the subnets.
// Leave the hosted zone unset to have the installer create the hosted zone
// on your behalf.
// +optional
HostedZone string `json:"hostedZone,omitempty"`
// HostedZoneRole is the ARN of an IAM role to be assumed when performing
// operations on the provided HostedZone. HostedZoneRole can be used
// in a shared VPC scenario when the private hosted zone belongs to a
// different account than the rest of the cluster resources.
// If HostedZoneRole is set, HostedZone must also be set.
//
// +optional
HostedZoneRole string `json:"hostedZoneRole,omitempty"`
// UserTags additional keys and values that the installer will add
// as tags to all resources that it creates. Resources created by the
// cluster itself may not include these tags.
// +optional
UserTags map[string]string `json:"userTags,omitempty"`
// ServiceEndpoints list contains custom endpoints which will override default
// service endpoint of AWS Services.
// There must be only one ServiceEndpoint for a service.
// +optional
ServiceEndpoints []ServiceEndpoint `json:"serviceEndpoints,omitempty"`
// DefaultMachinePlatform is the default configuration used when
// installing on AWS for machine pools which do not define their own
// platform configuration.
// +optional
DefaultMachinePlatform *MachinePool `json:"defaultMachinePlatform,omitempty"`
// PropagateUserTags is a flag that directs in-cluster operators
// to include the specified user tags in the tags of the
// AWS resources that the operators create.
// +optional
PropagateUserTag bool `json:"propagateUserTags,omitempty"`
// LBType is an optional field to specify a load balancer type.
// When this field is specified, all ingresscontrollers (including the
// default ingresscontroller) will be created using the specified load-balancer
// type by default.
//
// Following are the accepted values:
//
// * "Classic": A Classic Load Balancer that makes routing decisions at
// either the transport layer (TCP/SSL) or the application layer
// (HTTP/HTTPS). See the following for additional details:
// https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb
//
// * "NLB": A Network Load Balancer that makes routing decisions at the
// transport layer (TCP/SSL). See the following for additional details:
// https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb
//
// If this field is not set explicitly, the default value depends on the ipFamily field:
// * "Classic" when ipFamily is not set or set to "IPv4"
// * "NLB" when ipFamily is set to "DualStackIPv4Primary" or "DualStackIPv6Primary"
// This default is subject to change over time.
//
// +kubebuilder:validation:Enum="Classic";"NLB"
// +optional
LBType configv1.AWSLBType `json:"lbType,omitempty"`
// PreserveBootstrapIgnition is deprecated. Use bestEffortDeleteIgnition instead.
// +optional
PreserveBootstrapIgnition bool `json:"preserveBootstrapIgnition,omitempty"`
// BestEffortDeleteIgnition is an optional field that can be used to ignore errors from S3 deletion of ignition
// objects during cluster bootstrap. The default behavior is to fail the installation if ignition objects cannot be
// deleted. Enable this functionality when there are known reasons disallowing their deletion.
// +optional
BestEffortDeleteIgnition bool `json:"bestEffortDeleteIgnition,omitempty"`
// PublicIpv4Pool is an optional field that can be used to tell the installation process to use
// Public IPv4 address that you bring to your AWS account with BYOIP.
// +optional
PublicIpv4Pool string `json:"publicIpv4Pool,omitempty"`
// UserProvisionedDNS indicates if the customer is providing their own DNS solution in place of the default
// provisioned by the Installer.
// +kubebuilder:default:="Disabled"
// +default="Disabled"
// +kubebuilder:validation:Enum="Enabled";"Disabled"
UserProvisionedDNS dns.UserProvisionedDNS `json:"userProvisionedDNS,omitempty"`
// IPFamily specifies the IP address family for the cluster network.
// Use "IPv4" for IPv4-only networking, "DualStackIPv4Primary" for dual-stack networking
// with IPv4 as the primary address family, or "DualStackIPv6Primary" for dual-stack
// networking with IPv6 as the primary address family. When using dual-stack, the VPC
// and subnets must be configured with both IPv4 and IPv6 CIDR blocks.
//
// +kubebuilder:default:="IPv4"
// +default="IPv4"
// +kubebuilder:validation:Enum="IPv4";"DualStackIPv4Primary";"DualStackIPv6Primary"
// +optional
IPFamily network.IPFamily `json:"ipFamily,omitempty"`
}
Platform stores all the global configuration that all machinesets use.
func (*Platform) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Platform.
func (*Platform) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceEndpoint ¶ added in v0.4.15
type ServiceEndpoint struct {
// Name is the name of the AWS service.
// This must be provided and cannot be empty.
Name string `json:"name"`
// URL is fully qualified URI with scheme https, that overrides the default generated
// endpoint for a client.
// This must be provided and cannot be empty.
//
// +kubebuilder:validation:Pattern=`^https://`
URL string `json:"url"`
}
ServiceEndpoint store the configuration for services to override existing defaults of AWS Services.
func (*ServiceEndpoint) DeepCopy ¶
func (in *ServiceEndpoint) DeepCopy() *ServiceEndpoint
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceEndpoint.
func (*ServiceEndpoint) DeepCopyInto ¶
func (in *ServiceEndpoint) DeepCopyInto(out *ServiceEndpoint)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Subnet ¶
type Subnet struct {
// ID specifies the subnet ID of an existing subnet.
// The subnet ID must start with "subnet-", consist only of alphanumeric characters,
// and must be exactly 24 characters long.
//
// +required
ID AWSSubnetID `json:"id"`
// Roles specifies the roles (aka functions) that the subnet will provide in the cluster.
// If no roles are specified on any subnet, then the subnet roles are decided automatically.
// Each role must be unique.
//
// +kubebuilder:validation:MaxItems=5
// +optional
Roles []SubnetRole `json:"roles,omitempty"`
}
Subnet specifies a subnet in an existing VPC and can optionally specify their intended roles.
func (*Subnet) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Subnet.
func (*Subnet) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetRole ¶
type SubnetRole struct {
// Type specifies the type of role (aka function) that the subnet will provide in the cluster.
// Role types include ClusterNode, EdgeNode, BootstrapNode, IngressControllerLB, ControlPlaneExternalLB, and ControlPlaneInternalLB.
//
// +required
Type SubnetRoleType `json:"type"`
}
SubnetRole specifies the role (aka function) that the subnet will provide in the cluster.
func (*SubnetRole) DeepCopy ¶
func (in *SubnetRole) DeepCopy() *SubnetRole
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubnetRole.
func (*SubnetRole) DeepCopyInto ¶
func (in *SubnetRole) DeepCopyInto(out *SubnetRole)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SubnetRoleType ¶
type SubnetRoleType string
SubnetRoleType defines the type of role (aka function) that the subnet will provide in the cluster. +kubebuilder:validation:Enum:="ClusterNode";"EdgeNode";"BootstrapNode";"IngressControllerLB";"ControlPlaneExternalLB";"ControlPlaneInternalLB"
const ( // ClusterNodeSubnetRole specifies subnets that will be used as subnets for the // control plane and compute nodes. ClusterNodeSubnetRole SubnetRoleType = "ClusterNode" // EdgeNodeSubnetRole specifies subnets that will be used as edge subnets residing // in Local or Wavelength Zones for edge compute nodes. EdgeNodeSubnetRole SubnetRoleType = "EdgeNode" // BootstrapNodeSubnetRole specifies subnets that will be used as subnets for the // bootstrap node used to create the cluster. BootstrapNodeSubnetRole SubnetRoleType = "BootstrapNode" // IngressControllerLBSubnetRole specifies subnets used by the default IngressController. IngressControllerLBSubnetRole SubnetRoleType = "IngressControllerLB" // ControlPlaneExternalLBSubnetRole specifies subnets used by the external control plane // load balancer that serves the Kubernetes API server. ControlPlaneExternalLBSubnetRole SubnetRoleType = "ControlPlaneExternalLB" // ControlPlaneInternalLBSubnetRole specifies subnets used by the internal control plane // load balancer that serves the Kubernetes API server. ControlPlaneInternalLBSubnetRole SubnetRoleType = "ControlPlaneInternalLB" )
type VPC ¶
type VPC struct {
// Subnets defines the subnets in an existing VPC and can optionally specify their intended roles.
// If no roles are specified on any subnet, then the subnet roles are decided automatically.
// In this case, the VPC must not contain any other non-cluster subnets without the kubernetes.io/cluster/<cluster-id> tag.
//
// For manually specified subnet role selection, each subnet must have at least one assigned role,
// and the ClusterNode, BootstrapNode, IngressControllerLB, ControlPlaneExternalLB, and ControlPlaneInternalLB roles must be assigned to at least one subnet.
// However, if the cluster scope is internal, then ControlPlaneExternalLB is not required.
//
// Subnets must contain unique IDs, and can include no more than 10 subnets with the IngressController role.
//
// Leave this field unset to have the installer create subnets in a new VPC on your behalf.
//
// +listType=atomic
// +optional
Subnets []Subnet `json:"subnets,omitempty"`
}
VPC configures the VPC for the cluster.
func (*VPC) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VPC.
func (*VPC) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.