vm.gowatana.jp

NEOにほんごVMware(仮)

Tanzu Mission Control Self-Managed 自宅ラボ構築。Part-06 TMC-SM パッケージのインストール

Tanzu Mission Control Self-Managed(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」といった文字列です。

gist.github.com

 

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-contour          15m
$ 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 のラボ環境構築でした。

つづきはこちら。