GitHub Packagesに置いてあるプライベートなコンテナイメージをKubernetesで使うために、認証情報をシークレットとして登録したい。そのためには、.dockerconfigjson
というファイルが必要である。
認証情報が平文で~/.docker/config.json
に置いてあればこのファイルを.dockerconfigjson
として使えば良いが、最近はセキュアな場所に保存されていてauths
には次のように空オブジェクトがあるだけかと思う。
~/.docker/config.json
{
"credsStore" : "desktop",
"auths" : {
"ghcr.io" : { }
}
}
GitHubが求める認証情報はシンプルなので、.dockerconfigjson
は次のように手作業で作成できる。
.dockerconfigjson
{
"auths": {
"ghcr.io": {
"username": "<user>",
"password": "<token>",
"auth": "<base64 username:token>"
}
}
}
<user>
はGithubのアカウント名、<token>
はアクセストークン、<base64 username:token>
はアカウント名とアクセストークンをコロンで繋いだ文字列をBase64エンコードしたものをそれぞれ記入する。
ちなみに、この.dockerconfigjson
をkustomizeから使う場合、Secretの種類をkubernetes.io/dockerconfigjson
にする。
kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
secretGenerator:
name: github
type: kubernetes.io/dockerconfigjson
files:
.dockerconfigjson