Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ Support setting maxHealthyPercentage to configure ASG instance refresh #609

Merged
merged 2 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -723,11 +723,10 @@ spec:
- resource-name
type: string
secondaryCidrBlocks:
description: SecondaryCidrBlocks are additional CIDR blocks
to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This
makes sense to use if, for example, you want to use a separate
IP range for pods (e.g. Cilium ENI mode).
description: |-
SecondaryCidrBlocks are additional CIDR blocks to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This makes sense to use if, for example, you want to use
a separate IP range for pods (e.g. Cilium ENI mode).
items:
description: VpcCidrBlock defines the CIDR block and settings
to associate with the managed VPC. Currently, only IPv4
Expand Down Expand Up @@ -2693,11 +2692,10 @@ spec:
- resource-name
type: string
secondaryCidrBlocks:
description: SecondaryCidrBlocks are additional CIDR blocks
to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This
makes sense to use if, for example, you want to use a separate
IP range for pods (e.g. Cilium ENI mode).
description: |-
SecondaryCidrBlocks are additional CIDR blocks to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This makes sense to use if, for example, you want to use
a separate IP range for pods (e.g. Cilium ENI mode).
items:
description: VpcCidrBlock defines the CIDR block and settings
to associate with the managed VPC. Currently, only IPv4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1659,11 +1659,10 @@ spec:
- resource-name
type: string
secondaryCidrBlocks:
description: SecondaryCidrBlocks are additional CIDR blocks
to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This
makes sense to use if, for example, you want to use a separate
IP range for pods (e.g. Cilium ENI mode).
description: |-
SecondaryCidrBlocks are additional CIDR blocks to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This makes sense to use if, for example, you want to use
a separate IP range for pods (e.g. Cilium ENI mode).
items:
description: VpcCidrBlock defines the CIDR block and settings
to associate with the managed VPC. Currently, only IPv4
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1258,12 +1258,10 @@ spec:
- resource-name
type: string
secondaryCidrBlocks:
description: SecondaryCidrBlocks are additional CIDR
blocks to be associated when the provider creates
a managed VPC. Defaults to none. Mutually exclusive
with IPAMPool. This makes sense to use if, for example,
you want to use a separate IP range for pods (e.g.
Cilium ENI mode).
description: |-
SecondaryCidrBlocks are additional CIDR blocks to be associated when the provider creates a managed VPC.
Defaults to none. Mutually exclusive with IPAMPool. This makes sense to use if, for example, you want to use
a separate IP range for pods (e.g. Cilium ENI mode).
items:
description: VpcCidrBlock defines the CIDR block
and settings to associate with the managed VPC.
Expand Down
150 changes: 122 additions & 28 deletions config/crd/bases/infrastructure.cluster.x-k8s.io_awsmachinepools.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -738,26 +738,6 @@ spec:
name:
description: The name of the launch template.
type: string
privateDnsName:
description: PrivateDNSName is the options for the instance hostname.
properties:
enableResourceNameDnsAAAARecord:
description: EnableResourceNameDNSAAAARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
AAAA records.
type: boolean
enableResourceNameDnsARecord:
description: EnableResourceNameDNSARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
A records.
type: boolean
hostnameType:
description: The type of hostname to assign to an instance.
enum:
- ip-name
- resource-name
type: string
type: object
nonRootVolumes:
description: Configuration options for the non root storage volumes.
items:
Expand All @@ -772,21 +752,20 @@ spec:
or not.
type: boolean
encryptionKey:
description: EncryptionKey is the KMS key to use to encrypt
the volume. Can be either a KMS key ID or ARN. If Encrypted
is set and this is omitted, the default AWS key will be
used. The key must already exist and be accessible by
the controller.
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for the
disk. Not applicable to all types.
format: int64
type: integer
size:
description: Size specifies size (in Gi) of the storage
device. Must be greater than the image snapshot size or
8 (whichever is greater).
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
Expand All @@ -803,6 +782,26 @@ spec:
- size
type: object
type: array
privateDnsName:
description: PrivateDNSName is the options for the instance hostname.
properties:
enableResourceNameDnsAAAARecord:
description: EnableResourceNameDNSAAAARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
AAAA records.
type: boolean
enableResourceNameDnsARecord:
description: EnableResourceNameDNSARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
A records.
type: boolean
hostnameType:
description: The type of hostname to assign to an instance.
enum:
- ip-name
- resource-name
type: string
type: object
rootVolume:
description: RootVolume encapsulates the configuration options
for the root volume
Expand Down Expand Up @@ -888,6 +887,89 @@ spec:
description: Ignition defined options related to the bootstrapping
systems where Ignition is used.
properties:
proxy:
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure where this is coming from. Maybe we (I probably) forgot to run make generate in the past?

description: |-
Proxy defines proxy settings for Ignition.
Only valid for Ignition versions 3.1 and above.
properties:
httpProxy:
description: |-
HTTPProxy is the HTTP proxy to use for Ignition.
A single URL that specifies the proxy server to use for HTTP and HTTPS requests,
unless overridden by the HTTPSProxy or NoProxy options.
type: string
httpsProxy:
description: |-
HTTPSProxy is the HTTPS proxy to use for Ignition.
A single URL that specifies the proxy server to use for HTTPS requests,
unless overridden by the NoProxy option.
type: string
noProxy:
description: |-
NoProxy is the list of domains to not proxy for Ignition.
Specifies a list of strings to hosts that should be excluded from proxying.


