Kubernetes : Private Registry の設定2018/04/15 |
|
Docker Private Registry を設定して、自身の Private Registry から Docker イメージを Pull できるよう設定します。
当例では以下のように 3台のノードを使用して Kubernetes クラスターを構成しています。
-----------+---------------------------+--------------------------+------------
| | |
eth0|10.0.0.30 eth0|10.0.0.51 eth0|10.0.0.52
+----------+-----------+ +-----------+----------+ +-----------+----------+
| [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] |
| Master Node | | Worker Node | | Worker Node |
+----------------------+ +----------------------+ +----------------------+
|
| [1] |
Registry Pod を起動したいノードで
こちらの [4] を参考に、認証が必要な Docker Registry を起動しておきます。
当例では Master ノード上に Docker Registry を起動します。 Docker Registry の HTTPS 化は任意ですが、HTTP を使用する場合は 各ノードの Docker に [insecure-registries] の設定が必要です。 |
| [2] | 認証トークンを Kubernetes に登録します。 |
|
# 任意のユーザーで Registry にログイン [root@dlp ~]# docker login dlp.srv.world:5000 Username: admin Password: Login Succeeded # ログインすると下記ファイルが生成される [root@dlp ~]# ll ~/.docker/config.json -rw------- 1 root root 152 Aug 18 19:32 /root/.docker/config.json # ファイルを BASE64 エンコード [root@dlp ~]# cat ~/.docker/config.json | base64 ewoJImF1dGhzIjogewoJCSJkbHAuc3J2LndvcmxkOjUwMDAiOiB7Cg.....
[root@dlp ~]#
vi regcred.yml # 新規作成 # [.dockerconfigjson] 行に BASE64 エンコードで表示された内容を一行にして貼り付け apiVersion: v1 kind: Secret data: .dockerconfigjson: ewoJImF1dGhzIjogewoJCSJkbHAu..... metadata: name: regcred type: kubernetes.io/dockerconfigjson kubectl apply -f regcred.yml secret "regcred" created [root@dlp ~]# kubectl get secrets NAME TYPE DATA AGE default-token-g4f7x kubernetes.io/service-account-token 3 80m regcred kubernetes.io/dockerconfigjson 1 5s |
| [3] | Private Registry から Pull するには 登録した Secret と Private Registry の image を指定して Pod をデプロイします。 |
|
[root@dlp ~]# docker images dlp.srv.world:5000/nginx REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/nginx my-registry f0b8a9a54136 12 days ago 133MB
[root@dlp ~]#
vi private-nginx.yml
apiVersion: v1
kind: Pod
metadata:
name: private-nginx
spec:
containers:
- name: private-nginx
# Private Registry の image
image: dlp.srv.world:5000/nginx:my-registry
imagePullSecrets:
# 登録した Secret 名
- name: regcred
[root@dlp ~]#
[root@dlp ~]# kubectl apply -f private-nginx.yml pod "private-nginx" created kubectl get pods NAME READY STATUS RESTARTS AGE private-nginx 1/1 Running 0 96s[root@dlp ~]# kubectl describe pods private-nginx
Name: private-nginx
Namespace: default
Priority: 0
Node: node01.srv.world/10.0.0.51
Start Time: Mon, 24 May 2021 17:49:42 +0900
Labels: <none>
Annotations: <none>
Status: Running
IP: 10.244.1.9
IPs:
IP: 10.244.1.9
Containers:
private-nginx:
Container ID: docker://863342c341571a10e99012439e351110ba13c28b129ef24b096bdccec9b23748
Image: dlp.srv.world:5000/nginx:my-registry
Image ID: docker-pullable://dlp.srv.world:5000/nginx@sha256:eba373a0620f68ffdc3f217041ad25ef084475b8feb35b992574cd83698e9e3c
.....
.....
|
| Sponsored Link |
|
|