EKS 1.29 -> 1.30 issuer_url error Fix

EKS 1.29 -> 1.30 로 테라폼으로 업그레이드 할 때 아래의 에러가 날 수 있습니다.

$ terraform plan -var-file=.auto.tfvars
╷
│ Error: Missing required argument
│
│   with module.eks.aws_eks_identity_provider_config.this["sts"],
│   on .terraform/modules/eks/main.tf line 588, in resource "aws_eks_identity_provider_config" "this":
│  588:     issuer_url      = try(each.value.issuer_url, local.idpc_issuer_url)
│
│ The argument "oidc.0.issuer_url" is required, but no definition was found.

    output "oidc_issuer_url" {
        value = module.eks.cluster_oidc_issuer_url

이런 에러가 나는 1.29 버전의 테라폼 스크립트는 다음과 같습니다.

module "eks" {
  source  = "terraform-aws-modules/eks/aws"
  version = "~> 20.0"

  cluster_name                    = local.name
  cluster_version                 = "1.30" # => 30
  cluster_endpoint_private_access = true
  cluster_endpoint_public_access  = true
  create_cloudwatch_log_group     = false

  ~~

  cluster_identity_providers = {
    sts = {
      client_id = "sts.amazonaws.com"
    }
  }  

즉, cluster_identity_providers 에 issuer_url이 누락되었다는 에러로 아래와 같이 값을 얻어낼 수 있습니다.

$ aws eks describe-cluster --name topzone-k8s --region ap-northeast-2 --query "cluster.identity.oidc.issuer" --output text

그 값을 테라폼에 적용한 후에

    cluster_identity_providers = {
      sts = {
        client_id = "sts.amazonaws.com"
        issuer_url = "https://oidc.eks.ap-northeast-2.amazonaws.com/id/1907C9BCD0E80760BB636DAC6383031A"
      }
    } 

다시 apply하면 EKS과 node_group 버전 뿐 아니라 Add-on 도 자동으로 아래와 같이 업그레이드 됩니다.

terraform apply -var-file=.auto.tfvars -auto-approve

 

~ cluster_addons                                   = {
    ~ coredns                = {
        ~ addon_version               = "v1.11.1-eksbuild.4" -> "v1.11.1-eksbuild.8"
          id                          = "topzone-k8s:coredns"
          tags                        = {
              application = "topzone-k8s"
              environment = "prod"
          }
          # (14 unchanged attributes hidden)
      }
    ~ kube-proxy             = {
        ~ addon_version               = "v1.29.0-eksbuild.1" -> "v1.30.0-eksbuild.3"
          id                          = "topzone-k8s:kube-proxy"
          tags                        = {
              application = "topzone-k8s"
              environment = "prod"
          }
          # (14 unchanged attributes hidden)
      }
    ~ vpc-cni                = {
        ~ addon_version               = "v1.16.0-eksbuild.1" -> "v1.18.1-eksbuild.3"
          id                          = "topzone-k8s:vpc-cni"
          tags                        = {
              application = "topzone-k8s"
              environment = "prod"
          }
          # (14 unchanged attributes hidden)
      }

 

댓글을 작성해보세요.

채널톡 아이콘