mirror of
https://github.com/ysoftdevs/terraform-aws-eks.git
synced 2026-05-01 12:54:29 +02:00
feat: Support additional cluster DNS IPs with Bottlerocket based AMIs (#3051)
* Support adding additional cluster dns ranges to bottlerocket template * Add example for multiple dns ips * fmt, and tf docs * fix: Use a list by default for cluster-dns-ip --------- Co-authored-by: Bryant Biggs <bryantbiggs@gmail.com>
This commit is contained in:
@@ -36,6 +36,7 @@ No modules.
|
||||
|
||||
| Name | Description | Type | Default | Required |
|
||||
|------|-------------|------|---------|:--------:|
|
||||
| <a name="input_additional_cluster_dns_ips"></a> [additional\_cluster\_dns\_ips](#input\_additional\_cluster\_dns\_ips) | Additional DNS IP addresses to use for the cluster. Only used when `ami_type` = `BOTTLEROCKET_*` | `list(string)` | `[]` | no |
|
||||
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the EKS Node Group. See the [AWS documentation](https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid values | `string` | `null` | no |
|
||||
| <a name="input_bootstrap_extra_args"></a> [bootstrap\_extra\_args](#input\_bootstrap\_extra\_args) | Additional arguments passed to the bootstrap script. When `ami_type` = `BOTTLEROCKET_*`; these are additional [settings](https://github.com/bottlerocket-os/bottlerocket#settings) that are provided to the Bottlerocket user data | `string` | `""` | no |
|
||||
| <a name="input_cloudinit_post_nodeadm"></a> [cloudinit\_post\_nodeadm](#input\_cloudinit\_post\_nodeadm) | Array of cloud-init document parts that are created after the nodeadm document part | <pre>list(object({<br> content = string<br> content_type = optional(string)<br> filename = optional(string)<br> merge_type = optional(string)<br> }))</pre> | `[]` | no |
|
||||
|
||||
@@ -43,6 +43,7 @@ locals {
|
||||
}
|
||||
|
||||
cluster_service_cidr = try(coalesce(var.cluster_service_ipv4_cidr, var.cluster_service_cidr), "")
|
||||
cluster_dns_ips = flatten(concat([try(cidrhost(local.cluster_service_cidr, 10), "")], var.additional_cluster_dns_ips))
|
||||
|
||||
user_data = base64encode(templatefile(
|
||||
coalesce(var.user_data_template_path, local.template_path[local.user_data_type]),
|
||||
@@ -57,8 +58,9 @@ locals {
|
||||
|
||||
cluster_service_cidr = local.cluster_service_cidr
|
||||
cluster_ip_family = var.cluster_ip_family
|
||||
|
||||
# Bottlerocket
|
||||
cluster_dns_ip = try(cidrhost(local.cluster_service_cidr, 10), "")
|
||||
cluster_dns_ips = "[${join(", ", formatlist("\"%s\"", local.cluster_dns_ips))}]"
|
||||
|
||||
# Optional
|
||||
bootstrap_extra_args = var.bootstrap_extra_args
|
||||
|
||||
@@ -58,6 +58,12 @@ variable "cluster_ip_family" {
|
||||
default = "ipv4"
|
||||
}
|
||||
|
||||
variable "additional_cluster_dns_ips" {
|
||||
description = "Additional DNS IP addresses to use for the cluster. Only used when `ami_type` = `BOTTLEROCKET_*`"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
# TODO - remove at next breaking change
|
||||
variable "cluster_service_ipv4_cidr" {
|
||||
description = "[Deprecated] The CIDR block to assign Kubernetes service IP addresses from. If you don't specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks"
|
||||
|
||||
@@ -82,6 +82,7 @@ module "self_managed_node_group" {
|
||||
|
||||
| Name | Description | Type | Default | Required |
|
||||
|------|-------------|------|---------|:--------:|
|
||||
| <a name="input_additional_cluster_dns_ips"></a> [additional\_cluster\_dns\_ips](#input\_additional\_cluster\_dns\_ips) | Additional DNS IP addresses to use for the cluster. Only used when `ami_type` = `BOTTLEROCKET_*` | `list(string)` | `[]` | no |
|
||||
| <a name="input_ami_id"></a> [ami\_id](#input\_ami\_id) | The AMI from which to launch the instance | `string` | `""` | no |
|
||||
| <a name="input_ami_type"></a> [ami\_type](#input\_ami\_type) | Type of Amazon Machine Image (AMI) associated with the node group. See the [AWS documentation](https://docs.aws.amazon.com/eks/latest/APIReference/API_Nodegroup.html#AmazonEKS-Type-Nodegroup-amiType) for valid values | `string` | `"AL2_x86_64"` | no |
|
||||
| <a name="input_autoscaling_group_tags"></a> [autoscaling\_group\_tags](#input\_autoscaling\_group\_tags) | A map of additional tags to add to the autoscaling group created. Tags are applied to the autoscaling group only and are NOT propagated to instances | `map(string)` | `{}` | no |
|
||||
|
||||
@@ -65,11 +65,12 @@ module "user_data" {
|
||||
ami_type = var.ami_type
|
||||
is_eks_managed_node_group = false
|
||||
|
||||
cluster_name = var.cluster_name
|
||||
cluster_endpoint = var.cluster_endpoint
|
||||
cluster_auth_base64 = var.cluster_auth_base64
|
||||
cluster_ip_family = var.cluster_ip_family
|
||||
cluster_service_cidr = var.cluster_service_cidr
|
||||
cluster_name = var.cluster_name
|
||||
cluster_endpoint = var.cluster_endpoint
|
||||
cluster_auth_base64 = var.cluster_auth_base64
|
||||
cluster_ip_family = var.cluster_ip_family
|
||||
cluster_service_cidr = var.cluster_service_cidr
|
||||
additional_cluster_dns_ips = var.additional_cluster_dns_ips
|
||||
|
||||
enable_bootstrap_user_data = true
|
||||
pre_bootstrap_user_data = var.pre_bootstrap_user_data
|
||||
|
||||
@@ -50,6 +50,12 @@ variable "cluster_ip_family" {
|
||||
default = "ipv4"
|
||||
}
|
||||
|
||||
variable "additional_cluster_dns_ips" {
|
||||
description = "Additional DNS IP addresses to use for the cluster. Only used when `ami_type` = `BOTTLEROCKET_*`"
|
||||
type = list(string)
|
||||
default = []
|
||||
}
|
||||
|
||||
variable "pre_bootstrap_user_data" {
|
||||
description = "User data that is injected into the user data script ahead of the EKS bootstrap script. Not used when `ami_type` = `BOTTLEROCKET_*`"
|
||||
type = string
|
||||
|
||||
Reference in New Issue
Block a user