Each value is represented by:
- An IP address prefix (1.2.3.4)
- An IP address prefix in CIDR notation (1.2.3.4/8)
- A domain name
- A domain name matches that name and all subdomains
- A domain name with a leading . matches subdomains only
- A special DNS label (*), indicates that no proxying should be done


An IP address prefix and domain name can also include a literal port number (1.2.3.4:80).
items:
description: IgnitionNoProxy defines the list of domains
to not proxy for Ignition.
maxLength: 2048
type: string
maxItems: 64
type: array
type: object
storageType:
default: ClusterObjectStore
description: |-
StorageType defines how to store the boostrap user data for Ignition.
This can be used to instruct Ignition from where to fetch the user data to bootstrap an instance.


When omitted, the storage option will default to ClusterObjectStore.


When set to "ClusterObjectStore", if the capability is available and a Cluster ObjectStore configuration
is correctly provided in the Cluster object (under .spec.s3Bucket),
an object store will be used to store bootstrap user data.


When set to "UnencryptedUserData", EC2 Instance User Data will be used to store the machine bootstrap user data, unencrypted.
This option is considered less secure than others as user data may contain sensitive informations (keys, certificates, etc.)
and users with ec2:DescribeInstances permission or users running pods
that can access the ec2 metadata service have access to this sensitive information.
So this is only to be used at ones own risk, and only when other more secure options are not viable.
enum:
- ClusterObjectStore
- UnencryptedUserData
type: string
tls:
description: |-
TLS defines TLS settings for Ignition.
Only valid for Ignition versions 3.1 and above.
properties:
certificateAuthorities:
description: |-
CASources defines the list of certificate authorities to use for Ignition.
The value is the certificate bundle (in PEM format). The bundle can contain multiple concatenated certificates.
Supported schemes are http, https, tftp, s3, arn, gs, and `data` (RFC 2397) URL scheme.
items:
description: IgnitionCASource defines the source of the
certificate authority to use for Ignition.
maxLength: 65536
type: string
maxItems: 64
type: array
type: object
version:
default: "2.3"
description: Version defines which version of Ignition will be
Expand Down Expand Up @@ -987,6 +1069,18 @@ spec:
The default is to use the value for the health check grace period defined for the group.
format: int64
type: integer
maxHealthyPercentage:
description: |-
The amount of capacity as a percentage in ASG that can be in service and healthy, or pending,
to support your workload when replacing instances.
The value is expressed as a percentage of the desired capacity of the ASG. Value range is 100 to 200.
If you specify MaxHealthyPercentage , you must also specify MinHealthyPercentage , and the difference between
them cannot be greater than 100.
A larger range increases the number of instances that can be replaced at the same time.
format: int64
maximum: 200
minimum: 100
type: integer
minHealthyPercentage:
description: |-
The amount of capacity as a percentage in ASG that must remain healthy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -734,26 +734,6 @@ spec:
name:
description: The name of the launch template.
type: string
privateDnsName:
description: PrivateDNSName is the options for the instance hostname.
properties:
enableResourceNameDnsAAAARecord:
description: EnableResourceNameDNSAAAARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
AAAA records.
type: boolean
enableResourceNameDnsARecord:
description: EnableResourceNameDNSARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
A records.
type: boolean
hostnameType:
description: The type of hostname to assign to an instance.
enum:
- ip-name
- resource-name
type: string
type: object
nonRootVolumes:
description: Configuration options for the non root storage volumes.
items:
Expand All @@ -768,21 +748,20 @@ spec:
or not.
type: boolean
encryptionKey:
description: EncryptionKey is the KMS key to use to encrypt
the volume. Can be either a KMS key ID or ARN. If Encrypted
is set and this is omitted, the default AWS key will be
used. The key must already exist and be accessible by
the controller.
description: |-
EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN.
If Encrypted is set and this is omitted, the default AWS key will be used.
The key must already exist and be accessible by the controller.
type: string
iops:
description: IOPS is the number of IOPS requested for the
disk. Not applicable to all types.
format: int64
type: integer
size:
description: Size specifies size (in Gi) of the storage
device. Must be greater than the image snapshot size or
8 (whichever is greater).
description: |-
Size specifies size (in Gi) of the storage device.
Must be greater than the image snapshot size or 8 (whichever is greater).
format: int64
minimum: 8
type: integer
Expand All @@ -799,6 +778,26 @@ spec:
- size
type: object
type: array
privateDnsName:
description: PrivateDNSName is the options for the instance hostname.
properties:
enableResourceNameDnsAAAARecord:
description: EnableResourceNameDNSAAAARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
AAAA records.
type: boolean
enableResourceNameDnsARecord:
description: EnableResourceNameDNSARecord indicates whether
to respond to DNS queries for instance hostnames with DNS
A records.
type: boolean
hostnameType:
description: The type of hostname to assign to an instance.
enum:
- ip-name
- resource-name
type: string
type: object
rootVolume:
description: RootVolume encapsulates the configuration options
for the root volume
Expand Down
Loading
Loading