반응형
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 이름
반응형
'개발 > AWS' 카테고리의 다른 글
AWS 외부 SSL 인증서 적용(인증서 가져오기 및 ALB 적용) (0) | 2023.06.12 |
---|---|
AWS ALB 도메인(호스트) 기반 라우팅 규칙 설정 (0) | 2023.06.07 |
EKS error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" 에러(kubectl, helm) (0) | 2023.03.11 |
AWS EKS 구성 및 컨테이너 웹 어플리케이션 배포 - 1 (0) | 2023.02.06 |
AWS CodePipeLine ECS 배포 구성 (0) | 2022.08.26 |
댓글