GitHubアクセス用の.dockerconfigjsonを手作業で作る


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

参考