Skip to content

Commit

Permalink
✨ Support setting maxHealthyPercentage to configure ASG instance refr…
Browse files Browse the repository at this point in the history
…esh (#609)

* Support setting maxHealthyPercentage to configure ASG instance refresh

* Make generate
  • Loading branch information
fiunchinho authored Oct 16, 2024
1 parent 11cb106 commit 65159d8
Show file tree
Hide file tree
Showing 13 changed files with 258 additions and 80 deletions.
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:
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

0 comments on commit 65159d8

Please sign in to comment.