eks.tf 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. resource "aws_eks_cluster" "this" {
  2. name = var.name
  3. role_arn = aws_iam_role.cluster.arn
  4. version = var.kubernetes_version
  5. access_config {
  6. authentication_mode = "API_AND_CONFIG_MAP"
  7. bootstrap_cluster_creator_admin_permissions = true
  8. }
  9. vpc_config {
  10. endpoint_private_access = var.cluster_endpoint_private_access
  11. endpoint_public_access = var.cluster_endpoint_public_access
  12. public_access_cidrs = var.cluster_public_access_cidrs
  13. subnet_ids = local.private_subnet_ids
  14. }
  15. depends_on = [
  16. aws_iam_role_policy_attachment.cluster_policy
  17. ]
  18. tags = local.common_tags
  19. }
  20. resource "aws_eks_node_group" "default" {
  21. cluster_name = aws_eks_cluster.this.name
  22. node_group_name = "${var.name}-default"
  23. node_role_arn = aws_iam_role.node.arn
  24. subnet_ids = local.private_subnet_ids
  25. version = var.kubernetes_version
  26. disk_size = var.node_disk_size
  27. capacity_type = var.node_capacity_type
  28. instance_types = var.node_instance_types
  29. scaling_config {
  30. desired_size = var.node_desired_size
  31. min_size = var.node_min_size
  32. max_size = var.node_max_size
  33. }
  34. update_config {
  35. max_unavailable = 1
  36. }
  37. depends_on = [
  38. aws_iam_role_policy_attachment.node_worker_policy,
  39. aws_iam_role_policy_attachment.node_cni_policy,
  40. aws_iam_role_policy_attachment.node_ecr_policy
  41. ]
  42. tags = local.common_tags
  43. }
  44. resource "aws_eks_access_entry" "cluster_admins" {
  45. for_each = toset(var.cluster_admin_principal_arns)
  46. cluster_name = aws_eks_cluster.this.name
  47. principal_arn = each.value
  48. type = "STANDARD"
  49. tags = local.common_tags
  50. }
  51. resource "aws_eks_access_policy_association" "cluster_admins" {
  52. for_each = aws_eks_access_entry.cluster_admins
  53. cluster_name = aws_eks_cluster.this.name
  54. principal_arn = each.value.principal_arn
  55. policy_arn = "arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy"
  56. access_scope {
  57. type = "cluster"
  58. }
  59. }
  60. resource "aws_eks_access_entry" "node_role" {
  61. cluster_name = aws_eks_cluster.this.name
  62. principal_arn = aws_iam_role.node.arn
  63. type = "EC2_LINUX"
  64. tags = local.common_tags
  65. }
  66. resource "aws_eks_addon" "coredns" {
  67. cluster_name = aws_eks_cluster.this.name
  68. addon_name = "coredns"
  69. addon_version = var.coredns_addon_version
  70. resolve_conflicts_on_create = "OVERWRITE"
  71. resolve_conflicts_on_update = "OVERWRITE"
  72. depends_on = [aws_eks_node_group.default]
  73. tags = local.common_tags
  74. }
  75. resource "aws_eks_addon" "kube_proxy" {
  76. cluster_name = aws_eks_cluster.this.name
  77. addon_name = "kube-proxy"
  78. addon_version = var.kube_proxy_addon_version
  79. resolve_conflicts_on_create = "OVERWRITE"
  80. resolve_conflicts_on_update = "OVERWRITE"
  81. depends_on = [aws_eks_node_group.default]
  82. tags = local.common_tags
  83. }
  84. resource "aws_eks_addon" "vpc_cni" {
  85. cluster_name = aws_eks_cluster.this.name
  86. addon_name = "vpc-cni"
  87. addon_version = var.vpc_cni_addon_version
  88. resolve_conflicts_on_create = "OVERWRITE"
  89. resolve_conflicts_on_update = "OVERWRITE"
  90. depends_on = [aws_eks_node_group.default]
  91. tags = local.common_tags
  92. }
  93. resource "aws_eks_addon" "pod_identity_agent" {
  94. cluster_name = aws_eks_cluster.this.name
  95. addon_name = "eks-pod-identity-agent"
  96. addon_version = var.pod_identity_agent_addon_version
  97. resolve_conflicts_on_create = "OVERWRITE"
  98. resolve_conflicts_on_update = "OVERWRITE"
  99. depends_on = [aws_eks_node_group.default]
  100. tags = local.common_tags
  101. }