Tanzu Mission Control Self-Managed(TMC-SM)を自宅ラボに構築します。今回は TMC-SM のパッケージをインストールします。
前回はこちら。
今回の内容です。
- 1. tmc-local Namespace の作成
- 2. tanzu-mission-control-packages リポジトリの追加
- 3. 設定ファイル(values.yaml)の作成
- 4. TMC-SM のインストール
- 5. TMC-SM へのログイン
- TMC-SM のアンインストール / リトライ
TKG Workload Cluster に tmc-local Namespace を作成して、パッケージ リポジトリを登録したうえで、TMC-SM をインストールします。
1. tmc-local Namespace の作成
TKG の Workload Cluster に、TMC-SM をインストールする Namespace を作成します。
$ kubectl create ns tmc-local
2. tanzu-mission-control-packages リポジトリの追加
TKG Workload Cluster に、TMC-SM のパッケージ リポジトリを追加します。
$ tanzu package repository add tanzu-mission-control-packages --url lab-harbor-03.go-lab.jp/tmc-sm/package-repository:1.0.0 --namespace tmc-local
TMC-SM のパッケージ リポジトリが追加されました。
$ tanzu package repository list -n tmc-local NAME SOURCE STATUS tanzu-mission-control-packages (imgpkg) lab-harbor-03.go-lab.jp/tmc-sm/package-repository:1.0.0 Reconcile succeeded
下記のパッケージがインストール可能になります。
$ tanzu package available list -A NAMESPACE NAME DISPLAY-NAME tkg-system cert-manager.tanzu.vmware.com cert-manager tkg-system contour.tanzu.vmware.com contour tkg-system external-dns.tanzu.vmware.com external-dns tkg-system fluent-bit.tanzu.vmware.com fluent-bit tkg-system fluxcd-helm-controller.tanzu.vmware.com Flux Helm Controller tkg-system fluxcd-kustomize-controller.tanzu.vmware.com Flux Kustomize Controller tkg-system fluxcd-source-controller.tanzu.vmware.com Flux Source Controller tkg-system grafana.tanzu.vmware.com grafana tkg-system harbor.tanzu.vmware.com harbor tkg-system multus-cni.tanzu.vmware.com multus-cni tkg-system prometheus.tanzu.vmware.com prometheus tkg-system whereabouts.tanzu.vmware.com whereabouts tmc-local contour.bitnami.com contour tmc-local kafka-topic-controller.tmc.tanzu.vmware.com kafka-topic-controller tmc-local kafka.bitnami.com kafka tmc-local minio.bitnami.com minio tmc-local monitoring.tmc.tanzu.vmware.com monitoring tmc-local pinniped.bitnami.com pinniped tmc-local postgres-endpoint-controller.tmc.tanzu.vmware.com postgres-endpoint-controller tmc-local s3-access-operator.tmc.tanzu.vmware.com s3-access-operator tmc-local tmc-local-postgres.tmc.tanzu.vmware.com tmc-local-postgres tmc-local tmc-local-stack-secrets.tmc.tanzu.vmware.com tmc-local-stack-secrets tmc-local tmc-local-stack.tmc.tanzu.vmware.com tmc-local-stack tmc-local tmc-local-support.tmc.tanzu.vmware.com tmc-local-support tmc-local tmc.tanzu.vmware.com tmc-local
3. 設定ファイル(values.yaml)の作成
指定可能なパラメータは、下記のように確認できます。
$ tanzu package available get tmc.tanzu.vmware.com/1.0.0 --namespace tmc-local --values-schema KEY DEFAULT TYPE DESCRIPTION clusterIssuer "" string Cert-Manager ClusterIssuer to use. This must be pre-created in the tmc-local namespace. minio.password "" string Admin password to use for internal Minio minio.username "" string Admin username to use for internal Minio oidc.clientID "" string OIDC Client ID defined in your IDP oidc.clientSecret "" string OIDC Client Secret defined in your IDP oidc.issuerType "" string OIDC issuer type. `pinniped` is the only supported option currently. oidc.issuerURL "" string OIDC issuer URL for your IDP pinnipedExtraEnvVars array Extra Environment Variables to pass to Pinniped deployment postgres.maxConnections 300 integer Maximum connections the internal Postgres database should allow. This should only be changed in consultation with VMware support. postgres.userPassword "" string Password for the 'postgres' admin user prometheusVolumeSize 5Gi string Persistent volume size for Prometheus data volume - generally given in Gibibytes (100Gi) trustedCAs Adds trusted CAs (in pem format) to the bundle used by services. This should be in a key value form alertmanager.criticalAlertReceiver Critical alert receiver configuration for alert-manager alertmanager.warningAlertReceiver Warning alert receiver configuration for alert-manager contourEnvoy.loadBalancerClass string Load Balancer Class to use for Contour's Envoy contourEnvoy.loadBalancerIP string Load balancer IP for Contour's Envoy. This is the legacy way to use a pre-provisioned IP for a K8s serivce of type `loadBalancer` and is deprecated from Kubernetes version 1.24. contourEnvoy.nodeSelector "" Node Label Selectors for Contour's Envoy pod assignment contourEnvoy.nodeTolerations array Tolerations for Contour's Envoy pod assignment contourEnvoy.serviceAnnotations "" Annotations to place on Contour's Envoy Pods. Your load balancer specific annotations to use a pre-provisioned IP. Refer https://github.com/vmware/load-balancer-and-ingress-services-for-kubernetes/blob/master/docs/objects.md#service-of-type-loadbalancer-with-preferred-ip for an AVI specific information. contourEnvoy.serviceType "" string Service Type for Contour's Envoy. Must be one of Loadbalancer or NodePort. dnsZone "" string Hosted DNS zone where the DNS A-records for Tanzu Mission Control Self-Managed service will reside in harborProject "" string Harbor Project where Tanzu Mission Control Self-Managed service images have been pushed to using the `push-images` command supportFlags array Flags a support engineer may ask you to add if you need support telemetry.ceipAgreement false boolean Indicates that you have read the CEIP terms and conditions through the product documentation telemetry.ceipOptIn false boolean CEIP Opt in to send telemetry data telemetry.eanNumber "" string Entitlement Account Number on VMware Customer Connect
下記のように YAML ファイル(values.yml)を作成しました。
tmc-sm_values.yml
- L14 の ako.vmware.com/load-balancer-ip には、NSX ALB に設定する VIP アドレス(192.168.61.230)を指定しています。これは、TMC-SM のインストール中に NSX ALB に自動設定されます。
- oidc.issuerURL にある「dev-nnnn.okta.com」の部分は、Okta の Web UI の URL や画面左上のあたりにある「dev-nnnn」といった文字列です。
4. TMC-SM のインストール
tanzu package install コマンドで、tmc.tanzu.vmware.com パッケージをインストールします。
$ tanzu package install tanzu-mission-control -p tmc.tanzu.vmware.com --version 1.0.0 --values-file tmc-sm_values.yml --namespace tmc-local
成功すると、下記のようになります。
$ tanzu package installed list -A NAMESPACE NAME PACKAGE-NAME PACKAGE-VERSION STATUS tkg-system cert-manager cert-manager.tanzu.vmware.com 1.10.2+vmware.1-tkg.1 Reconcile succeeded tkg-system tkg22wc03-antrea antrea.tanzu.vmware.com 1.9.0+vmware.2-tkg.1-advanced Reconcile succeeded tkg-system tkg22wc03-capabilities capabilities.tanzu.vmware.com 0.29.0+vmware.1 Reconcile succeeded tkg-system tkg22wc03-load-balancer-and-ingress-service load-balancer-and-ingress-service.tanzu.vmware.com 1.9.3+vmware.1-tkg.1 Reconcile succeeded tkg-system tkg22wc03-metrics-server metrics-server.tanzu.vmware.com 0.6.2+vmware.1-tkg.2 Reconcile succeeded tkg-system tkg22wc03-pinniped pinniped.tanzu.vmware.com 0.12.1+vmware.3-tkg.4 Reconcile succeeded tkg-system tkg22wc03-secretgen-controller secretgen-controller.tanzu.vmware.com 0.11.2+vmware.1-tkg.3 Reconcile succeeded tkg-system tkg22wc03-tkg-storageclass tkg-storageclass.tanzu.vmware.com 0.29.0+vmware.1 Reconcile succeeded tkg-system tkg22wc03-vsphere-cpi vsphere-cpi.tanzu.vmware.com 1.25.1+vmware.2-tkg.1 Reconcile succeeded tkg-system tkg22wc03-vsphere-csi vsphere-csi.tanzu.vmware.com 2.7.1+vmware.2-tkg.1 Reconcile succeeded tmc-local contour contour.bitnami.com 12.1.0 Reconcile succeeded tmc-local kafka kafka.bitnami.com 22.1.3 Reconcile succeeded tmc-local kafka-topic-controller kafka-topic-controller.tmc.tanzu.vmware.com 0.0.21 Reconcile succeeded tmc-local minio minio.bitnami.com 12.6.4 Reconcile succeeded tmc-local pinniped pinniped.bitnami.com 1.2.1 Reconcile succeeded tmc-local postgres tmc-local-postgres.tmc.tanzu.vmware.com 0.0.46 Reconcile succeeded tmc-local postgres-endpoint-controller postgres-endpoint-controller.tmc.tanzu.vmware.com 0.1.43 Reconcile succeeded tmc-local s3-access-operator s3-access-operator.tmc.tanzu.vmware.com 0.1.22 Reconcile succeeded tmc-local tanzu-mission-control tmc.tanzu.vmware.com 1.0.0 Reconcile succeeded tmc-local tmc-local-monitoring monitoring.tmc.tanzu.vmware.com 0.0.13 Reconcile succeeded tmc-local tmc-local-stack tmc-local-stack.tmc.tanzu.vmware.com 0.0.17161 Reconcile succeeded tmc-local tmc-local-stack-secrets tmc-local-stack-secrets.tmc.tanzu.vmware.com 0.0.17161 Reconcile succeeded tmc-local tmc-local-support tmc-local-support.tmc.tanzu.vmware.com 0.0.17161 Reconcile succeeded
L7 ロードバランサーの設定は、NSX ALB ではなく Contour が利用されています。
$ kubectl get ingressclasses.networking.k8s.io NAME CONTROLLER PARAMETERS AGE tmc-local projectcontour.io/tmc-local/contour-contour15m $ kubectl get ingress -n tmc-local NAME CLASS HOSTS ADDRESS PORTS AGE alertmanager-tmc-local-monitoring-tmc-local-ingress tmc-local alertmanager.tmc.go-lab.jp 192.168.61.230 80 9m35s landing-service-ingress-global tmc-local landing.tmc.go-lab.jp 192.168.61.230 80, 443 11m minio tmc-local console.s3.tmc.go-lab.jp 192.168.61.230 80 13m minio-api tmc-local s3.tmc.go-lab.jp 192.168.61.230 80, 443 13m prometheus-server-tmc-local-monitoring-tmc-local-ingress tmc-local prometheus.tmc.go-lab.jp 192.168.61.230 80 9m35s $ kubectl get httpproxies.projectcontour.io -n tmc-local NAME FQDN TLS SECRET STATUS STATUS DESCRIPTION auth-manager-server auth.tmc.go-lab.jp server-tls valid Valid HTTPProxy minio-api-proxy s3.tmc.go-lab.jp minio-tls valid Valid HTTPProxy minio-bucket-proxy tmc-local.s3.tmc.go-lab.jp minio-tls valid Valid HTTPProxy minio-console-proxy console.s3.tmc.go-lab.jp minio-tls valid Valid HTTPProxy pinniped-supervisor pinniped-supervisor.tmc.go-lab.jp valid Valid HTTPProxy stack-http-proxy tmc.go-lab.jp stack-tls valid Valid HTTPProxy tenancy-service-http-proxy gts.tmc.go-lab.jp valid Valid HTTPProxy tenancy-service-http-proxy-rest gts-rest.tmc.go-lab.jp valid Valid HTTPProxy
5. TMC-SM へのログイン
Web ブラウザから、TMC-SM にログインします。設定やインストールに失敗している場合はログインを何度か試行することいなるので、Web ブラウザはシークレット モードやゲスト モードを利用すると便利です。
アドレスは values.yaml の dnsZone に指定したもので、今回の設定であれば下記の URL になります。
今回は cert-manager の CA 証明書をアクセス元マシンにインストールしていないので、証明書エラーを無視してすすみます。
tmc.go-lab.jp の証明書エラーを無視します。
TMC-SM の Welcome 画面が表示されるので、「SIGN IN」をクリックします。
landing.tmc.go-lab.jp の証明書エラーを無視します。
auth.tmc.go-lab.jp の証明書エラーを無視します。
pinniped-supervisor.tmc.go-lab.jp の証明書エラーを無視します。
Okta のログイン画面にリダイレクトされます。
tmc:admin Group に所属しているユーザでログインします。
そして認証に成功すると、TMC-SM にログインできます。
ここまでの Web ブラウザでの証明書エラー(4回)は、cert-manager の CA 証明書(下記の「3-3. Cluster Issuer(CA)の CA 証明書の確認」)の CA 証明書証明書を、アクセス元の証明書ストアにインストールすると回避できます。
Windows の場合は、「信頼されたルート認証機関」に CA 証明書をインストールします。
TMC-SM のアンインストール / リトライ
インストールに失敗した場合は、下記のようにアンインストールしてから再試行するとよいかなと思います。
まず、tanzu package installed delete でパッケージを削除します。
$ tanzu package installed delete -n tmc-local tanzu-mission-control -y
パッケージのアンインストールでは PVC / Secret / ConfigMap が削除されないので、Namespace を削除します。Namespace を削除するために、事前にパッケージ リポジトリの削除が必要です。
$ tanzu package repository delete tanzu-mission-control-packages -n tmc-local -y
最後に、tmc-local Namespace を削除します。これで、TMC-SM のインストールを再試行できるようになります。
$ kubectl delete ns tmc-local
以上、TMC-SM のラボ環境構築でした。
つづきはこちら。