Containerd로 생성된 컨테이너가 특정 Registry에서 이미지를 가져오도록 설정해보자.
containerd/docs/cri/registry.md at main · containerd/containerd
An open and reliable container runtime. Contribute to containerd/containerd development by creating an account on GitHub.
github.com
공식문서에는 deprecated된 방법이 메인으로 작성되어 있어서 혼란이 있을 수 있다. 공식문서 상단에 명시된 방법으로 Registry를 설정해야 한다.
Deprecated 된 방식 ( 예시 )
[plugins."io.containerd.grpc.v1.cri".registry]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://registry-1.docker.io"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://gcr.io"]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io".auth]
username = "_json_key"
password = 'paste output from jq'
deprecated된 방식은 containerd의 /etc/containerd/config.toml에 직접 설정해주는 방식이다. 이와 같이 직접 설정하면 관리가 어려우므로 개선된 방식으로 설정해보자.
개선된 방식
/etc/containerd/config.toml에 "/etc/containerd/certs.d" 경로 설정하기
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
/etc/containerd/config.toml에 config_path 값으로 "/etc/containerd/certs.d" 경로만 설정하면 된다. ( 다른 설정 X )
certs.d 디렉토리 생성하기
root@test-205:/etc/containerd$ ls -rlt
total 16
-rw-r--r-- 1 root root 8410 May 15 04:34 config.toml
drwxr-xr-x 3 root root 4096 May 15 04:34 certs.d
certs.d 디렉토리 아래에 특정 registry 전용 디렉토리 생성하기
root@test-205:/etc/containerd/certs.d$ ls -rlt
total 4
drwxr-xr-x 2 root root 4096 May 15 04:34 harbor.mingu.com
drwxr-xr-x 2 root root 4096 Jun 4 09:36 192.168.12.34:5000
registry의 url이나 ip 및 포트로 디렉토리를 생성한다.
hosts.toml 파일 생성하기
root@test-205:/etc/containerd/certs.d/harbor.mingu.com$ cat hosts.toml
server = "https://harbor.mingu.com"
[host."https://harbor.mingu.com"]
capabilities = ["pull", "resolve"]
skip_verify = true
[host."https://harbor.mingu.com".header]
authorization = "Basic aW5mcmEwewqqwe6VDdqwewnqazI5TG1Rdw=="
registry와 containerd가 어떤 작업을 할건지(pull, resolve), TLS 검증은 skip할 건지, 이미지가 저장된 레지스트리에 접근할 수 있는 권한을 가진 토큰은 무엇인지를 설정한다.
자세한 설정 방법은 아래 공식문서를 참고하면 된다.
https://github.com/containerd/containerd/blob/main/docs/hosts.md
containerd 재시작하기
sudo systemctl restart containerd
참고자료
https://github.com/containerd/containerd/discussions/6468
https://github.com/containerd/containerd/blob/main/docs/hosts.md
https://github.com/containerd/cri/blob/release/1.4/docs/registry.md
'Ops > Kubernetes' 카테고리의 다른 글
ETCD BackUp / Restore ( ETCD 백업 및 복원 ) (0) | 2025.06.22 |
---|---|
Kubernetes 네트워크 동작원리 (0) | 2025.06.18 |
kubectl alias 및 자동완성 설정하기 (0) | 2025.05.20 |
[이슈] Nebuly MPS Nvidia Device Plugin의 GPU 메모리 파티셔닝 (0) | 2025.05.07 |
Host DNS 설정 변경 시, CoreDNS 파드 재시작 필요 (0) | 2025.05.07 |