한 저장소에서 다른 저장소로 컨테이너 이미지 복사
한 저장소에서 다른 저장소로 컨테이너 이미지 복사
이 주제는 노드가 액세스할 수 없는 저장소에서 컨테이너 이미지를 가져와(pull) 노드가 액세스할 수 있는 저장소에 푸시(push)하는 방법을 설명합니다. Amazon ECR이나 노드가 액세스할 수 있는 대체 저장소에 이미지를 푸시할 수 있습니다.
출처: 문서
본문
사전 요구 사항
- 컴퓨터에 Docker 엔진이 설치되고 구성되어 있습니다. 지침은 Docker 문서의 Install Docker Engine을 참조하세요.
- 기기나 AWS CloudShell에 AWS Command Line Interface(AWS CLI) 버전
2.12.3이상 또는1.27.160이상이 설치되고 구성되어 있습니다. 현재 버전을 확인하려면aws --version | cut -d / -f2 | cut -d ' ' -f1을 사용합니다.yum,apt-get, macOS용 Homebrew 같은 패키지 관리자는 AWS CLI 최신 버전보다 몇 버전 뒤처져 있는 경우가 많습니다. 최신 버전을 설치하려면 AWS Command Line Interface User Guide에서 Installing 및 aws configure로 빠른 구성을 참조하세요. AWS CloudShell에 설치된 AWS CLI 버전도 최신 버전보다 뒤처져 있을 수 있습니다. 업데이트하려면 AWS CloudShell User Guide에서 홈 디렉터리에 AWS CLI 설치를 참조하세요. - 노드가 Amazon 네트워크를 통해 프라이빗 Amazon ECR 저장소에서 컨테이너 이미지를 가져오거나 푸시하려면 Amazon ECR용 인터페이스 VPC 엔드포인트가 필요합니다. 자세한 내용은 Amazon Elastic Container Registry User Guide에서 Amazon ECR용 VPC 엔드포인트 생성을 참조하세요.
절차
다음 단계를 완료하여 저장소에서 컨테이너 이미지를 가져와 자체 저장소에 푸시합니다. 이 주제에서 제공하는 다음 예시에서는 Amazon VPC CNI 플러그인 for Kubernetes metrics helper용 이미지를 가져옵니다. 이 단계를 따를 때 예시 값을 사용자의 값으로 바꾸세요.
아직 Amazon ECR 저장소나 다른 저장소가 없다면 노드가 액세스할 수 있는 저장소를 만듭니다. 다음 명령은 Amazon ECR 프라이빗 저장소를 만듭니다. Amazon ECR 프라이빗 저장소 이름은 문자로 시작해야 합니다. 소문자, 숫자, 하이픈(-), 밑줄(_), 슬래시(/)만 포함할 수 있습니다. 자세한 내용은 Amazon Elastic Container Registry User Guide의 프라이빗 저장소 생성을 참조하세요.
cni-metrics-helper를 원하는 이름으로 바꿀 수 있습니다. 모범 사례로 각 이미지에 대해 별도의 저장소를 만드세요. 이미지 태그는 저장소 안에서 고유해야 하므로 이를 권장합니다. region-code를 Amazon ECR이 지원하는 AWS 리전으로 바꿉니다.
aws ecr create-repository --region region-code --repository-name cni-metrics-helper
노드가 가져와야 하는 이미지의 레지스트리, 저장소, 태그(선택)를 결정합니다. 이 정보는 registry/repository[:tag] 형식입니다.
Amazon EKS의 많은 이미지 설치 주제는 매니페스트 파일을 적용하거나 Helm 차트로 이미지를 설치하도록 요구합니다. 그러나 매니페스트 파일을 적용하거나 Helm 차트를 설치하기 전에 먼저 매니페스트나 차트의 values.yaml 파일 내용을 보세요. 그러면 가져올 레지스트리, 저장소, 태그를 결정할 수 있습니다.
예를 들어 Amazon VPC CNI 플러그인 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 플러그인 for Kubernetes metrics helper의 values.yaml 파일은 다음 줄을 포함합니다.
image:
region: us-west-2
tag: v1.12.6
account: "602401143452"
domain: "amazonaws.com"
매니페스트 파일에 지정된 컨테이너 이미지를 가져옵니다.
Amazon ECR Public Gallery 같은 퍼블릭 레지스트리에서 가져온다면 인증이 필요하지 않으므로 다음 하위 단계로 건너뛸 수 있습니다. 이 예시에서는 CNI metrics helper 이미지의 저장소를 포함하는 Amazon ECR 프라이빗 레지스트리에 인증합니다. Amazon EKS는 Amazon EKS 추가 기능용 Amazon 컨테이너 이미지 레지스트리 보기에 나열된 각 레지스트리에 이미지를 유지 관리합니다. 602401143452와 region-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
이미지를 가져옵니다. 이 예시에서는 이전 하위 단계에서 인증한 레지스트리에서 가져옵니다. 602401143452와 region-code를 이전 하위 단계에서 제공한 정보로 바꿉니다.
docker pull 602401143452.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
가져온 이미지에 레지스트리, 저장소, 태그로 태그를 지정합니다. 다음 예시는 매니페스트 파일에서 이미지를 가져와 첫 번째 단계에서 만든 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
레지스트리에 인증합니다. 이 예시에서는 첫 번째 단계에서 만든 Amazon ECR 프라이빗 레지스트리에 인증합니다. 자세한 내용은 Amazon Elastic Container Registry User Guide의 레지스트리 인증(Registry authentication)을 참조하세요.
aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com
이미지를 저장소에 푸시합니다. 이 예시에서는 첫 번째 단계에서 만든 Amazon ECR 프라이빗 저장소에 이미지를 푸시합니다. 자세한 내용은 Amazon Elastic Container Registry User Guide의 Docker 이미지 푸시(Pushing a Docker image)를 참조하세요.
docker push 111122223333.dkr.ecr.region-code.amazonaws.com/cni-metrics-helper:v1.12.6
이전 단계에서 이미지를 결정하는 데 사용한 매니페스트 파일을 푸시한 이미지의 registry/repository:tag로 업데이트합니다. Helm 차트로 설치한다면 registry/repository:tag를 지정하는 옵션이 있는 경우가 많습니다. 차트를 설치할 때 저장소에 푸시한 이미지의 registry/repository:tag를 지정하세요.