한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 - Amazon EKS

한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사

이 항목에서는 노드가 액세스할 수 없는 리포지토리에서 컨테이너 이미지를 가져와 노드가 액세스할 수 있는 리포지토리에 그 이미지를 푸시하는 방법에 대해 설명합니다. 이미지를 Amazon ECR 또는 노드가 액세스할 수 있는 대체 리포지토리로 푸시할 수 있습니다.

사전 조건
  • 컴퓨터에 설치 및 구성된 Docker 엔진. 자세한 내용은 Docker 설명서의 Docker 엔진 설치 부분을 참조하세요.

  • 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 설치를 참조하세요.

  • 노드가 Amazon 네트워크를 통해 프라이빗 Amazon ECR 리포지토리에서 컨테이너 이미지를 가져오거나 프라이빗 Amazon ECR 리포지토리에 컨테이너 이미지를 푸시하도록 하려는 경우 사용하는 Amazon ECR용 인터페이스 VPC 엔드포인트입니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 Amazon ECR 인터페이스 VPC 엔드포인트 생성 단원을 참조하세요.

다음 단계를 수행하여 리포지토리에서 컨테이너 이미지를 가져와 자체 리포지토리로 푸시합니다. 이 항목에서 제공하는 다음 예제에서는Amazon VPC CNI plugin for Kubernetes metrics helper 에 대한 이미지를 가져옵니다. 다음 단계를 수행할 때 example values을 자체 값으로 교체합니다.

한 리포지토리에서 다른 리포지토리로 컨테이너 이미지 복사 방법
  1. Amazon ECR 리포지토리나 기타 리포지토리가 아직 없다면 노드가 액세스할 수 있는 리포지토리를 생성합니다. 다음 명령은 Amazon ECR 프라이빗 리포지토리를 생성합니다. Amazon ECR 프라이빗 리포지토리 이름은 문자로 시작해야 합니다. 소문자, 숫자, 하이픈(-), 밑줄(_), 슬래시(/)만 포함할 수 있습니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 프라이빗 리포지토리 생성 을 참조하세요.

    cni-metrics-helper을 원하는 것으로 바꿀 수 있습니다. 가장 좋은 방법은 각 이미지에 대해 별도의 리포지토리를 생성하는 것입니다. 리포지토리 내에서 이미지 태그가 고유해야 하므로 이 옵션을 사용하는 것이 좋습니다. region-codeAmazon ECR이 지원하는 AWS 리전으로 변경합니다.

    aws ecr create-repository --region region-code --repository-name cni-metrics-helper
  2. 노드가 가져와야 하는 이미지의 레지스트리, 리포지토리 및 태그(선택 사항)를 결정합니다. 이 정보는 registry/repository[:tag] 형식을 갖습니다.

    이미지 설치에 대한 Amazon EKS 주제 중 다수는 매니페스트 파일을 적용하거나 Helm 차트를 사용하여 이미지를 설치해야 합니다. 그러나 매니페스트 파일을 적용하거나 Helm 차트를 설치하기 전에 먼저 매니페스트 또는 차트의 values.yaml 파일 내용을 검토하십시오. 그렇게 하면 가져올 레지스트리, 리포지토리 및 태그를 결정할 수 있습니다.

    예를 들어, Amazon VPC CNI plugin for Kubernetes metrics helper에 대한 매니페스트 파일에서 다음 라인을 찾을 수 있습니다. 레지스트리는 602401143452.dkr.ecr.us-west-2.amazonaws.com이며, 이는 Amazon ECR 프라이빗 레지스트리입니다. 리포지토리는 cni-metrics-helper입니다.

    image: "602401143452.dkr.ecr.us-west-2.amazonaws.com/cni-metrics-helper:v1.12.6"

    이미지 위치에 대해 다음과 같은 변형이 나타날 수 있습니다.

    • repository-name:tag만 해당합니다. 이 경우 docker.io는 일반적으로 레지스트리이지만 레지스트리가 지정되지 않은 경우 Kubernetes가 기본적으로 리포지토리 이름 앞에 추가하기 때문에 지정되지 않습니다.

    • repository-name/repository-namespace/repository:tag. 리포지토리 네임스페이스는 선택 사항이지만 이미지를 범주화하기 위해 리포지토리 소유자가 지정하는 경우도 있습니다. 예를 들어 모든 Amazon ECR Public Gallery의 Amazon EC2 이미지aws-ec2 네임스페이스를 사용합니다.

    Helm을 사용하여 이미지를 설치하기 전에 Helm values.yaml 파일을 검토하여 이미지 위치를 결정합니다. 예를 들어, Amazon VPC CNI plugin for Kubernetes metrics helper에 대한 values.yaml 파일에는 다음과 같은 내용이 포함됩니다.

    image: region: us-west-2 tag: v1.12.6 account: "602401143452" domain: "amazonaws.com"
  3. 매니페스트 파일에 지정된 컨테이너 이미지를 가져옵니다.

    1. Amazon ECR Public Gallery와 같은 퍼블릭 레지스트리에서 가져오는 경우에는 인증이 필요하지 않으므로 다음 단계로 넘어가도 됩니다. 이 예에서는 CNI 지표 헬퍼 이미지에 대한 리포지토리를 포함하는 Amazon ECR 프라이빗 레지스트리에 대해 인증합니다. Amazon EKS는 Amazon 컨테이너 이미지 레지스트리에 나열된 각 레지스트리에서 이미지를 관리합니다. 602401143452region-code를 다른 레지스트리에 대한 정보로 바꿔 모든 레지스트리에 대해 인증할 수 있습니다. 각각의 Amazon EKS가 지원되는 AWS 리전에 대해 별도의 레지스트리가 있습니다.

      aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 602401143452.dkr.ecr.region-code.amazonaws.com
    2. 이미지를 가져옵니다. 이 예제에서는 이전 하위 단계에서 인증한 레지스트리에서 가져옵니다. 602401143452region-code를 이전 하위 단계에서 제공한 정보로 바꿉니다.

      docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  4. 레지스트리, 리포지토리 및 태그로 가져온 이미지에 태그를 지정합니다. 다음 예제에서는 매니페스트 파일에서 이미지를 가져와서 첫 번째 단계에서 생성한 Amazon ECR 프라이빗 리포지토리로 푸시한다고 가정합니다. 111122223333을 계정 ID로 바꿉니다. region-code를 Amazon ECR 프라이빗 리포지토리를 생성한 AWS 리전으로 바꿉니다.

    docker tag cni-metrics-helper:v1.12.6 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  5. 레지스트리를 인증합니다. 이 예제에서는 첫 번째 단계에서 생성한 Amazon ECR 프라이빗 레지스트리에 대해 인증합니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 레지스트리 권한을 참조하세요.

    aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com
  6. 리포지토리에 이미지를 푸시합니다. 이 예제에서는 첫 번째 단계에서 생성한 Amazon ECR 프라이빗 레지스트리에 이미지를 푸시합니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 Docker 이미지 푸시하기 부분을 참조하세요.

    docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
  7. 푸시한 이미지에 대해 이전 단계에서 이미지를 결정하는데 registry/repository:tag와 함께 사용된 매니페스트 파일을 업데이트합니다. Helm 차트를 사용하여 설치하는 경우 종종 registry/repository:tag를 지정하는 옵션이 있습니다. 차트를 설치할 때 리포지토리에 푸시한 이미지에 대한 registry/repository:tag를 지정합니다.