Amazon EKS 추가 기능 관리 - Amazon EKS

Amazon EKS 추가 기능 관리

Amazon EKS 추가 기능은 Amazon EKS 클러스터용으로 선별된 추가 기능 소프트웨어 세트입니다. 모든 Amazon EKS 추가 기능:

  • 최신 보안 패치 및 버그 수정이 포함됩니다.

  • Amazon EKS와 연동하도록 AWS에서 검증했습니다.

  • 추가 기능 소프트웨어 관리에 필요한 작업량이 감소합니다.

Amazon EKS 추가 기능의 새 버전을 사용할 수 있으면 AWS Management Console에 알림이 표시됩니다. 간단히 업데이트를 시작할 수 있으며 Amazon EKS에서 추가 기능 소프트웨어가 업데이트됩니다.

사용 가능한 추가 기능 목록은 Amazon EKS에서 사용 가능한 Amazon EKS 추가 기능 섹션을 참조하세요. Kubernetes 필드 관리에 대한 자세한 내용은 Kubernetes 필드 관리 부분을 참조하세요.

필수 조건
  • 기존 Amazon EKS 클러스터. 배포하려면 Amazon EKS 시작하기 섹션을 참조하세요.

  • Kubernetes 서비스 계정과 IAM 역할을 사용하는 추가 기능을 생성하는 경우에는 클러스터의 AWS Identity and Access Management(IAM) OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

추가 기능 생성

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 Amazon EKS 추가 기능을 생성할 수 있습니다. 추가 기능에 IAM 역할이 필요한 경우 역할 생성에 대한 자세한 내용은 Amazon EKS에서 사용 가능한 Amazon EKS 추가 기능에서 특정 추가 기능에 대한 세부 정보를 참조하십시오.

eksctl
전제 조건

디바이스 또는 0.172.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. eksctl을 설치 또는 업그레이드하려면 eksctl 설명서에서 Installation을 참조하세요.

