작업 위치 : registry node
작업 내용 : harbor port 변경
설치 디렉토리로 이동
cd /data/harbor
Harbor.yml 편집
vi harbor.yml
# https related config
https:
# https port for harbor, default is 443
port: [ 해당 부분 포트 변경 ]
# The path of cert and key files for nginx
certificate: [ 하버 인증서 위치 ]/harbor.crt
private_key: [ 하버 인증서 위치 ]/harbor.key
harbor 재실행
./install.sh
docker 디렉토리 변경
sudo mv /etc/docker/certs.d/[ registry domain ] /etc/docker/certs.d/[ registry domain ]:[ 변경한 포트 번호 ]
docker login으로 확인
sudo docker logout
sudo docker login -u [ registry id ] -p [ registry pw ] [ registry domain ]:[ 변경한 포트 번호 ]
이 아래부터는 container runtime이 containerd인 k8s cluster node들의 설정을 변경하는 부분입니다.
harbor port만 변경하고 싶으신 분들은 위에만 참고하시면 됩니다.
작업 위치 : control plane, worker node
작업 내용 : harbor 연결 관련 설정 변경
docker 디렉토리 변경
sudo mv /etc/docker/certs.d/[ registry domain ] /etc/docker/certs.d/[ registry domain ]:[ 변경한 포트 번호 ]
config.toml 변경
sudo vi /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri"] 섹션 안의 sandbox_image 내용을 바꿔준다.
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "[ registry domain ]:[ 변경한 포트 번호 ]/registry.k8s.io/pause:3.8"
containerd 디렉토리 변경
sudo mv /etc/containerd/certs.d/[ registry domain ] /etc/containerd/certs.d/[ registry domain ]:[ 변경한 포트 번호 ]
containerd hosts.toml 변경
sudo vi /etc/containerd/certs.d/[ registry domain ]:[ 변경한 포트 번호 ]/hosts.toml
server = "https://[ registry domain ]:[ 변경한 포트 번호 ]"
[host."https://[ registry domain ]:[ 변경한 포트 번호 ]"]
ca = "/etc/docker/certs.d/[ registry domain ]:[ 변경한 포트 번호 ]/ca.crt"
containerd 재실행
sudo systemctl restart containerd
테스트용으로 이미지 아무 이미지나 pull 시도
sudo ctictl pull [ registry domain ]:[ 변경한 포트 번호 ]/docker.io/library/nginx:latest
containerd의 config.toml
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
containerd의 구조
/etc/containerd
├── certs.d
│ ├── 172.16.100.11
│ │ └── hosts.toml
│ ├── gcr.io
│ │ └── hosts.toml
│ ├── ghcr.io
│ │ └── hosts.toml
│ ├── regi.acloud.run
│ │ └── hosts.toml
│ └── registry.k8s.io
│ └── hosts.toml
└── config.toml
containerd의 registry domain or ip에 hosts.toml 내용
server = "https://172.16.100.11"
[host."https://172.16.100.11"]
ca = "/etc/docker/certs.d/172.16.100.11/ca.crt"
이렇게 설정하고 난 후에는 yaml 작성 시 images 부분에 image: 172.16.100.11/registry.k8s.io/kube-apiserver:v1.25.11
와 같은 방식이 아닌 image: 172.16.100.11:9443/registry.k8s.io/kube-apiserver:v1.25.11
와 같이 포트번호까지 붙혀줘야한다.
좋은 글 감사합니다. 자주 올게요 :)