ACR 접속 secret 생성

2024. 3. 5. 21:40k8s

Secret 없이 Token이 셋팅된 ACR에 접속

Failed to pull image "{ACR 이름}.io/{image 이름}:{image 태그}": Error response from daemon: Head "https://{ACR 이름}.io/v2/{image 이름}/manifests/{image 태그}": unauthorized: authentication required

Secret 생성

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

 

Pull an Image from a Private Registry

This page shows how to create a Pod that uses a Secret to pull an image from a private container image registry or repository. There are many private registries in use. This task uses Docker Hub as an example registry. 🛇 This item links to a third party

kubernetes.io

secret은 사용하려는 resource와 namespace가 일치해야 사용 가능

# secret 생성
kubectl create secret docker-registry {secret 이름} \
    --namespace {namespace} \
    --docker-server={ACR 이름}.azurecr.io \ 
    --docker-username={Token 이름} \
    --docker-password={Token 비밀번호}

# secret 확인
kubectl get secret {secret 이름} -o yaml -n {namespace}
----------------------------
apiVersion: v1
data:
  .dockerconfigjson: {data 값}
kind: Secret
metadata:
  creationTimestamp: "2024-03-05T11:36:38Z"
  name: {secret 이름}
  namespace: {namespace}
  resourceVersion: "3053659"
  uid: {uid 값}
type: kubernetes.io/dockerconfigjson
----------------------------

# data 확인
# ~/.docker/config.json 값과 동일함
echo {data 값} | base64 -d

vi ~/.docker/config.json
-----------------------------
{
        "auths": {
                "{ACR 이름}.azurecr.io": {
                        "auth": "{auth 값}"
                }
        }
}
-----------------------------

# auth 확인
echo {auth 값} | base64 -d
-------------------------------
{token 이름}:{token 비밀번호}
-------------------------------

Deployment에 적용

imagePullSecrets를 통해서 인증

    spec:
      containers:
      - name: {container 이름}
        image: {ACR 이름}.azurecr.io/{image 이름}:{image 태그}
        ports:
        - containerPort: {container port}
      imagePullSecrets:
      - name: {secret 이름}

'k8s' 카테고리의 다른 글

Minikube docker registry 설치  (0) 2024.04.16
Minikube addon registry 설정  (0) 2024.04.10
Dockerizing  (0) 2024.03.02
kubectl apply -f yaml 파일 사용법  (0) 2024.03.02
minikube ServiceAccount 생성  (0) 2024.02.21