以下の引用元の手順に沿って作業を行った際のメモになります。
英文に慣れていないため、誤りや誤訳があればコメントください。
「※」マークで翻訳とは別に、メモを残している部分があります。
引用元とは関係ない文章になりますので、ご承知おきください。
引用元
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
===
このページでは、Secret を使用してプライベートな Docker Registry または、リポジトリからイメージを取得し、Pod を作成する方法を示します。
はじめに
始める前に、Kubernetes cluster と、cluster へ接続・設定済みの kubectl コマンドラインツールがあること。もし、clusterを未作成であれば、Minikube や Kubernetes を利用して clusterを作成してください。
Docker へのログイン
あなたのPCで、取得したい image が登録されているプライベートリポジトリへ Docker ログインしてください。
docker login
ユーザー名、パスワードを入力してください。
ログインに成功すると、config.json
が作成/更新されます。
これには、認証トークン含まれます。
config.json
を開いてください。
cat ~/.docker/config.json
以下の例のような形で出力されます。
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "c3R...zE2"
}
}
}
注:Docker credentials store を使用している場合、その認証エントリは表示されず、credsStore 項目にはストア名の値が表示されます。
※「Docker credentials store」こちら不勉強でわかりません。
Dockerとの接続を外部の証明書を利用して接続できるサービスの様ですが、
詳しい方がいれば、ご教示ください。
認証トークンを含めた cluster 接続用 Secret の作成
Kubernetes クラスタは、docker-registry の Secret を使用して container registry で認証し、プライベートイメージを取得します。
Secret を仮名で「regcred」とします。※コマンドの実行時、編集が必要となる項目があります!
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>
括弧は、以下の通り。
-
<your-registry-server>
:接続するプライベートリポジトリのFQDNを記載します。
(DockerHubの例 https://index.docker.io/v1/) -
<your-name>
:Dockerのアカウント名を記載します。 -
<your-pword>
:Dockerのアカウント名に紐付くパスワードを入力します。 -
<your-email>
:Dockerのアカウント名に紐付くメールアドレスを入力します。
これで、cluster に「regcred」という名前の Secret を設定したことになります。
設定したSecret (regcred) の検証
作成した regcred (Secret) の内容を確認するために、YAML 形式で表示します。
kubectl get secret regcred --output=yaml
以下の例のような出力結果になります。
apiVersion: v1
data:
.dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
kind: Secret
metadata:
...
name: regcred
...
type: kubernetes.io/dockerconfigjson
.dockerconfigjson
フィールドの値は、Docker の資格情報の base64 表現になります。
.dockerconfigjson
フィールドの内容を理解するには、シークレットデータを読み取り可能な形式に変換します。
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode
以下の例のような出力結果となります。
{"auths":{"yourprivateregistry.com":{"username":"janedoe","password":"xxxxxxxxxxx","email":"jdoe@example.com","auth":"c3R...zE2"}}}
auth フィールドの内容を理解するには、base64 でエンコードされたデータを読み込み可能な形式に変換します。
echo "c3R...zE2" | base64 --decode
「:」(コロン)で連結されたユーザー名とパスワードが出力されます。
Secret データには、あなたのローカルと同様の認証トークンが含まれています。
~/.docker/config.json
Docker 資格情報をクラスタ内の「regcred」という Secret として正常に設定しました。
Secret を使った Pod の作成
以下は、regcred の Docker 資格情報にアクセスする必要がある Pod の設定ファイルです:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image: <your-private-image>
imagePullSecrets:
- name: regcred
上記のファイルをダウンロードしてください:
wget -O my-private-reg-pod.yaml https://k8s.io/examples/pods/private-reg-pod.yaml
my-private-reg-pod.yaml
ファイルで、<your-private-image>
を次のようなプライベートレジストリ内のイメージのパスに置き換えます。
janedoe/jdoe-private:v1
プライベートリポジトリからイメージを取得するには、Kubernetes に資格情報が必要です。構成ファイル内のimagePullSecretsフィールドは、Kubernetes が、regcred という名前の Secret から資格情報を取得する必要があることを指定します。
Secret を使用するPodを作成し、Pod が実行中であることを確認します。
kubectl create -f my-private-reg-pod.yaml
kubectl get pod private-reg
引用元
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/