目次
- EKS Clusterの作成
- EULAの承諾
- Tanzu CLIのインストール
- Cluster Essentials for VMware Tanzuのインストール
- TBS 1.4のインストール
- イメージの作成
- TBS 1.5へアップデート
EKS Clusterの作成
ekscli
でクラスタを作成します。
$ eksctl version
0.99.0
eksctl create cluster --name tbs-dev --region ap-northeast-1
EULAの承諾
未実施の場合は、以下のEULAを承諾してください。
- Tanzu Build Service
- Tanzu Build Service Dependencies
- Buildpacks for VMware Tanzu
- Stacks for VMware Tanzu
Tanzu CLIのインストール
https://network.pivotal.io/products/tanzu-application-platform/#/releases/1095326/file_groups/8255
tar xvf tanzu-framework-*-amd64.tar
install cli/core/v0.11.4/tanzu-core-*_amd64 /usr/local/bin/tanzu
$ tanzu version
version: v0.11.4
buildDate: 2022-04-16
sha: cc9fde8d
プラグインのインストール
tanzu plugin install --local cli all
Cluster Essentials for VMware Tanzuのインストール
TBSのインストールに必要なKapp ControllerとSecretgen Controllerをデプロイするために Cluster Essentials for VMware Tanzuをインストールします。
TANZUNET_USERNAME=...
TANZUNET_PASSWORD=...
mkdir tanzu-cluster-essentials
tar xzvf tanzu-cluster-essentials-*-amd64-1.1.0.tgz -C tanzu-cluster-essentials
export INSTALL_BUNDLE=registry.tanzu.vmware.com/tanzu-cluster-essentials/cluster-essentials-bundle:1.1.0
export INSTALL_REGISTRY_HOSTNAME=registry.tanzu.vmware.com
export INSTALL_REGISTRY_USERNAME=${TANZUNET_USERNAME}
export INSTALL_REGISTRY_PASSWORD=${TANZUNET_PASSWORD}
cd tanzu-cluster-essentials
./install.sh --yes
cd ..
Cluster Essentialsインストール後のPod一覧は次の通り。
$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kapp-controller kapp-controller-dcdb47b74-s8s6c 1/1 Running 0 99s
kube-system aws-node-65kcx 1/1 Running 0 18m
kube-system aws-node-rqpmj 1/1 Running 0 18m
kube-system coredns-5b6d4bd6f7-5jmzn 1/1 Running 0 27m
kube-system coredns-5b6d4bd6f7-rqgc5 1/1 Running 0 27m
kube-system kube-proxy-67j4v 1/1 Running 0 18m
kube-system kube-proxy-sxm7p 1/1 Running 0 18m
secretgen-controller secretgen-controller-8b588c4d-s2vrq 1/1 Running 0 73s
TBS 1.4のインストール
TBSをインストールするためのnamespaceを作成します。
kubectl create ns tbs-install
TBSのイメージをpullするためのSecretの登録、及び各namespaceへ公開を行います。
tanzu secret registry add tbs-install-registry \
--username ${INSTALL_REGISTRY_USERNAME} \
--password ${INSTALL_REGISTRY_PASSWORD} \
--server ${INSTALL_REGISTRY_HOSTNAME} \
--export-to-all-namespaces --yes --namespace tbs-install
TBSのPackage Repositoryを登録します。今回は1.4.3を使用します。
tanzu package repository add tbs-repository \
--url registry.tanzu.vmware.com/build-service/package-repo:1.4.3 \
--namespace tbs-install
利用可能なPackage一覧を確認します。
$ tanzu package available list --namespace tbs-install
- Retrieving available packages...
NAME DISPLAY-NAME SHORT-DESCRIPTION LATEST-VERSION
buildservice.tanzu.vmware.com Tanzu Build Service Tanzu Build Service enables the building and automation of containerized software workflows securely and at scale. 1.4.3
TBSをインストールするためのvaluesを用意します。デフォルトのコンテナレジストリとしてここではGitHub Container Registryを使用します。
GITHUB_USERNAME=...
GITHUB_API_TOKEN=...
cat <<EOF > tbs-values.yml
kp_default_repository: ghcr.io/${GITHUB_USERNAME}/build-service
kp_default_repository_username: ${GITHUB_USERNAME}
kp_default_repository_password: ${GITHUB_API_TOKEN}
tanzunet_username: ${TANZUNET_USERNAME}
tanzunet_password: ${TANZUNET_PASSWORD}
enable_automatic_dependency_updates: true
pull_from_kp_default_repo: false
descriptor_name: lite
EOF
ℹ️
pull_from_kp_default_repo
をfalse
にすることでTBS関連のイメージをTanzu Netのregistryからpullできる。
pull_from_kp_default_repo
がtrue
の場合は、kp_default_repository
に指定したregistryからpullするので、事前にimgpkg
コマンドでrelocationしておく必要がある。
今回はrelocation手間を省くため、Tanzu Netのregistryを使用する。
なお、TBSが使用するBuilderはkp_default_repository
に指定したregistryへpushされる。
TBSをインストールします。
tanzu package install tbs -p buildservice.tanzu.vmware.com -v 1.4.3 -n tbs-install -f tbs-values.yml --poll-timeout 30m
待ちます。
/ Installing package 'buildservice.tanzu.vmware.com'
/ Getting package metadata for 'buildservice.tanzu.vmware.com'
| Creating service account 'tbs-tbs-install-sa'
| Creating cluster admin role 'tbs-tbs-install-cluster-role'
| Creating cluster role binding 'tbs-tbs-install-cluster-rolebinding'
| Creating secret 'tbs-tbs-install-values'
| Creating package resource
/ Waiting for 'PackageInstall' reconciliation for 'tbs'
/ 'PackageInstall' resource install status: Reconciling
Added installed package 'tbs'
進捗は次のコマンドで確認できます。
kubectl get app tbs -n tbs-install -ojsonpath='{.status.deploy.stdout}'
ループしておくと便利です。
while true;do kubectl get app tbs -n tbs-install -ojsonpath='{.status.deploy.stdout}';sleep 2;done
build-pod-image-fetcher
のInitializeに時間がかかるはずです。
インストール済みパッケージ一覧を確認します。
$ tanzu package installed list -n tbs-install
NAME PACKAGE-NAME PACKAGE-VERSION STATUS
tbs buildservice.tanzu.vmware.com 1.4.3 Reconcile succeeded
Pod一覧は次の通り。
$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
build-service build-pod-image-fetcher-9pq9h 5/5 Running 0 5m
build-service build-pod-image-fetcher-vgfxc 5/5 Running 0 5m
build-service dependency-updater-controller-6697768bf4-v7thk 1/1 Running 0 5m
build-service secret-syncer-controller-598855f75-5qghn 1/1 Running 0 5m
build-service smart-warmer-image-fetcher-7trwj 0/2 Init:0/1 0 28s
build-service smart-warmer-image-fetcher-ftb8n 0/2 Init:0/1 0 28s
build-service warmer-controller-6577547bcb-25qm8 1/1 Running 0 5m
cert-injection-webhook cert-injection-webhook-76b8fc4f8d-dp92b 1/1 Running 0 5m
kapp-controller kapp-controller-dcdb47b74-s8s6c 1/1 Running 0 12m
kpack kpack-controller-87659bdb5-vz4pp 1/1 Running 0 5m
kpack kpack-webhook-6c94559979-86ftd 1/1 Running 0 5m
kube-system aws-node-65kcx 1/1 Running 0 29m
kube-system aws-node-rqpmj 1/1 Running 0 29m
kube-system coredns-5b6d4bd6f7-5jmzn 1/1 Running 0 38m
kube-system coredns-5b6d4bd6f7-rqgc5 1/1 Running 0 38m
kube-system kube-proxy-67j4v 1/1 Running 0 29m
kube-system kube-proxy-sxm7p 1/1 Running 0 29m
secretgen-controller secretgen-controller-8b588c4d-s2vrq 1/1 Running 0 11m
stacks-operator-system controller-manager-7597794dc-hl6nx 1/1 Running 0 5m
ClusterBuilderが作成されていることを確認します。
$ kp clusterbuilder list
NAME READY STACK IMAGE
base true io.buildpacks.stacks.bionic ghcr.io/making/build-service:clusterbuilder-base@sha256:93b3db8b0d04b799856b7b36eca684fa490260b6fec03718af7d6da369032d82
default true io.buildpacks.stacks.bionic ghcr.io/making/build-service:clusterbuilder-default@sha256:93b3db8b0d04b799856b7b36eca684fa490260b6fec03718af7d6da369032d82
各namespaceがClusterBuilderがpushされているkp-default-repository
からイメージをpullできるようにSecretを公開します。
cat <<EOF > kp-default-repository-secret-export.yaml
apiVersion: secretgen.carvel.dev/v1alpha1
kind: SecretExport
metadata:
name: kp-default-repository-secret
namespace: build-service
spec:
toNamespace: "*"
EOF
kubectl apply -f kp-default-repository-secret-export.yaml
イメージの作成
ここは開発者観点での作業です。 自分がイメージをpushしたいregistryへのSecretを登録します。ここでは同じくGitHub Container Registryを使用します。
kubectl create ns demo
REGISTRY_PASSWORD=${GITHUB_API_TOKEN} kp secret create ghcr --registry ghcr.io --registry-user ${GITHUB_USERNAME} -n demo
Secretを確認します。
$ kp secret list -n demo
NAME TARGET
default-token-tkqpx
ghcr ghcr.io
サンプルアプリのイメージを作成します。
kp image save hello-servlet -n demo --tag ghcr.io/${GITHUB_USERNAME}/hello-servlet --git https://github.com/making/hello-servlet --git-revision master --wait
完了したらdockerで起動して動作確認します。
docker run --rm -p 8080:8080 --pull always ghcr.io/${GITHUB_USERNAME}/hello-servlet
TBS 1.5へアップデート
TBS 1.4 -> 1.5へアップデートします。1.5のリリースノートは次の通り。特に大きな変更はありません。
TBSのPackage Repositoryを1.5.1に変更します。
tanzu package repository update tbs-repository \
--url registry.tanzu.vmware.com/build-service/package-repo:1.5.1 \
--namespace tbs-install
利用可能なパッケージ一覧を確認します。
$ tanzu package available list --namespace tbs-install
NAME DISPLAY-NAME SHORT-DESCRIPTION LATEST-VERSION
buildservice.tanzu.vmware.com Tanzu Build Service Tanzu Build Service enables the building and automation of containerized software workflows securely and at scale. 1.5.1
インストール済みパッケージ一覧を確認すると、既に1.4.3が存在しないとエラーが出ています。
$ tanzu package installed list -n tbs-install
NAME PACKAGE-NAME PACKAGE-VERSION STATUS
tbs buildservice.tanzu.vmware.com 1.4.3 Reconcile failed: Expected to find at least one version, but did not (details: a... ```
1.5.1にアップデートします。
tanzu package installed update tbs -v 1.5.1 -n tbs-install
進捗は次のコマンドで確認できます。
kubectl get app tbs -n tbs-install -ojsonpath='{.status.deploy.stdout}'
ループしておくと便利です。
while true;do kubectl get app tbs -n tbs-install -ojsonpath='{.status.deploy.stdout}';sleep 2;done
build-pod-image-fetcher
のInitializeに時間がかかるはずです。
インストール済みパッケージ一覧を確認すると1.5.1にバージョンアップされていることがわかります。
$ tanzu package installed list -n tbs-install
NAME PACKAGE-NAME PACKAGE-VERSION STATUS
tbs buildservice.tanzu.vmware.com 1.5.1 Reconcile succeeded
TBSのバージョンは次のConfigMapからも取得できます。
$ kubectl get cm -n build-service build-service-version -ojsonpath='{.data.version}'
1.5.1