Kubernetes : Private Registry の設定2025/11/07 |
|
自身の Private Registry からコンテナーイメージを Pull できるよう設定します。 当例では以下のように 4 台のノードを使用して Kubernetes クラスターを構成しています。
+----------------------+ +----------------------+
| [ ctrl.srv.world ] | | [ dlp.srv.world ] |
| Manager Node | | Control Plane |
+-----------+----------+ +-----------+----------+
eth0|10.0.0.25 eth0|10.0.0.30
| |
------------+--------------------------+-----------
| |
eth0|10.0.0.51 eth0|10.0.0.52
+-----------+----------+ +-----------+----------+
| [ node01.srv.world ] | | [ node02.srv.world ] |
| Worker Node#1 | | Worker Node#2 |
+----------------------+ +----------------------+
|
| [1] |
Registry Pod を起動したいノードで
こちらを参考に、認証有効 + HTTPS (正規の証明書) で Registry を起動しておきます。 |
| [2] | 認証トークンを Kubernetes に登録します。 |
|
# 任意のユーザーで Registry にログイン suse@ctrl:~> podman login ctrl.srv.world:5000 Username: serverworld Password: Login Succeeded! # ログインすると下記ファイルが生成される suse@ctrl:~> ll /run/user/$(id -u)/containers/auth.json -rw-------. 1 suse suse 91 Nov 7 10:48 /run/user/1000/containers/auth.json AUTH=$(cat /run/user/$(id -u)/containers/auth.json | base64 | tr -d '\n')
suse@ctrl:~> cat <<EOF > regcred.yml
apiVersion: v1
kind: Secret
data:
.dockerconfigjson: ${AUTH}
metadata:
name: regcred
type: kubernetes.io/dockerconfigjson
EOF
suse@ctrl:~> kubectl apply -f regcred.yml secret "regcred" created suse@ctrl:~> kubectl get secrets NAME TYPE DATA AGE regcred kubernetes.io/dockerconfigjson 1 6s |
| [3] | Private Registry から Pull するには 登録した Secret と Private Registry の image を指定して Pod をデプロイします。 |
|
suse@ctrl:~> podman images REPOSITORY TAG IMAGE ID CREATED SIZE ctrl.srv.world:5000/nginx my-registry d261fd19cb63 2 days ago 155 MB docker.io/library/nginx latest d261fd19cb63 2 days ago 155 MB
suse@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
suse@ctrl:~>
suse@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 9ssuse@ctrl:~> kubectl describe pods private-nginx
Name: private-nginx
Namespace: default
Priority: 0
Service Account: default
Node: node01.srv.world/10.0.0.51
Start Time: Fri, 07 Nov 2025 10:53:38 +0900
Labels: <none>
Annotations: cni.projectcalico.org/containerID: f04d35c6a1beca583b04bc7ab1e0bafff424f350107012f634e6715c44330143
cni.projectcalico.org/podIP: 192.168.40.202/32
cni.projectcalico.org/podIPs: 192.168.40.202/32
Status: Running
IP: 192.168.40.202
IPs:
IP: 192.168.40.202
Containers:
private-nginx:
Container ID: containerd://0877804495ec439234672fc5d0ba0cdcca255ac1e6c6edbd2129cad44fca49b8
Image: ctrl.srv.world:5000/nginx:my-registry
Image ID: ctrl.srv.world:5000/nginx@sha256:cddbc8646a1faad6a133171d698290dc69aaeff24ee007de64dc7dca74bfa762
Port: <none>
Host Port: <none>
State: Running
Started: Fri, 07 Nov 2025 10:53:39 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-628lv (ro)
.....
.....
|
| Sponsored Link |
|
|