毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
K3sクラスターを作るのは、Edge環境が多いですよね(よね?!)
そうなるとインターネットに出ていけない環境だったり、Dockerイメージを入れているのがGitLabのContainer Registryだったりしますよね(よね?!)。
そういうK3sクラスター向けにPrivate RegistryをK3sクラスターで利用できるようにする方法をご紹介します。
1. 前提
K3sバージョン: v1.19.12+k3s1
Container Runtime: containerd(k3sデフォルトのruntime)
(※)
(※注:Container Runtimeがdockerdの場合には以下の方法では設定できません)
2. Rancherのドキュメントに沿って設定する
ドキュメントのURLは以下の通りです。
https://rancher.com/docs/k3s/latest/en/installation/private-registry/
詳細に書かれているので注釈のしようもないのですが、今回はコンテナーレジストリーがGitLab.comでしたので以下のように記載しました。
mirrors:
docker.io:
endpoint:
- "https://registry.gitlab.com"
configs:
"registry.gitlab.com":
auth:
username: user@example.jp
password: XXXXXXXXXXXXXXXXXX
このファイルを/etc/rancher/k3s/registries.yaml
に保存します。
sudo cp ./registries.yaml /etc/rancher/k3s/registries.yaml
3. k3sの再起動
registries.yaml
ファイルは、k3sが起動したときにしか読み込まれません。
なので、K3sの再起動が必要です。statusで起動したかも確認しておきましょう。
sudo systemctl restart k3s
sudo systemctl status k3s
4. プライベートレジストリーが設定された確認する
設定されたかsudo k3s crictl info
コマンドで確認します。
$ sudo k3s crictl info
以下のような設定が入っていればOKです。
"registry": {
"mirrors": {
"docker.io": {
"endpoint": [
"https://registry.gitlab.com"
],
"rewrite": null
}
},
"configs": {
"registry.gitlab.com": {
"auth": {
"username": "user@example.jp",
"password": "XXXXXXXXXXXXXXXXXX",
"auth": "",
"identitytoken": ""
},
"tls": null
}
},
5. 参考
以下の情報を参考にさせていただきました。
ローカルのDocker Registoryをk3sで構築したKubernetesで利用する方法 - 仮想化通信
https://tech.virtualtech.jp/entry/2019/10/11/152522