はじめに
GitHub Container RegirstryにPrivateで配置したコンテナイメージをKubernetesで使う方法を紹介する.
結論
imagePullSecretsを利用する.
プライベートレジストリを使用する方法 - イメージ | Kubernetes
方法
(1) imagePullSecretsの登録
プライベートイメージをPullするときに使うシークレット(imagePullSecrets)を登録する.
今回は以下のリンク先にある既存Docker用設定ファイルを流用する方法を使った.
GitHub Container Registryのセットアップ方法は過去の記事にある.
Pull an Image from a Private Registry | Kubernetes
~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "xxxxxxxxxxxxxxxxx"
},
"ghcr.io": {
"auth": "xxxxxxxxxxxxxxxxx"
}
}
}
手元のマシンで以下のコマンドを実行してYAMLを生成した.
kubectl create secret generic regcred \
--from-file=.dockerconfigjson=~/.docker/config.json \
--type=kubernetes.io/dockerconfigjson --dry-run=client -o yaml
コマンドの実行結果
ghcr.yaml
apiVersion: v1
data:
.dockerconfigjson: XXX
kind: Secret
metadata:
creationTimestamp: null
name: regcred
type: kubernetes.io/dockerconfigjson
YAMLの中身をリモートにコピーしてデプロイする.
kubectl apply -f ghcr.yaml
(2) imagePullSecretsをDeploymentに追記
以下を参考にDeploymentに imagePullSecrets を記述する.
dep.yaml
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
imagePullSecrets:
- name: regcred
# 略
kubectlコマンドでデプロイする.
kubectl apply -f dep.yaml
おわりに
プライベートレジストリも慣れれば簡単にPullできるので,この機会に利用していきたい.