CentOS 7
Sponsored Link

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

[root@dlp ~]#
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 ~]#
kubectl apply -f private-nginx.yml

pod "private-nginx" created
[root@dlp ~]#
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
.....
.....
関連コンテンツ