😸
TerraformでEKS Fargateを作成
概要
Terraform aws eks moduleを使ってEKS FargateをTerraformで作成していきます
TerraformでEKS Fargateを構築する際、問題だったのがCoreDNSの更新問題です。
上記記事にもありますが、デフォルトではCoreDNSはEC2で実行される様になっているため、そのままの状態でFargateでpodを動かそうとすると、deploymentをapplyしてもRUNNINGにならないという問題があります。
なので、null_resourceのlocal-execなどでローカルマシンからkubectl patchをして、corednsをrollout restartさせるなどが必要でしたが、Terraform aws eks moduleのver19.1.0以降は手動でのリスタートなどは不要になり、TerraformでスムーズにEKS Fargateが構築できる様になりました
環境
- Terraform 1.4.6
- terraform aws eks module 19.15.1
eks.tf
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "19.15.1"
cluster_version = "1.26"
cluster_name = "sample-cluster"
vpc_id = var.vpc_id
subnet_ids = var.vpc_private_subnet_ids
control_plane_subnet_ids = var.vpc_public_subnet_ids
cluster_endpoint_public_access = true
manage_aws_auth_configmap = true
enable_irsa = true
create_cluster_security_group = false
create_node_security_group = false
cluster_addons = {
kube-proxy = {}
vpc-cni = {}
# ここが大事
coredns = {
configuration_values = jsonencode({
computeType = "Fargate"
})
}
}
aws_auth_users = var.auth_users
aws_auth_roles = var.auth_roles
fargate_profiles = {
default = {
name = "default"
selectors = [
{
namespace = "default"
},
{
namespace = "kube-system"
}
]
}
}
cluster_enabled_log_types = ["api", "audit", "authenticator", "controllerManager", "scheduler"]
tags = var.tags
}
Discussion