본문 바로가기
개발/AWS

Kubernetes AWS ECR 이미지 pull 받기

by 궁즉변 변즉통 통즉구 2023. 3. 11.
반응형

Kubernetes에서 ECR의 이미지를 pull 받을 경우 secret을 생성하고, deployment나 pod yaml 작성 시 imagePullSecrets을 설정해줘야 한다. 아무 설정을 하지 않은 상태에서는 아래와 같은 Unauthorized 에러가 발생한다.

rpc error: code = Unknown desc = failed to pull and unpack image

사실 ECR 뿐만 아니라 Private Image 리파지토리를 사용하게 되면 secret 및 imagePullSecrets 설정이 필요하다. 여기서는 ECR을 기준으로 방법을 알아본다.

 

먼저 secret 생성을 위한 환변변수들을 설정해준다.

ACCOUNT=xxxxxxx # AWS ECR 이미지 URL 맨 앞 숫자
REGION=ap-northeast-2 # 리전
SECRET_NAME=ecr-secret # 생성될 secret의 이름
EMAIL=xxxxx@xxx.com # 임의의 이메일 형식
TOKEN=`aws ecr --region=$REGION get-authorization-token --output text --query authorizationData[].authorizationToken | base64 -d | cut -d: -f2`

 

다음으로 위에 설정한 환경변수를 사용해서 secret을 생성한다.

kubectl create secret docker-registry ${SECRET_NAME} \
    --docker-server=https://${ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com \
    --docker-username=AWS \
    --docker-password="${TOKEN}" \
    --docker-email="${EMAIL}"

생성한 secret을 확인한다.

kubectl get secret

 

이제 deployment나 pod yaml 작성 시 imagePullSecrets으로 secret 참조를 선언하면 된다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        - name: app
          image: xxxxxxx.dkr.ecr.ap-northeast-2.amazonaws.com/xxxxxx
          ... 생략 ...
      imagePullSecrets:
        - name: ecr-secret  # 생성한 secret 이름

 

반응형

댓글