Kubernetes

containerd 에 Private Registry Credential 설정 (aka config.toml)

seulseul 2024. 7. 1. 23:10

OverView

본문에서는 containerd 가 Registry (컨테이너 이미지 저장소) 로부터 image 를 다운 (pull) 받을 때 pod imageSecret 설정 없이 가능하도록 설정하는 방법을 설명합니다.

 

CRI 로 containerd, cri-o, docker 등 다양하지만 저는 containerd 를 사용하고 있습니다.

containerd 의 설정 파일은 /etc/ containerd/config.toml 경로에 있습니다. 해당 파일이 없을 경우 아래 커맨드로 기본 설정 파일 생성이 가능합니다.

containerd config default > /etc/containerd/config.toml

 

Configure Registry Credentials

$ sudo ctr --version

Client:
  Version: 1.5.8
  Revision: d1159a1076a57c8f216db0b2f4b8e942b6c13fc1

Server:
  Version: 1.5.8
  Revision: d1159a1076a57c8f216db0b2f4b8e942b6c13fc1
  RPC Version: 1.0

 

containerd 버전에 따라 config 형식이 다르므로 먼저 containerd 의 버전을 확인합니다.

# vi /etc/containerd/config.toml
version = 2
[plugins."io.containerd.grpc.v1.cri"]
  [plugins."io.containerd.grpc.v1.cri".registry]
    config_path = "/etc/containerd/certs.d"
    
# 생략

[plugins."io.containerd.grpc.v1.cri".registry] 하위에 config_path = "/etc/containerd/certs.d" 추가해줍니다.

참고 | https://github.com/containerd/containerd/blob/main/docs/cri/registry.md#configure-registry-credentials

 

# /etc/containerd  directory 하위에 certs.d/"<registry domain>" directory 생성

mkdir -p /etc/containerd/certs.d/"<registry domain>"

vi /etc/containerd/certs.d/"<registry domain>"/hosts.toml

 

 

# vi /etc/containerd/certs.d/<registry-domain>/hosts.toml

server = "https://<registry-domain>"

[host."https://<registry-domain>"]
  [host."https://<registry-domain>".header]
    authorization = "Basic <base64-encoded-credentials>"

 

base64-encoded-credentials >> echo -n "admin:password" | base64

 

  • 설정을 변경한 후 containerd를 재시작하여 변경 사항을 적용
    • Note: Updates under this directory do not require restarting the containerd daemon.

sudo systemctl restart containerd

 

설정 적용 확인

ctr images pull --hosts-dir "/etc/containerd/certs.d" harbor.seulseul.com/project/nginx:latest

적용되었는지 확인하기 위해 containerd가 Harbor 레지스트리에서 이미지를 가져올 수 있는지 테스트합니다.

해당 작업은 k8s Node VM 전부 적용해야합니다.

 

registry host 별로 설정파일을 관리할 수 있으며, 해당 설정파일에서 insecure , mirror registry 설정도 가능합니다.