VMware TKG などの Kubernetes クラスタを閉域またはプロキシ環境で使う場合、内部レジストリとして Harbor を用意する必要があります。この記事では、TKG の前提基盤として Harbor を整える観点で再整理します。
参考
書籍
書籍
参考書籍
Kubernetes完全ガイド 第2版
Kubernetes、コンテナ、クラスタ運用、ネットワークまわりを体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
なぜ Harbor が必要になるのか
- 外部レジストリへ直接到達できない環境でイメージを配布するため。
- クラスタ構築時に必要なイメージを内部にミラーするため。
- プロジェクト単位でイメージを管理し、認証や権限を分けるため。
- Kubernetes ノードが参照するレジストリを内部に固定するため。
全体構成
| 要素 | 役割 |
| Photon OS | Harbor 実行用 OS |
| Harbor | 内部レジストリ |
| TLS 証明書 | ノードから信頼される HTTPS 接続 |
| TKG / Kubernetes ノード | Harbor からイメージを pull する側 |
Photon OS の準備
hostnamectl set-hostname harbor.example.local
tdnf update -y
tdnf install -y docker docker-compose wget tar openssl
systemctl enable --now dockerプロキシ環境での Docker 設定
プロキシ配下では Docker daemon 側にも proxy を設定します。`NO_PROXY` には Harbor、Kubernetes ノード、クラスタ内部ネットワークを含めます。
mkdir -p /etc/systemd/system/docker.service.d
cat <<'EOF' > /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.local:3128"
Environment="HTTPS_PROXY=http://proxy.example.local:3128"
Environment="NO_PROXY=localhost,127.0.0.1,harbor.example.local,10.0.0.0/8,192.168.0.0/16"
EOF
systemctl daemon-reload
systemctl restart docker
systemctl show --property=Environment dockerHarbor の導入
wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-online-installer-v2.10.0.tgz
tar xzf harbor-online-installer-v2.10.0.tgz
cd harbor
cp harbor.yml.tmpl harbor.yml
./prepare
./install.sh
docker compose psKubernetes ノード側の確認
Harbor を使う側では、名前解決、TLS 信頼、レジストリ認証を確認します。TKG ではここが不完全だとクラスタ構築やイメージ pull で詰まります。
curl -k https://harbor.example.local/
docker login harbor.example.local
docker pull harbor.example.local/library/test-image:latestまとめ
TKG や閉域 Kubernetes 環境では、Harbor は補助的なツールではなく前提基盤です。クラスタ構築手順より先に、内部レジストリ、TLS、プロキシ、名前解決を安定させる必要があります。
VMware TKG 向け Harbor 構築 – 閉域 Kubernetes の内部レジストリ



