IP로 설치된 Private-Registry(harbor) 도메인 수동 적용
가정
Private Registry, Control plane, Worker nodes는
Ubuntu20.04
환경에서 구성됩니다.쿠버네티스 버전은
v1.26
입니다.이미지 레지스트리 주소를
192.168.77.154
에서regi.acornsoft.io
로 변경합니다.
192.168.77.154
regi.acornsoft.io
Private Registry 작업
Private Registry IP 변경 및 디렉토리 생성
openssl.conf
파일에 도메인을 추가합니다.
$ sudo vi /var/lib/cubectl/cert/openssl.conf
# 예시
[ alt_names_registry ]
DNS.1 = localhost
DNS.2 = registry
DNS.3 = regi.acornsoft.io
IP.1 = 127.0.0.1
IP.2 = 192.168.77.154
도메인 디렉토리를 생성합니다.
$ sudo mkdir /etc/docker/certs.d/regi.acornsoft.io
Private Registry 설정 파일 변경
harbor.yml
의 hostname을 IP에서 도메인으로 변경합니다.
$ sudo sed -i 's/192.168.77.154/regi.acornsoft.io/g' /var/lib/cubectl/harbor/harbor.yml
# 예시
hostname: regi.acornsoft.io
변경사항 반영
install.sh 스크립트를 실행하여 변경 사항을 적용합니다.
$ cd /var/lib/cubectl/harbor/
$ sudo ./install.sh
install.sh 스크립트를 실행하는 대신 harbor 환경변수를 수정하고 harbor를 재시작해도 변경사항이 반영됩니다.
$ cd /var/lib/cubectl/harbor/common/config/core
$ vi env
# AS-IS
EXT_ENDPOINT=https://10.1.1.50
# TO-BE (접속될 접속주소, 예시:)
EXT_ENDPOINT=https://www.regi.acornsoft.io
Node 작업
공통 작업(Control plane, Worker nodes)
Private Registry IP 변경사항을 node에 반영
/etc/containerd/certs.d
에 도메인 디렉토리를 생성한 후,/etc/containerd/certs.d/192.168.77.154/hosts.toml
파일을 복사합니다.
$ sudo mkdir -p /etc/containerd/certs.d/regi.acornsoft.io
$ sudo cp -r /etc/containerd/certs.d/192.168.77.154/* /etc/containerd/certs.d/regi.acornsoft.io
/etc/containerd/certs.d/regi.acornsoft.io/hosts.toml
의 IP를 도메인으로 변경합니다.
$ sudo sed -i 's/192.168.77.154/regi.acornsoft.io/g' /etc/containerd/certs.d/regi.acornsoft.io/hosts.toml
/etc/containerd/config.toml
의 IP를 도메인으로 변경합니다.
$ sudo sed -i 's/192.168.77.154/regi.acornsoft.io/g' /etc/containerd/config.toml
containerd를 재시작합니다.
$ sudo systemctl restart containerd
IP 인증서는 더이상 사용하지 않으므로
hosts.toml
파일에서ca
라인을 삭제합니다.
$ sudo sed -i '/ca =/d' /etc/containerd/certs.d/regi.acornsoft.io/hosts.toml
# 도메인주소로 변경하는 경우 ca 라인 삭제
server = "https://www.regi.acornsoft.io"
[host."https://www.regi.acornsoft.io"]
Addon, Coredns, Static Pods 및 기타 yaml파일에 대한 IP 주소를 도메인으로 변경합니다.
$ sudo find /etc/kubernetes -type f -exec sed -i 's/192.168.77.154/regi.acornsoft.io/g' {} +
# Control plane에서 IP가 변경되는 파일 목록
# Addon
/etc/kubernetes/addon/calico/calico.yaml
/etc/kubernetes/addon/metrics-server/metrics-server.yaml
# Static Pods
/etc/kubernetes/manifests/kube-apiserver.yaml
/etc/kubernetes/manifests/kube-controller-manager.yaml
/etc/kubernetes/manifests/kube-scheduler.yaml
# Coredns 및 기타 yaml
/etc/kubernetes/addon/test/nginx.yaml
/etc/kubernetes/addon/test/dnsutils.yaml
/etc/kubernetes/kubeadm.yaml
# Worker nodes에서 IP가 변경되는 파일 목록
# Static Pods
/etc/kubernetes/manifests/haproxy.yaml
패키지 저장소 주소를 도메인으로 변경합니다.
$ sed -i 's/192.168.77.154/regi.acornsoft.io/g' /etc/apt/sources.list.d/local-repo.list
/etc/docker/certs.d/
에 도메인 디렉토리를 생성합니다.
$ sudo mkdir /etc/docker/certs.d/regi.acornsoft.io
Control-plane 추가 작업
control-plane 에서는 calico와 metrics server를 업데이트하는 작업을 추가로 해줍니다.
$ kubectl apply -f /etc/kubernetes/addon/calico/calico.yaml
$ kubectl apply -f /etc/kubernetes/addon/metrics-server/metrics-server.yaml
kube-proxy daemonset 이미지 주소를 도메인으로 변경합니다.
$ kubectl edit daemonset -n kube-system kube-proxy
# 예시
image: regi.acornsoft.io/registry.k8s.io/kube-proxy:v1.26.7
coredns deployment 이미지 주소를 도메인으로 변경합니다.
$ kubectl edit deployment -n kube-system coredns
# 예시
image: regi.acornsoft.io/docker.io/coredns/coredns:1.9.3
kubelet을 재시작해줍니다.
$ sudo systemctl restart kubelet
확인
컨테이너 이미지를 확인합니다. 이미지가 모두 올라오기까지 몇 분 소요될 수 있습니다.
$ sudo crictl images
# 예시
ubuntu@master-1:~$ sudo crictl images
IMAGE TAG IMAGE ID SIZE
regi.acornsoft.io/docker.io/calico/cni v3.26.1 9dee260ef7f59 93.4MB
192.168.77.154/docker.io/calico/cni v3.26.1 9dee260ef7f59 93.4MB
regi.acornsoft.io/docker.io/calico/node v3.26.1 8065b798a4d67 86.6MB
192.168.77.154/docker.io/calico/node v3.26.1 8065b798a4d67 86.6MB
regi.acornsoft.io/registry.k8s.io/kube-apiserver v1.26.7 6ac727c486d08 36.1MB
192.168.77.154/registry.k8s.io/kube-apiserver v1.26.7 6ac727c486d08 36.1MB
regi.acornsoft.io/registry.k8s.io/kube-controller-manager v1.26.7 17314033c0a0b 32.8MB
192.168.77.154/registry.k8s.io/kube-controller-manager v1.26.7 17314033c0a0b 32.8MB
regi.acornsoft.io/registry.k8s.io/kube-proxy v1.26.7 1e7eac3bc5c0b 21.8MB
192.168.77.154/registry.k8s.io/kube-proxy v1.26.7 1e7eac3bc5c0b 21.8MB
regi.acornsoft.io/registry.k8s.io/kube-scheduler v1.26.7 c1902187a39f8 17.8MB
192.168.77.154/registry.k8s.io/kube-scheduler v1.26.7 c1902187a39f8 17.8MB
regi.acornsoft.io/registry.k8s.io/pause 3.9 e6f1816883972 319kB
192.168.77.154/registry.k8s.io/pause 3.9 e6f1816883972 319kB
192.168.77.154/docker.io/coredns/coredns 1.9.3 5185b96f0becf 14.8MB
192.168.77.154/registry.k8s.io/metrics-server/metrics-server v0.6.1 e57a417f15d36 28.1MB
참고: Private Registry IP를 새로운 서버의 IP로 변경하는 경우에는 cubectl update 명령서를 사용하십시오.
Last updated