レジストリ認証情報シークレットを作成し、ポッドとデプロイ仕様からエラーなしでコンテナ イメージをプルできるように参照します。

Docker Hub には、イメージをプルする元になるアカウントが必要です。Docker Hub 認証情報を使用して Kubernetes シークレットを作成し、ポッドとデプロイ仕様からこのシークレットを参照できます。

この方法は、他のプライベート レジストリにも使用できます。

前提条件

Ubuntu クライアント コンピュータに Docker をインストールします。https://docs.docker.com/engine/install/ubuntu/を参照してください。

手順

  1. docker version を実行し、Docker がインストールされていることを確認します。
  2. docker login -u USERNAME を実行します。
  3. Docker Hub のパスワードを入力します。
  4. cat ~/.docker/config.json を実行します。
  5. 次のコマンドを実行して、Docker Hub アクセス認証情報を含む regcred という名前の汎用シークレットを作成します。
    kubectl create secret generic regcred \
        --from-file=.dockerconfigjson=/home/ubuntu/.docker/config.json \
        --type=kubernetes.io/dockerconfigjson
    
    secret/regcred created が表示されます。
  6. シークレットを確認します。
    kubectl get secrets
    
    NAME                  TYPE                                  DATA   AGE
    default-token-w7wqk   kubernetes.io/service-account-token   3      6h28m
    regcred               kubernetes.io/dockerconfigjson        1      3h22m
    
    YAML で regcred シークレットを参照します。
  7. コンテナ イメージのポッドまたはデプロイ仕様の imagePullSecrets セクションで、regcred シークレットを参照します。
    例:
    apiVersion: v1
    kind: Pod
    metadata:
      name: ping-pod
      namespace: default
    spec:
      containers:
      - image: busybox:1.34
        name: busybox
        command: ["ping", "-c"]
        args: ["1", "8.8.8.8"]
      imagePullSecrets:
      - name: regcred
      restartPolicy: Never