Amazon ECS 컨테이너 에이전트에서 프라이빗 리포지토리 자격 증명을 업데이트하려면 어떻게 해야 하나요?

4분 분량
0

AWS Secrets Manager 또는 환경 변수를 통해 제공되는 Amazon Elastic Container Service(Amazon ECS) 컨테이너 에이전트에서 프라이빗 리포지토리 자격 증명을 업데이트하고 싶습니다.

간략한 설명

태스크 정의의 Secrets Manager 또는 환경 변수를 사용하여 Amazon ECS 컨테이너 에이전트에 프라이빗 리포지토리 자격 증명을 제공할 수 있습니다.

다음 옵션 중 하나를 선택하세요.

  • Secrets Manager를 사용하여 프라이빗 리포지토리 자격 증명을 제공하는 경우 Secrets Manager로 프라이빗 리포지토리 자격 증명을 업데이트 섹션의 단계를 따르세요.
  • 인스턴스 사용자 데이터 및 환경 변수를 사용하여 프라이빗 리포지토리 자격 증명을 제공하는 경우 환경 변수를 통해 프라이빗 리포지토리 자격 증명 업데이트 섹션의 단계를 따르세요.

참고: 컨테이너 인스턴스에 일반 텍스트로 자격 증명을 저장하는 것은 보안 모범 사례가 아닙니다. 컨테이너 인스턴스 내에 레지스트리 자격 증명을 저장하는 데 직접적인 아키텍처 종속성이 있는 경우가 아니라면 Secrects Manager를 대신 사용하는 것이 좋습니다.

해결 방법

Secrets Manager로 프라이빗 리포지토리 자격 증명 업데이트

1.    Secrets Manager 콘솔을 여십시오.

2.    보안 암호를 입력한 다음 보안 값 검색을 선택하십시오.

3.    편집을 선택하십시오.

4.    프라이빗 레지스트리에 저장된 자격 증명을 업데이트한 다음, 저장을 선택하십시오.

계속하려면 업데이트된 프라이빗 리포지토리 자격 증명 테스트 섹션의 단계를 따르세요.

환경 변수를 통해 프라이빗 리포지토리 자격 증명을 업데이트

1.    컨테이너 인스턴스에 연결하십시오.

2.    ECS 컨테이너 에이전트에 Docker 자격 증명을 제공하는 방법을 찾으려면 다음 명령을 실행하세요.

$ cat /etc/ecs/ecs.config

이 명령은 /etc/ecs/ecs.config 파일의 내용을 반환합니다.

ECS_ENGINE_AUTH_TYPE 변수가 docker로 설정된 경우, 평문을 통해 Docker 자격 증명을 ECS 컨테이너 에이전트로 직접 전달하고 있는 것입니다. 이 접근 방식은 지양해야 합니다. 대신 Secrets Manager 또는 새 Docker 인증 값 얻기 섹션에서 dockercfg 형식 접근 방식을 사용하세요.

ECS_ENGINE_AUTH_TYPE 변수가 dockercfg로 설정된 경우, docker login 명령에 의해 생성된 Docker 생성 인증 값으로 Docker 자격 증명을 전달하고 있는 것입니다. 이 접근 방식을 계속 사용하려면 새 Docker 인증 값 얻기 섹션의 단계를 완료하세요.

새 Docker 인증 값 얻기

1.    Docker에 로컬로 로그인하려면 다음 명령을 실행한 다음, 새 자격 증명을 입력하십시오.

$ docker login

2.    config.json 파일을 연결하려면 다음 명령을 실행한 다음, Docker에서 생성된 인증 키 값을 복사하세요.

$ cat ~/.docker/config.json

3.    ECS_ENGINE_AUTH_DATA 변수를 업데이트하려면 다음 명령을 실행하세요.

$ sudo vi /etc/ecs/ecs.config

4.    vi 편집기에서 ECS_ENGINE_AUTH_DATA 변수의 값을 2단계의 Docker 인증 키 값으로 업데이트하세요. 예를 들면 다음과 같습니다.

ECS_CLUSTER=TestECSCluster
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"auth","a2vpdGhhd3M6UGFzc3dvcmQ="}}

계속하려면 ECS 컨테이너 에이전트 다시 시작 섹션의 단계를 따르세요.

ECS 컨테이너 에이전트 다시 시작

1.    ECS 컨테이너 에이전트를 다시 시작하려면 컨테이너 인스턴스가 실행 중인 Amazon 머신 이미지(AMI)를 기반으로 다음 명령 중 하나를 실행하세요.

Amazon Linux ECS 최적화 AMI:

$ sudo stop ecs && sudo start ecs

Amazon Linux 2 ECS 최적화 AMI:

$ sudo systemctl restart ecs

참고: ECS 클러스터의 다른 컨테이너 인스턴스에서 /etc/ecs/ecs.config 파일을 업데이트하려면 환경 변수를 통해 프라이빗 리포지토리 자격 증명 업데이트 섹션으로 돌아가세요. 그런 다음, 각 컨테이너 인스턴스에 대한 업데이트 프로세스를 따르세요.

계속하려면 업데이트된 프라이빗 리포지토리 자격 증명 테스트 섹션의 단계를 따르세요.

업데이트된 프라이빗 리포지토리 자격 증명 테스트

다음 단계에서는 업데이트된 이미지를 클러스터에 배포하는 상황을 가정합니다.

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 클러스터를 선택한 다음, 사용자의 클러스터를 선택하십시오.

3.    사용자의 서비스를 선택한 다음, 업데이트를 선택하십시오.

4.    새 배포 실행 확인란을 선택하십시오.

5.    최소 정상 비율50을 입력하십시오.

6.    설치 마법사의 나머지 단계를 완료한 다음, 서비스 업데이트를 선택하십시오.

7.    서비스 보기를 선택하십시오.

8.    배포 탭에서 새 배포를 확인하십시오 Amazon ECS는 이전 배포에서 작업을 서서히 중단한 다음, 새로운 이미지 가져오기를 시도하면서 새 배포에서 작업을 다시 시작하세요.

참고: 8단계에서는 클러스터에 롤링 업데이트 배포 유형을 성공적으로 수행하기에 충분한 리소스가 있다고 가정합니다.

9.    작업 탭을 선택한 다음, 개별 작업 및 상태를 확인하십시오.

작업 상태가 **실행 중(Running)**으로 설정된 경우, 서비스가 오류 없이 성공적으로 이 작업을 업데이트한 것입니다.

태스크 상태가 [Running (CannotPullContainerError)]으로 설정된 경우, 서비스가 이 태스크를 업데이트했지만 오류가 발생한 것입니다. ECS 컨테이너 에이전트는 새 컨테이너 이미지를 가져올 수 없으며 이전에 캐시된 이미지를 사용하고 있습니다. 자격 증명이 업데이트되었는지 확인한 다음, 다른 서비스 배포 업데이트를 수행하세요.

참고: 작업의 전체 세부 사항을 표시하고 “pull access denied” 오류를 확인하려면 개별 작업 상태에 대한 드롭다운 화살표를 선택하세요. 예를 들면 다음과 같습니다.

CannotPullContainerError: Error response from daemon: pull access denied for user/reponame, repository does not exist or may require 'docker login'

관련 정보

Amazon ECS 컨테이너 에이전트 구성

인증 형식

AWS 공식
AWS 공식업데이트됨 3년 전
댓글 없음

관련 콘텐츠