CONTAINER-RUNTIME으로 containerd을 사용중이며, private container registry에서 이미지 pull 시 tls 에러가 나는 현상이 발생하여, 이를 해결하는 과정을 정리한다.
pod가 어느 노드에서 생성될 지 알 수 없기 때문에 아래 과정은 모든 kubernetes worker에서 진행해야 한다.
1. hosts 파일 수정
/etc/hosts에 harbor의 hostname과 ip를 작성한다.
10.0.1.117 registry.dd.io
2. Docker 인증서 디렉토리에 인증서 추가
`/etc/docker/certs.d/registry.dd.io/` 디렉토리에 harbor 레지스트리 서버의 ca.crt 파일을 추가한다.
`/registry.dd.io` 디렉토리는 실제 harbor 레지스트리의 FQDN으로, 디렉토리가 없다면 생성 후 ca.crt를 넣어준다.
mkdir -p /etc/docker/certs.d/registry.dd.io/
cp ca.crt /etc/docker/certs.d/registry.dd.io/
3. 시스템 인증서 저장소에 인증서 추가
`/etc/pki/ca-trust/source/anchors/`에 harbor 레지스트리 서버의 ca.crt 파일을 추가한다.
그 후 `update-ca-trust` 명령을 실행하여 시스템 인증서 저장소를 업데이트한다.
cp ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust
4. Containerd 설정
`containerd config default > /etc/containerd/config.toml` 명령으로 기본 설정 파일을 생성한다.
그 후 config.toml 파일에 private registry 관련 설정을 추가한다. 151번 라인을 수정했다.
아래에서 `registry.dd.io`를 개인이 사용중인 private cr 주소로 변경해주면 된다.
username과 password 또한 적절히 변경한다.
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."registry.dd.io".auth]
username = "admin"
password = "Changeme$9"
[plugins."io.containerd.grpc.v1.cri".registry.headers]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.dd.io"]
endpoint = ["https://registry.dd.io"]
5. crictl 설정
crictl이 containerd와 통신할 수 있도록 설정한다.
cat > /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
timeout: 0
debug: false
pull-image-on-create: false
EOF
6. Containerd 서비스 재시작
systemctl restart containerd
7. private cr에서 image pull 테스트
crictl을 사용해 image pull을 테스트한다.
[root@kw2 ~]# crictl pull registry.dd.io/shared/nginx
Image is up to date for sha256:5ef79149e0ec84a7a9f9284c3f91aa3c20608f8391f5445eabe92ef07dbda03c
'kubenetes' 카테고리의 다른 글
Argocd mail notification 설정: Multiple Sources (0) | 2024.09.08 |
---|---|
Kubernetes 환경에서 ArgoCD를 활용한 MLflow Helm 차트 배포: GitOps 및 Private Harbor 활용 (1) | 2024.09.05 |
tekton 설치 (0) | 2024.08.29 |
argocd 설치 (0) | 2024.08.29 |
mlflow helm 설치 (0) | 2024.08.29 |
댓글