Kubernetes : Private Registry の設定2022/11/03 |
自身の Private Registry からコンテナーイメージを Pull できるよう設定します。
当例では以下のように 3 台のノードを使用して Kubernetes クラスターを構成しています。
-----------+---------------------------+--------------------------+------------ | | | eth0|10.0.0.25 eth0|10.0.0.71 eth0|10.0.0.72 +----------+-----------+ +-----------+-----------+ +-----------+-----------+ | [ ctrl.srv.world ] | | [snode01.srv.world] | | [snode02.srv.world] | | Control Plane | | Worker Node | | Worker Node | +----------------------+ +-----------------------+ +-----------------------+ |
[1] |
Registry Pod を起動したいノードで
こちらを参考に、認証有効 + HTTPS (正規の証明書) で Registry を起動しておきます。
当例では Control Plane ノード上に Registry を起動します。 |
[2] | 認証トークンを Kubernetes に登録します。 |
root@ctrl:~# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 936e492dd7f5 docker.io/library/registry:2 /etc/docker/regis... 10 minutes ago Up 10 minutes ago 0.0.0.0:5000->5000/tcp sharp_khorana # 任意のユーザーで Registry にログイン root@ctrl:~# podman login ctrl.srv.world:5000 Username: ubuntu Password: Login Succeeded! # ログインすると下記ファイルが生成される root@ctrl:~# ll /run/user/0/containers/auth.json -rw------- 1 root root 83 Nov 2 08:17 /run/user/0/containers/auth.json # ファイルを BASE64 エンコード root@ctrl:~# cat /run/user/0/containers/auth.json | base64 ewoJImF1dGhzIjogewoJCSJjdHJsLnNy.....
root@ctrl:~#
vi regcred.yml # 新規作成 # [.dockerconfigjson] 行に BASE64 エンコードで表示された内容を一行にして貼り付け apiVersion: v1 kind: Secret data: .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJjdHJsLnNy..... metadata: name: regcred type: kubernetes.io/dockerconfigjson kubectl apply -f regcred.yml secret "regcred" created root@ctrl:~# kubectl get secrets NAME TYPE DATA AGE regcred kubernetes.io/dockerconfigjson 1 4s |
[3] | Private Registry から Pull するには 登録した Secret と Private Registry の image を指定して Pod をデプロイします。 |
root@ctrl:~# podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest 76c69feac34e 7 days ago 146 MB ctrl.srv.world:5000/nginx my-registry 76c69feac34e 7 days ago 146 MB docker.io/library/registry 2 dcb3d42c1744 3 weeks ago 24.7 MB
root@ctrl:~#
vi private-nginx.yml apiVersion: v1 kind: Pod metadata: name: private-nginx spec: containers: - name: private-nginx # Private Registry の image image: ctrl.srv.world:5000/nginx:my-registry imagePullSecrets: # 登録した Secret 名 - name: regcred
root@ctrl:~#
root@ctrl:~# kubectl apply -f private-nginx.yml pod "private-nginx" created kubectl get pods NAME READY STATUS RESTARTS AGE private-nginx 1/1 Running 0 6sroot@ctrl:~# kubectl describe pods private-nginx Name: private-nginx Namespace: default Priority: 0 Service Account: default Node: snode02.srv.world/10.0.0.72 Start Time: Wed, 02 Nov 2022 08:19:37 +0000 Labels: <none> Annotations: cni.projectcalico.org/containerID: 696cc6e7980beee30cc0930a8b7cc9dd2b1261c02eddfeb86fd8166f011f8425 cni.projectcalico.org/podIP: 192.168.211.129/32 cni.projectcalico.org/podIPs: 192.168.211.129/32 Status: Running IP: 192.168.211.129 IPs: IP: 192.168.211.129 Containers: private-nginx: Container ID: containerd://e0bb44006608fab86ee24502313b1254a8f33b2974743d6a27bdb8f7eec311d3 Image: ctrl.srv.world:5000/nginx:my-registry Image ID: ctrl.srv.world:5000/nginx@sha256:a267f796f427638a6dd897c76797c03edb7d1f5194abadbd338258a279d209d8 Port: <none> Host Port: <none> State: Running Started: Wed, 02 Nov 2022 08:19:41 +0000 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-8srxq (ro) ..... ..... |
Sponsored Link |