姉妹記事はこちら。vSphere with TanzuのWorkload Cluster上にHarborを立てる
姉妹記事はTKG1.6ベースで書いていて、Harborを立てる際にコピペしてよく使っていた。
今回はそれをTKG2.1向けにアップデートしたのがこのメモ。
細かいところで小さな差分はあるが、ほぼほぼ変わっていない。
※4/13訂正
古いtanzuコマンド(v0.25.4)で実施していたため、v2.1.0のtanzuコマンド(v0.28.0)向けに更新した。
前提
以下を前提とする。
- TKGのWorkload Clusterが構築済み(今回はStandalone版TKG2.1.0を利用)
-
type: LoadBalancer
が利用可能 - Carvelツールをインストール済み
- kubectl, yq, tanzuコマンドがインストール済み
- tanzu login実行済み
type: LoadBalancer
はなくても進めることが可能だが、ここでは前提とした。
導入
Tanzu Repositoryの導入
アップデートの検証をしたいので、TKG2.1.1ではなくTKG2.1.0でインストールする。
export TKG_VER=2.1.0
export TKG_REPO=projects.registry.vmware.com/tkg/packages/standard/repo:v${TKG_VER}
TanzuPackageのリポジトリを追加する。他のTanzuPackageをインストールしている人は省略可能。
tanzu package repository add tanzu-standard --url $TKG_REPO --namespace tkg-system
cert-managerのインストール
利用可能なバージョンを確認する。(省略可能)
tanzu package available list cert-manager.tanzu.vmware.com -A
cert-managerをインストールする。package指定のオプション名が変わり、--create-namespace
が使えなくなっている。
export NAMESPACE=my-packages
export CERT_MANAGER_VER='1.7.2+vmware.3-tkg.1'
kubectl create ns $NAMESPACE
tanzu package install cert-manager --package cert-manager.tanzu.vmware.com --namespace $NAMESPACE --version $CERT_MANAGER_VER
Contourのインストール
利用可能なバージョンを確認する。(省略可能)
tanzu package available list contour.tanzu.vmware.com -A
Contourの設定ファイルを生成する。なお設定ファイルの出典元はこちら。type
をLoadBalancer
に書き換えている。
cat << EOF > ./contour-data-values.yaml
---
infrastructure_provider: vsphere
namespace: tanzu-system-ingress
contour:
configFileContents: {}
useProxyProtocol: false
replicas: 2
pspNames: "vmware-system-restricted"
logLevel: info
envoy:
service:
type: LoadBalancer
annotations: {}
nodePorts:
http: null
https: null
externalTrafficPolicy: Cluster
disableWait: false
hostPorts:
enable: true
http: 80
https: 443
hostNetwork: false
terminationGracePeriodSeconds: 300
logLevel: info
pspNames: null
certificates:
duration: 8760h
renewBefore: 360h
EOF
Contourをインストールする。
export NAMESPACE=my-packages
export CONTOUR_VER=1.22.3+vmware.1-tkg.1
tanzu package install contour \
--package contour.tanzu.vmware.com \
--version $CONTOUR_VER \
--values-file contour-data-values.yaml \
--namespace $NAMESPACE
Harborのインストール
利用可能なバージョンを確認する。(省略可能)
tanzu package available list harbor.tanzu.vmware.com -A
バージョンを環境変数に格納する。
export HARBOR_VER=2.6.3+vmware.1-tkg.1
carvelツールとyqがない場合はインストールする。
mkdir local-bin/
curl -L https://carvel.dev/install.sh | K14SIO_INSTALL_BIN_DIR=local-bin bash
export PATH=$PWD/local-bin/:$PATH
sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq
パスワードを自動で設定するスクリプトと設定ファイルをHarborのイメージから抜き出して実行し、設定ファイルを書き換える。なおこの際にバージョン内の"+"は"_"に置換すること。
imgpkg pull -b projects.registry.vmware.com/tkg/packages/standard/harbor:v$(echo $HARBOR_VER|sed "s/+/_/") -o /tmp/harbor
cp /tmp/harbor/config/values.yaml ./harbor-data-values.yaml
bash /tmp/harbor/config/scripts/generate-passwords.sh ./harbor-data-values.yaml
ログインパスワードとドメインを設定する。
export HARBOR_PASSWORD=xxxx
export HARBOR_DOMAIN=harbor.10.151.199.248.sslip.io
sed -i "s/harborAdminPassword: .*/harborAdminPassword: ${HARBOR_PASSWORD}/g" harbor-data-values.yaml
sed -i "s/hostname: .*/hostname: ${HARBOR_DOMAIN}/g" harbor-data-values.yaml
コメントを削除する。
yq -i eval '... comments=""' harbor-data-values.yaml
作成したファイルを使ってインストールする。
export NAMESPACE=my-packages
tanzu package install harbor \
--package harbor.tanzu.vmware.com \
--version $HARBOR_VER \
--values-file harbor-data-values.yaml \
--namespace $NAMESPACE
動作確認
ドメインを/etc/hostsに入れて、ブラウザで確認する。
export HARBOR_DOMAIN=harbor.10.151.199.248.sslip.io
export ENVOY_IP=$(kubectl get svc -n tanzu-system-ingress envoy -o jsonpath={.status.loadBalancer.ingress[0].ip})
echo "$ENVOY_IP $HARBOR_DOMAIN" | sudo tee -a /etc/hosts
ユーザ名はadmin
、パスワードは先程設定したパスワードを利用すれば、無事ログインできることが確認できる。