GitHub Packagesに置いてあるプライベートなコンテナイメージをKubernetesで使うために、認証情報をシークレットとして登録したい。そのためには、.dockerconfigjsonというファイルが必要である。
認証情報が平文で~/.docker/config.jsonに置いてあればこのファイルを.dockerconfigjsonとして使えば良いが、最近はセキュアな場所に保存されていてauthsには次のように空オブジェクトがあるだけかと思う。
{
"credsStore" : "desktop",
"auths" : {
"ghcr.io" : { }
}
}
GitHubが求める認証情報はシンプルなので、.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にする。
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
secretGenerator:
name: github
type: kubernetes.io/dockerconfigjson
files:
.dockerconfigjson