eksctl을 사용하여 Amazon EKS 추가 기능을 생성하는 방법
  1. 클러스터 버전에 사용할 수 있는 추가 기능의 이름을 조회합니다. 1.29를 클러스터의 버전으로 바꿉니다.

    eksctl utils describe-addon-versions --kubernetes-version 1.29 | grep AddonName

    예제 출력은 다음과 같습니다.

    "AddonName": "aws-ebs-csi-driver",
                            "AddonName": "coredns",
                            "AddonName": "kube-proxy",
                            "AddonName": "vpc-cni",
                            "AddonName": "adot",
                            "AddonName": "dynatrace_dynatrace-operator",
                            "AddonName": "upbound_universal-crossplane",
                            "AddonName": "teleport_teleport",
                            "AddonName": "factorhouse_kpow",
                            [...]
  2. 생성하려는 추가 기능에 사용할 수 있는 버전을 조회합니다. 1.29를 클러스터의 버전으로 바꿉니다. 버전을 조회하려는 추가 기능의 이름으로 name-of-addon을 바꿉니다. 이름은 이전 단계에서 반환된 이름 중 하나여야 합니다.

    eksctl utils describe-addon-versions --kubernetes-version 1.29 --name name-of-addon | grep AddonVersion

    다음과 같은 출력은 vpc-cni라는 추가 기능에 대해 반환되는 내용의 예입니다. 사용할 수 있는 여러 버전이 추가 기능에 있는지 참조할 수 있습니다.

    "AddonVersions": [
        "AddonVersion": "v1.12.0-eksbuild.1",
        "AddonVersion": "v1.11.4-eksbuild.1",
        "AddonVersion": "v1.10.4-eksbuild.1",
        "AddonVersion": "v1.9.3-eksbuild.1",
  3. 생성하려는 추가 기능이 Amazon EKS 또는 AWS Marketplace 추가 기능인지 결정합니다. AWS Marketplace에는 추가 기능을 생성하려면 추가 단계를 완료해야 하는 타사 추가 기능이 있습니다.

    eksctl utils describe-addon-versions --kubernetes-version 1.29 --name name-of-addon | grep ProductUrl

    출력이 반환되지 않는다면 추가 기능이 Amazon EKS입니다. 출력이 반환된다면 추가 기능이 AWS Marketplace 추가 기능입니다. 다음은 teleport_teleport라는 추가 기능의 출력입니다.

    "ProductUrl": "https://aws.amazon.com/marketplace/pp?sku=3bda70bb-566f-4976-806c-f96faef18b26"

    반환된 URL을 통해 AWS Marketplace에서 추가 기능에 대해 자세히 알아볼 수 있습니다. 추가 기능에 구독이 필요한 경우 AWS Marketplace를 통해 추가 기능을 구독할 수 있습니다. AWS Marketplace 중에서 추가 기능을 생성하려는 경우 추가 기능 생성에 사용하는 IAM 보안 주체AWSServiceRoleForAWSLicenseManagerRole 서비스 연결 역할을 생성하는 권한이 있어야 합니다. IAM 개체에 권한을 할당하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하세요.

  4. Amazon EKS 추가 기능을 생성합니다. 다음 명령을 디바이스에 복사합니다. 필요에 따라 명령을 다음과 같이 수정한 다음에 수정한 명령을 실행합니다.

    • my-cluster를 클러스터 이름으로 바꿉니다.

    • name-of-addon을 생성하려는 추가 기능 이름으로 바꿉니다.

    • 최신 버전보다 이전의 추가 기능 버전을 원하는 경우에는 사용하려는 이전 단계의 출력에서 반환된 버전 번호로 latest를 바꿉니다.

    • 추가 기능에서 서비스 계정 역할을 사용하는 경우 111122223333을 계정 ID로 바꾸고 role-name을 역할 이름으로 바꿉니다. 서비스 계정의 역할 생성에 대한 지침은 생성 중인 추가 기능의 설명서를 참조하세요. 서비스 계정 역할을 지정하려면 클러스터의 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

      추가 기능에서 서비스 계정 역할을 사용하지 않으면 --service-account-role-arn arn:aws:iam::111122223333:role/role-name을 삭제합니다.

    • 이 예시 명령에서는 추가 기능의 기존 자체 관리형 버전(있는 경우)의 구성을 덮어씁니다. 기존 자체 관리형 추가 기능의 구성을 덮어쓰지 않으려면 --force 옵션을 제거합니다. 옵션을 제거하고 Amazon EKS 추가 기능에 기존 자체 관리형 추가 기능 구성을 덮어써야 하는 경우 Amazon EKS 추가 기능의 생성에 실패하고 충돌 해결에 도움이 되는 오류 메시지가 표시됩니다. 이 옵션을 사용하여 이러한 설정을 덮어쓰기 때문에 이 옵션을 지정하기 전에 Amazon EKS 추가 기능이 관리해야 하는 설정을 관리하지 않는지 확인합니다.

      eksctl create addon --cluster my-cluster --name name-of-addon --version latest \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --force

명령에 사용할 수 있는 모든 옵션의 목록을 참조할 수 있습니다.

eksctl create addon --help

사용할 수 있는 옵션에 대한 자세한 내용은 eksctl 설명서의 Addons(추가 기능)를 참조하세요.

AWS Management Console
AWS Management Console을 사용하여 Amazon EKS 추가 기능을 생성하는 방법
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Clusters(클러스터)를 선택한 다음에 추가 기능을 생성할 클러스터의 이름을 선택합니다.

  3. 추가 기능(Add-ons) 탭을 선택합니다.

  4. 추가 기능 더 가져오기를 선택합니다.

  5. 클러스터를 추가할 추가 기능을 선택합니다. Amazon EKS add-ons(Amazon EKS 추가 기능)와 AWS Marketplace add-ons(추가 기능)를 필요한 만큼 추가할 수 있습니다.

    AWS Marketplace 추가 기능의 경우 추가 기능을 생성하는 데 사용 중인 IAM 보안 주체 AWS LicenseManager에서 추가 기능에 대한 자격을 읽는 권한이 있어야 합니다. AWS LicenseManager에는 AWS 리소스에서 자동으로 라이선스를 관리할 수 있는 AWSServiceRoleForAWSLicenseManagerRole SLR(서비스 연결 역할)이 필요합니다. SLR은 계정당 한 번만 필요하므로 각 추가 기능 또는 각 클러스터에 대해 별도의 SLR을 생성할 필요가 없습니다. IAM 보안 주체에 권한을 할당하는 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 삭제를 참조하세요.

    설치하려는 AWS Marketplace 추가 기능이 목록에 없는 경우 검색 상자에 텍스트를 입력하여 사용 가능한 추가 기능을 검색할 수 있습니다. 필터링 옵션에서 카테고리, 공급업체 또는 요금 모델별로 필터링한 다음에 검색 결과 중에서 추가 기능을 선택할 수도 있습니다. 설치할 추가 기능을 선택했으면 Next(다음)를 선택합니다.

  6. Configure selected add-ons settings(선택한 추가 기능 설정 구성) 페이지에서:

    • 구독 옵션 보기를 선택하여 구독 옵션 양식을 엽니다. 가격 세부 정보법률 섹션을 검토한 다음 구독 버튼을 선택하여 계속하세요.

    • Version(버전)의 경우 설치할 버전을 선택합니다. 생성 중인 개별 추가 기능에서 다른 버전이 권장되지 않으면 latest(최신)로 표시된 버전이 좋습니다. 추가 기능에 권장 버전이 있는지 확인하려면 생성 중인 추가 기능의 설명서를 참조하세요.

    • 선택한 모든 추가 기능의 Status(상태) 아래에 Requires subscription(구독 필요)이 있으면 Next(다음)를 선택합니다. 클러스터를 생성한 후 구독할 때까지는 추가로 해당 추가 기능을 구성할 수 없습니다. Status(상태) 아래에 Requires subscription(구독 필요)이 없는 추가 기능의 경우:

      • Select IAM role(IAM 역할 선택)의 경우 추가 기능에 IAM 권한이 필요하지 않으면 기본 옵션을 수락합니다. 추가 기능에 AWS 권한이 필요한 경우 노드의 IAM 역할(설정되지 않음) 또는 추가 기능에 사용하려고 생성한 기존 역할을 선택할 수 있습니다. 선택할 역할이 없는 경우에는 기존 역할이 없는 것입니다. 선택하는 옵션과 관계없이 IAM 정책을 생성하고 역할에 연결하려고 생성 중인 추가 기능의 설명서를 참조하세요. IAM 역할을 선택하려면 클러스터에 대한 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

      • Optional configuration settings(선택적 구성 설정)를 선택합니다.

        • 추가 기능에 구성이 필요하면Configuration values(구성 값) 상자에 해당 구성을 입력합니다. 추가 기능에 구성 정보가 필요한지 확인하려면 생성 중인 추가 기능의 설명서를 참조하세요.

        • Conflict resolution method(충돌 해결 방법)에 사용할 수 있는 옵션 중 하나를 선택합니다.

      • 다음을 선택합니다.

  7. 검토 및 추가 페이지에서 생성을 선택합니다. 추가 기능 설치가 완료되면 설치한 추가 기능이 표시됩니다.

  8. 설치한 추가 기능 중 구독이 필요한 추가 기능이 있으면 다음과 같은 단계를 완료합니다.

    1. 추가 기능의 오른쪽 하단에 있는 Subscribe(구독) 버튼을 선택합니다. AWS Marketplace의 추가 기능 페이지가 나타납니다. Product Overview(제품 개요) 및 Pricing Information(요금 정보)과 같은 추가 기능에 대한 정보를 읽어보세요.

    2. 추가 기능 페이지의 오른쪽 상단에 있는 Continue to Subscribe(계속 구독) 버튼을 선택합니다.

    3. Terms and Conditions(이용 약관)를 모두 읽어보세요. 동의하는 경우 Accept Terms(약관 수락)를 선택합니다. 구독을 처리하는 데 몇 분 정도 걸릴 수 있습니다. 구독이 처리되는 동안에는 Return to Amazon EKS Console(Amazon EKS 콘솔로 돌아가기) 버튼이 회색으로 표시됩니다.

    4. 구독 처리가 완료되면 Return to Amazon EKS Console(Amazon EKS 콘솔로 돌아가기) 버튼이 더는 회색으로 표시되지 않습니다. 버튼을 선택하여 클러스터의 Amazon EKS 콘솔 Add-ons(추가 기능) 탭으로 돌아갑니다.

    5. 구독한 추가 기능의 경우 Remove and reinstall(제거 및 재설치)을 선택한 다음에 Reinstall add-on(추가 기능 재설치)을 선택합니다. 추가 기능을 설치하는 데 몇 분 정도 걸릴 수 있습니다. 설치가 완료되면 추가 기능을 구성할 수 있습니다.

AWS CLI
전제 조건

AWS Command Line Interface(AWS CLI) 버전 2.12.3 이상 또는 1.27.160 이상이 디바이스나 AWS CloudShell에 설치 및 구성되어 있습니다. 현재 버전을 확인하려면 aws --version | cut -d / -f2 | cut -d ' ' -f1을 사용합니다. macOS용 yum, apt-get 또는 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI보다 여러 버전 이전인 경우가 많습니다. 최신 버전을 설치하려면 AWS Command Line Interface 사용 설명서의 AWS CLI 설치, 업데이트 및 제거aws configure를 통한 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 AWS CloudShell 사용 설명서의 홈 디렉터리에 AWS CLI 설치를 참조하세요.

AWS CLI를 사용하여 Amazon EKS 추가 기능을 생성하는 방법
  1. 사용할 수 있는 추가 기능을 확인합니다. 사용할 수 있는 모든 추가 기능, 해당 유형 및 게시자를 참조할 수 있습니다. 사용할 수 있는 추가 기능의 URL도 AWS Marketplace를 통해 참조할 수 있습니다. 1.29를 클러스터의 버전으로 바꿉니다.

    aws eks describe-addon-versions --kubernetes-version 1.29 \ --query 'addons[].{MarketplaceProductUrl: marketplaceInformation.productUrl, Name: addonName, Owner: owner Publisher: publisher, Type: type}' --output table

    예제 출력은 다음과 같습니다.

    ---------------------------------------------------------------------------------------------------------------------------------------------------------
    |                                                                 DescribeAddonVersions                                                                 |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |                     MarketplaceProductUrl                     |             Name              |      Owner       |  Publisher   |        Type         |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+
    |  None                                                         |  aws-ebs-csi-driver           |  aws             |  eks         |  storage            |
    |  None                                                         |  coredns                      |  aws             |  eks         |  networking         |
    |  None                                                         |  kube-proxy                   |  aws             |  eks         |  networking         |
    |  None                                                         |  vpc-cni                      |  aws             |  eks         |  networking         |
    |  None                                                         |  adot                         |  aws             |  eks         |  observability      |
    |  https://aws.amazon.com/marketplace/pp/prodview-brb73nceicv7u |  dynatrace_dynatrace-operator |  aws-marketplace |  dynatrace   |  monitoring         |
    |  https://aws.amazon.com/marketplace/pp/prodview-uhc2iwi5xysoc |  upbound_universal-crossplane |  aws-marketplace |  upbound     |  infra-management   |
    |  https://aws.amazon.com/marketplace/pp/prodview-hd2ydsrgqy4li |  teleport_teleport            |  aws-marketplace |  teleport    |  policy-management  |
    |  https://aws.amazon.com/marketplace/pp/prodview-vgghgqdsplhvc |  factorhouse_kpow             |  aws-marketplace |  factorhouse |  monitoring         |
    |  [...]                                                        |  [...]                        |  [...]           |  [...]       |  [...]              |
    +---------------------------------------------------------------+-------------------------------+------------------+--------------+---------------------+

    출력은 다를 수도 있습니다. 이 예시 출력에는 networking 유형에 사용할 수 있는 3가지 추가 기능과 eks 유형의 게시자가 있는 5가지 추가 기능이 있습니다. Owner 열에 aws-marketplace가 있는 추가 기능을 설치하려면 구독이 필요할 수 있습니다. URL을 방문하여 추가 기능에 대해 자세히 알아보고 구독할 수 있습니다.

  2. 각 추가 기능에 어떤 버전을 사용할 수 있는지 확인할 수 있습니다. 1.29을 클러스터의 버전으로 바꾸고 vpc-cni를 이전 단계에서 반환된 추가 기능 이름으로 바꿉니다.

    aws eks describe-addon-versions --kubernetes-version 1.29 --addon-name vpc-cni \ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table

    예제 출력은 다음과 같습니다.

    ------------------------------------------
    |          DescribeAddonVersions         |
    +-----------------+----------------------+
    | Defaultversion  |       Version        |
    +-----------------+----------------------+
    |  False          |  v1.12.0-eksbuild.1  |
    |  True           |  v1.11.4-eksbuild.1  |
    |  False          |  v1.10.4-eksbuild.1  |
    |  False          |  v1.9.3-eksbuild.1   |
    +-----------------+----------------------+

    기본적으로 Defaultversion 열에 True가 있는 버전이 추가 기능을 생성한 버전입니다.

  3. (선택 사항) 다음과 같은 명령을 실행하여 선택한 추가 기능의 구성 옵션을 찾습니다.

    aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.12.0-eksbuild.1
    {
        "addonName": "vpc-cni",
        "addonVersion": "v1.12.0-eksbuild.1",
        "configurationSchema": "{\"$ref\":\"#/definitions/VpcCni\",\"$schema\":\"http://json-schema.org/draft-06/schema#\",\"definitions\":{\"Cri\":{\"additionalProperties\":false,\"properties\":{\"hostPath\":{\"$ref\":\"#/definitions/HostPath\"}},\"title\":\"Cri\",\"type\":\"object\"},\"Env\":{\"additionalProperties\":false,\"properties\":{\"ADDITIONAL_ENI_TAGS\":{\"type\":\"string\"},\"AWS_VPC_CNI_NODE_PORT_SUPPORT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_ENI_MTU\":{\"format\":\"integer\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CONFIGURE_RPFILTER\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":{\"format\":\"boolean\",\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOGLEVEL\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_RANDOMIZESNAT\":{\"type\":\"string\"},\"AWS_VPC_K8S_CNI_VETHPREFIX\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_FILE\":{\"type\":\"string\"},\"AWS_VPC_K8S_PLUGIN_LOG_LEVEL\":{\"type\":\"string\"},\"DISABLE_INTROSPECTION\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_METRICS\":{\"format\":\"boolean\",\"type\":\"string\"},\"DISABLE_NETWORK_RESOURCE_PROVISIONING\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_POD_ENI\":{\"format\":\"boolean\",\"type\":\"string\"},\"ENABLE_PREFIX_DELEGATION\":{\"format\":\"boolean\",\"type\":\"string\"},\"WARM_ENI_TARGET\":{\"format\":\"integer\",\"type\":\"string\"},\"WARM_PREFIX_TARGET\":{\"format\":\"integer\",\"type\":\"string\"}},\"title\":\"Env\",\"type\":\"object\"},\"HostPath\":{\"additionalProperties\":false,\"properties\":{\"path\":{\"type\":\"string\"}},\"title\":\"HostPath\",\"type\":\"object\"},\"Limits\":{\"additionalProperties\":false,\"properties\":{\"cpu\":{\"type\":\"string\"},\"memory\":{\"type\":\"string\"}},\"title\":\"Limits\",\"type\":\"object\"},\"Resources\":{\"additionalProperties\":false,\"properties\":{\"limits\":{\"$ref\":\"#/definitions/Limits\"},\"requests\":{\"$ref\":\"#/definitions/Limits\"}},\"title\":\"Resources\",\"type\":\"object\"},\"VpcCni\":{\"additionalProperties\":false,\"properties\":{\"cri\":{\"$ref\":\"#/definitions/Cri\"},\"env\":{\"$ref\":\"#/definitions/Env\"},\"resources\":{\"$ref\":\"#/definitions/Resources\"}},\"title\":\"VpcCni\",\"type\":\"object\"}}}"
    }

    출력은 표준 JSON 스키마입니다.

    다음은 위의 스키마와 연동하는 유효한 구성 값의 예시입니다.

    {
      "resources": {
        "limits": {
          "cpu": "100m"
        }
      }
    }

    다음은 위의 스키마와 연동하는 유효한 구성 값의 예시입니다.

      resources: 
        limits: 
          cpu: 100m    
  4. Amazon EKS 추가 기능을 생성합니다. 다음 명령을 디바이스에 복사합니다. 필요에 따라 명령을 다음과 같이 수정한 다음에 수정한 명령을 실행합니다.

    • my-cluster를 클러스터 이름으로 바꿉니다.

    • 생성하려는 이전 단계의 출력에서 반환된 추가 기능 이름으로 vpc-cni를 바꿉니다.

    • 사용하려는 이전 단계의 출력에서 반환된 버전으로 version-number를 바꿉니다.

    • 추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하는 경우 계정 ID로 111122223333을 바꾸고 생성한 기존 IAM 역할의 이름으로 role-name을 바꿉니다. 역할 생성에 대한 지침은 생성 중인 추가 기능의 설명서를 참조하세요. 서비스 계정 역할을 지정하려면 클러스터의 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

      추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하지 않으면 --service-account-role-arn arn:aws:iam::111122223333:role/role-name을 삭제합니다.

    • 이들 예시 명령에서는 추가 기능의 기존 자체 관리형 버전(있는 경우)의 --configuration-values 옵션을 덮어씁니다. 이 값을 문자열이나 파일 입력과 같은 원하는 구성 값으로 바꾸십시오. 구성 값을 제공하지 않으려면 --configuration-values 파라미터를 삭제합니다. AWS CLI로 기존 자체 관리형 추가 기능의 구성을 덮어쓰지 않으려면 --resolve-conflicts OVERWRITE 옵션을 제거합니다. 옵션을 제거하고 Amazon EKS 추가 기능에 기존 자체 관리형 추가 기능 구성을 덮어써야 하는 경우 Amazon EKS 추가 기능의 생성에 실패하고 충돌 해결에 도움이 되는 오류 메시지가 표시됩니다. 이 옵션을 사용하여 이러한 설정을 덮어쓰기 때문에 이 옵션을 지정하기 전에 Amazon EKS 추가 기능이 관리해야 하는 설정을 관리하지 않는지 확인합니다.

    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values '{"resources":{"limits":{"cpu":"100m"}}}' --resolve-conflicts OVERWRITE
    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values 'file://example.yaml' --resolve-conflicts OVERWRITE

    사용할 수 있는 옵션의 전체 목록은 Amazon EKS 명령줄 참조의 create-addon 부분을 참조하세요. 생성한 추가 기능에 이전 단계의 Owner 열에 나열된 aws-marketplace가 있으면 생성에 실패하고 다음과 같은 오류와 비슷한 오류 메시지가 표시될 수 있습니다.

    { "addon": { "addonName": "addon-name", "clusterName": "my-cluster", "status": "CREATE_FAILED", "addonVersion": "version", "health": { "issues": [ { "code": "AddonSubscriptionNeeded", "message": "You are currently not subscribed to this add-on. To subscribe, visit the AWS Marketplace console, agree to the seller EULA, select the pricing type if required, then re-install the add-on" [...]

    이전 출력의 오류와 비슷한 오류가 표시되는 경우 이전 단계의 출력에 있는 URL을 방문하여 추가 기능을 구독합니다. 구독한 후 create-addon 명령을 다시 실행합니다.

추가 기능 업데이트

Amazon EKS에서는 새 버전이 릴리스되거나 새 Kubernetes 마이너 버전으로 클러스터를 업데이트한 후 추가 기능을 자동으로 업데이트하지 않습니다. 기존 클러스터의 추가 기능을 업데이트하려면 업데이트를 시작해야 합니다. 사용자가 업데이트를 시작하면 Amazon EKS에서 추가 기능을 업데이트합니다. 추가 기능을 업데이트하기 전에 추가 기능에 대한 최신 설명서를 검토합니다. 사용 가능한 추가 기능 목록은 Amazon EKS에서 사용 가능한 Amazon EKS 추가 기능 부분을 참조하세요. 추가 기능에 IAM 역할이 필요한 경우 역할 생성에 대한 자세한 내용은 Amazon EKS에서 사용 가능한 Amazon EKS 추가 기능에서 특정 추가 기능에 대한 세부 정보를 참조하십시오.

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 Amazon EKS 추가 기능을 업데이트할 수 있습니다.

eksctl
전제 조건

디바이스 또는 0.172.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. eksctl을 설치 또는 업그레이드하려면 eksctl 설명서에서 Installation을 참조하세요.

eksctl을 사용하여 Amazon EKS 추가 기능을 업데이트하는 방법
  1. 클러스터에 설치된 현재 추가 기능과 추가 기능 버전을 확인합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    eksctl get addon --cluster my-cluster

    예제 출력은 다음과 같습니다.

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 kube-proxy v1.23.7-eksbuild.1 ACTIVE 0 v1.23.8-eksbuild.2 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 v1.12.0-eksbuild.1,v1.11.4-eksbuild.1,v1.11.3-eksbuild.1,v1.11.2-eksbuild.1,v1.11.0-eksbuild.1

    클러스터에 있는 추가 기능과 버전에 따라 출력이 다르게 보일 수 있습니다. 이전 예시 출력에서는 클러스터의 기존 추가 기능2가지에 사용할 수 있는 더 새로운 버전이 UPDATE AVAILABLE 열에 있는 것을 볼 수 있습니다.

  2. 추가 기능을 업데이트합니다.

    1. 다음 명령을 디바이스에 복사합니다. 필요에 따라 명령을 다음과 같이 수정합니다.

      • my-cluster를 클러스터 이름으로 바꿉니다.

      • region-code를 클러스터가 있는 AWS 리전으로 바꿉니다.

      • 업데이트하려는 이전 단계의 출력에서 반환된 추가 기능 이름으로 vpc-cni를 바꿉니다.

      • 사용할 수 있는 최신 버전보다 이전의 버전으로 업데이트하려는 경우에는 사용하려는 이전 단계의 출력에서 반환된 버전 번호로 latest를 바꿉니다. 일부 추가 기능에는 권장 버전이 있습니다. 자세한 내용은 업데이트 중인 추가 기능의 설명서를 참조하세요.

      • 추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하는 경우 계정 ID로 111122223333을 바꾸고 생성한 기존 IAM 역할의 이름으로 role-name을 바꿉니다. 역할 생성에 대한 지침은 생성 중인 추가 기능의 설명서를 참조하세요. 서비스 계정 역할을 지정하려면 클러스터의 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

        추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하지 않으면 serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name 줄을 삭제합니다.

      • preserve 옵션은 추가 기능의 기존 값을 보존합니다. 추가 기능 설정에 사용자 지정 값을 설정하고 이 옵션을 사용하지 않는 경우 Amazon EKS에서는 기본값으로 해당 값을 덮어씁니다. 이 옵션을 사용하는 경우에는 추가 기능을 업데이트하기 전에 프로덕션 클러스터에서 비프로덕션 클러스터의 필드 및 값 변경 사항을 테스트하는 것이 좋습니다. 이 값을 overwrite로 변경하면 모든 설정이 Amazon EKS 기본값으로 변경됩니다. 설정에 사용자 지정 값을 설정한 경우 Amazon EKS 기본값으로 해당 값을 덮어쓸 수도 있습니다. 이 값을 none으로 변경하면 Amazon EKS에서는 설정의 값을 변경하지 않지만 업데이트에 실패할 수도 있습니다. 업데이트에 실패하면 충돌 해결에 도움이 되는 오류 메시지가 표시됩니다.

        cat >update-addon.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code addons: - name: vpc-cni version: latest serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name resolveConflicts: preserve EOF
    2. 수정한 명령을 실행하여 update-addon.yaml 파일을 생성합니다.

    3. 클러스터에 구성 파일을 적용합니다.

      eksctl update addon -f update-addon.yaml

    추가 기능 업데이트에 대한 자세한 내용은 eksctl 설명서의 Addons(추가 기능)를 참조하세요.

AWS Management Console
AWS Management Console를 사용하여 Amazon EKS 추가 기능을 업데이트하는 방법
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Clusters(클러스터)를 선택한 다음에 추가 기능을 구성할 클러스터의 이름을 선택합니다.

  3. 추가 기능(Add-ons) 탭을 선택합니다.

  4. 추가 기능 상자의 오른쪽 상단에 있는 상자를 선택한 다음에 Edit(편집)를 선택합니다.

  5. Configure name of addon(추가 기능 이름 구성) 페이지에서:

    • 사용할 Version(버전)을 선택합니다. 추가 기능에 권장 버전이 있을 수도 있습니다. 자세한 내용은 업데이트 중인 추가 기능의 설명서를 참조하세요.

    • IAM 역할 선택의 경우 노드의 IAM 역할(설정되지 않음) 또는 추가 기능에 사용하려고 생성한 기존 역할을 선택할 수 있습니다. 선택할 역할이 없는 경우에는 기존 역할이 없는 것입니다. 선택하는 옵션과 관계없이 IAM 정책을 생성하고 역할에 연결하려고 생성 중인 추가 기능의 설명서를 참조하세요. IAM 역할을 선택하려면 클러스터에 대한 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

    • Code editor의 경우 추가 기능에 특정 구성 정보를 입력합니다. 자세한 내용은 업데이트 중인 추가 기능의 설명서를 참조하세요.

    • 충돌 해결 방법의 옵션 중 하나를 선택합니다. 추가 기능 설정에 사용자 지정 값을 설정한 경우 Preserve(보존) 옵션이 좋습니다. 이 옵션을 선택하지 않으면 Amazon EKS에서 기본값으로 해당 값을 덮어씁니다. 이 옵션을 사용하는 경우에는 추가 기능을 업데이트하기 전에 프로덕션 클러스터에서 비프로덕션 클러스터의 필드 및 값 변경 사항을 테스트하는 것이 좋습니다.

  6. 업데이트를 선택합니다.

AWS CLI
전제 조건

AWS Command Line Interface(AWS CLI) 버전 2.12.3 이상 또는 1.27.160 이상이 디바이스나 AWS CloudShell에 설치 및 구성되어 있습니다. 현재 버전을 확인하려면 aws --version | cut -d / -f2 | cut -d ' ' -f1을 사용합니다. macOS용 yum, apt-get 또는 Homebrew와 같은 패키지 관리자는 최신 버전의 AWS CLI보다 여러 버전 이전인 경우가 많습니다. 최신 버전을 설치하려면 AWS Command Line Interface 사용 설명서의 AWS CLI 설치, 업데이트 및 제거aws configure를 통한 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 여러 버전 이전일 수도 있습니다. 업데이트하려면 AWS CloudShell 사용 설명서의 홈 디렉터리에 AWS CLI 설치를 참조하세요.

AWS CLI를 사용하여 Amazon EKS 추가 기능을 업데이트하는 방법
  1. 설치한 추가 기능 목록을 참조합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    aws eks list-addons --cluster-name my-cluster

    예제 출력은 다음과 같습니다.

    { "addons": [ "coredns", "kube-proxy", "vpc-cni" ] }
  2. 업데이트할 추가 기능의 현재 버전을 조회합니다. my-cluster를 클러스터 이름으로 바꾸고 업데이트할 추가 기능의 이름으로 vpc-cni를 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    예제 출력은 다음과 같습니다.

    v1.10.4-eksbuild.1
  3. 클러스터의 버전에 어떤 추가 기능의 버전을 사용할 수 있는지 확인할 수 있습니다. 1.29를 클러스터의 버전으로 바꾸고 업데이트할 추가 기능의 이름으로 vpc-cni를 바꿉니다.

    aws eks describe-addon-versions --kubernetes-version 1.29 --addon-name vpc-cni \ --query 'addons[].addonVersions[].{Version: addonVersion, Defaultversion: compatibilities[0].defaultVersion}' --output table

    예제 출력은 다음과 같습니다.

    ------------------------------------------
    |          DescribeAddonVersions         |
    +-----------------+----------------------+
    | Defaultversion  |       Version        |
    +-----------------+----------------------+
    |  False          |  v1.12.0-eksbuild.1  |
    |  True           |  v1.11.4-eksbuild.1  |
    |  False          |  v1.10.4-eksbuild.1  |
    |  False          |  v1.9.3-eksbuild.1   |
    +-----------------+----------------------+

    기본적으로 Defaultversion 열에 True가 있는 버전이 추가 기능을 생성한 버전입니다.

  4. 추가 기능을 업데이트합니다. 다음 명령을 디바이스에 복사합니다. 필요에 따라 명령을 다음과 같이 수정한 다음에 수정한 명령을 실행합니다.

    • my-cluster를 클러스터 이름으로 바꿉니다.

    • 업데이트하려는 이전 단계의 출력에서 반환된 추가 기능 이름으로 vpc-cni를 바꿉니다.

    • 업데이트하려는 이전 단계의 출력에서 반환된 버전으로 version-number를 바꿉니다. 일부 추가 기능에는 권장 버전이 있습니다. 자세한 내용은 업데이트 중인 추가 기능의 설명서를 참조하세요.

    • 추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하는 경우 계정 ID로 111122223333을 바꾸고 생성한 기존 IAM 역할의 이름으로 role-name을 바꿉니다. 역할 생성에 대한 지침은 생성 중인 추가 기능의 설명서를 참조하세요. 서비스 계정 역할을 지정하려면 클러스터의 IAM OpenID Connect(OIDC) 제공업체가 있어야 합니다. 클러스터의 해당 제공업체가 이미 있는지 아니면 생성해야 하는지 결정하려면 클러스터의 IAM OIDC 제공업체 생성 섹션을 참조하세요.

      추가 기능에서 Kubernetes 서비스 계정과 IAM 역할을 사용하지 않으면 serviceAccountRoleARN: arn:aws:iam::111122223333:role/role-name 줄을 삭제합니다.

    • --resolve-conflicts PRESERVE(보존) 옵션에서는 추가 기능의 기존 값을 보존합니다. 추가 기능 설정에 사용자 지정 값을 설정하고 이 옵션을 사용하지 않는 경우 Amazon EKS에서는 기본값으로 해당 값을 덮어씁니다. 이 옵션을 사용하는 경우에는 추가 기능을 업데이트하기 전에 프로덕션 클러스터에서 비프로덕션 클러스터의 필드 및 값 변경 사항을 테스트하는 것이 좋습니다. 이 값을 overwrite로 변경하면 모든 설정이 Amazon EKS 기본값으로 변경됩니다. 설정에 사용자 지정 값을 설정한 경우 Amazon EKS 기본값으로 해당 값을 덮어쓸 수도 있습니다. 이 값을 none으로 변경하면 Amazon EKS에서는 설정의 값을 변경하지 않지만 업데이트에 실패할 수도 있습니다. 업데이트에 실패하면 충돌 해결에 도움이 되는 오류 메시지가 표시됩니다.

    • 모든 사용자 지정 구성을 제거하려면 --configuration-values '{}'옵션을 사용하여 업데이트를 수행하십시오. 그러면 모든 사용자 지정 구성이 기본값으로 되돌아갑니다. 사용자 지정 구성을 변경하지 않으려는 경우에는 --configuration-values 플래그를 제공하지 마세요. 사용자 지정 구성을 조정하려는 경우에는 {} 부분을 새 파라미터로 바꿉니다. 파라미터 목록을 참조하려면 추가 기능 생성 부분의 구성 스키마 보기 단계를 참조하세요.

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version version-number \ --service-account-role-arn arn:aws:iam::111122223333:role/role-name --configuration-values '{}' --resolve-conflicts PRESERVE
  5. 업데이트 상태를 확인합니다. my-cluster를 클러스터 이름으로 바꾸고 업데이트 중인 추가 기능의 이름으로 vpc-cni를 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    예제 출력은 다음과 같습니다.

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "UPDATING", [...]

    상태가 ACTIVE라면 업데이트가 완료된 것입니다.

추가 기능 삭제

Amazon EKS 추가 기능을 삭제하는 경우:

  • 추가 기능에서 제공되는 기능의 가동 중지 시간이 없습니다.

  • 추가 기능에 연결된 IAM 역할이 있는 경우 IAM 역할은 제거되지 않습니다.

  • Amazon EKS에서는 추가 기능의 설정 관리를 중지합니다.

  • 새 버전이 사용할 수 있을 때 콘솔의 알림 표시가 중지됩니다.

  • AWS 도구 또는 API를 사용하여 추가 기능을 업데이트할 수 없습니다.

  • 자체 관리할 수 있도록 클러스터에 추가 기능 소프트웨어 남겨두기를 선택하거나 클러스터에서 추가 기능 소프트웨어를 제거할 수 있습니다. 추가 기능에서 제공되는 기능에 종속되는 리소스가 클러스터에 없는 경우에만 클러스터에서 추가 기능 소프트웨어을 제거해야 합니다.

eksctl, AWS Management Console 또는 AWS CLI를 사용하여 클러스터에서 Amazon EKS 추가 기능을 삭제할 수 있습니다.

eksctl
전제 조건

디바이스 또는 0.172.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. eksctl을 설치 또는 업그레이드하려면 eksctl 설명서에서 Installation을 참조하세요.

eksctl을 사용하여 Amazon EKS 추가 기능을 삭제하는 방법
  1. 클러스터에 설치된 현재 추가 기능을 확인합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    eksctl get addon --cluster my-cluster

    예제 출력은 다음과 같습니다.

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 kube-proxy v1.23.7-eksbuild.1 ACTIVE 0 vpc-cni v1.10.4-eksbuild.1 ACTIVE 0 [...]

    클러스터에 있는 추가 기능과 버전에 따라 출력이 다르게 보일 수 있습니다.

  2. 추가 기능을 삭제합니다. my-cluster를 클러스터의 이름으로 바꾸고 제거하려는 이전 단계의 출력에서 반환된 추가 기능의 이름으로 name-of-add-on을 바꿉니다. --preserve 옵션을 제거하면 Amazon EKS에서 더는 추가 기능을 관리하지 않을 뿐만 아니라 클러스터에서 추가 기능 소프트웨어가 제거됩니다.

    eksctl delete addon --cluster my-cluster --name name-of-addon --preserve
AWS Management Console
AWS Management Console를 사용하여 Amazon EKS 추가 기능을 삭제하는 방법
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Clusters(클러스터)를 선택한 다음에 Amazon EKS 추가 기능을 제거하려는 클러스터의 이름을 선택합니다.

  3. 추가 기능(Add-ons) 탭을 선택합니다.

  4. 추가 기능 상자의 오른쪽 상단에서 확인란을 선택한 다음에 Remove(제거)를 선택합니다. Amazon EKS에서 추가 기능의 설정 관리를 중지하되 추가 기능의 모든 설정을 자체 관리할 수 있도록 클러스터에 추가 기능 소프트웨어를 유지하려는 경우 Preserve on the cluster(클러스터에 보존)를 선택합니다. 추가 기능 이름을 입력한 다음에Remove(제거)를 선택합니다.

AWS CLI
전제 조건

디바이스 또는 0.172.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. eksctl을 설치 또는 업그레이드하려면 eksctl 설명서에서 Installation을 참조하세요.

AWS CLI를 사용하여 Amazon EKS 추가 기능을 삭제하는 방법
  1. 설치한 추가 기능 목록을 참조합니다. my-cluster를 클러스터 이름으로 바꿉니다.

    aws eks list-addons --cluster-name my-cluster

    예제 출력은 다음과 같습니다.

    { "addons": [ "coredns", "kube-proxy", "vpc-cni", "name-of-addon" ] }
  2. 설치한 추가 기능을 삭제합니다. my-cluster를 클러스터 이름으로 바꾸고 제거할 추가 기능의 이름으로 name-of-add-on을 바꿉니다. --preserve를 제거하면 클러스터에서 추가 기능 소프트웨어가 제거됩니다.

    aws eks delete-addon --cluster-name my-cluster --addon-name name-of-addon --preserve

    축약한 예시 출력은 다음과 같습니다.

    { "addon": { "addonName": "name-of-add-on", "clusterName": "my-cluster", "status": "DELETING", [...]
  3. 삭제 상태를 확인합니다. my-cluster를 클러스터 이름으로 바꾸고 제거할 추가 기능의 이름으로 name-of-addon를 바꿉니다.

    aws eks describe-addon --cluster-name my-cluster --addon-name name-of-addon

    추가 기능이 삭제된 후의 예시 출력은 다음과 같습니다.

    An error occurred (ResourceNotFoundException) when calling the DescribeAddon operation: No addon: name-of-addon found in cluster: my-cluster