2019-11-15
GKEでは特に何も設定しなくても、同一プロジェクトのGCRのDockerイメージをpullできる。GCRはプライベートレジストリなので当然だが、プロジェクト外では認証が必要となる。今回は、ローカルのKubernetesでGCRのイメージをpullしたかったので、その手順を残す。
まず、GCRの読み取り権限を持つサービスアカウントのキーをつくる。
続いて、以下のコマンドでsecretを作成する。
kubectl create secret docker-registry gcr-puller \
--docker-server=gcr.io \
--docker-username=_json_key \
--docker-password="$(cat /path/to/service_account_key.json)" \
[email protected]
YAMLにエクスポートする場合は、以下のコマンドを実行する。
kubectl get secret gcr-puller -o yaml > secret.yaml
最後に、deploymentのimagePullSecrets
に作成したsecretを指定する。自分の場合、Kustomizeでローカル環境のみimagePullSecrets
を設定したかったので、以下のようなpatchを書いた。
apiVersion: apps/v1
kind: Deployment
metadata:
name: target-deployment
spec:
template:
spec:
imagePullSecrets:
- name: gcr-puller