TKGm v1.4 にContour, Harbor, Prometheus, Grafana をデプロイする
VMUG ADVANTAGE を利用し、Tanzu Kubernetes Grid multicloud(TKGm) v1.4をインストールした際の手順です。
手順としては、ほとんど「Tanzu Kubernetes Grid(TKGm) v1.3.1にContour, Harbor, TBSをデプロイした際の手順」と同じです。
環境
- Tanzu Kubernetes Grid v1.4 on vSphere
手順
TKGm のデプロイ
VMUG ADVANTAGE にあるvSphere7 とTanzu を利用して、TKGm 環境をデプロイしていいきます。
以下のドキュメントに従って、まずはTKGm のManagement Cluster, Tanzu Kubernetes Cluster をデプロイしていきます。
govc
を利用し、事前の準備を行うために以下の環境変数をセットしておきます。$ cat tkgm-env.sh
export GOVC_USERNAME=xxxx
export GOVC_PASSWORD=xxxx
export GOVC_DATACENTER=Datacenter
export GOVC_NETWORK="VM Network"
export GOVC_DATASTORE=datastore1
export GOVC_RESOURCE_POOL=/Datacenter/host/Cluster/Resources/tkgm
export GOVC_INSECURE=1
export TEMPLATE_FOLDER=/Datacenter/vm/tkgm
export GOVC_URL=xxxx
source tkgm-env.sh
ダウンロードしておいたTKGm のノードOS として利用するOVA をインポートしていきます。
$ cat options.json
{
"DiskProvisioning": "thin"
}
govc import.ova --options=options.json -folder ${TEMPLATE_FOLDER} ../packages/ubuntu-2004-kube-v1.20.8+vmware.1-tkg.1-17589475007677388652.ova
govc import.ova --options=options.json -folder ${TEMPLATE_FOLDER} ../packages/ubuntu-2004-kube-v1.21.2+vmware.1-tkg.1-7832907791984498322.ova
govc import.ova --options=options.json -folder ${TEMPLATE_FOLDER} ../packages/ubuntu-2004-kube-v1.19.12+vmware.1-tkg.1-15841320193950299489.ova
インポートしたOVA をテンプレート化します。
govc vm.markastemplate ${TEMPLATE_FOLDER}/ubuntu-2004-kube-v1.19.12
govc vm.markastemplate ${TEMPLATE_FOLDER}/ubuntu-2004-kube-v1.20.8
govc vm.markastemplate ${TEMPLATE_FOLDER}/ubuntu-2004-kube-v1.21.2
上の手順に従って、
tanzu
CLI を導入していきます。$ tar xvf tanzu-cli-bundle-linux-amd64.tar
cli/
cli/core/
cli/core/v1.4.0/
cli/core/v1.4.0/tanzu-core-linux_amd64
cli/core/plugin.yaml
cli/login/
cli/login/v1.4.0/
cli/login/v1.4.0/tanzu-login-linux_amd64
cli/login/plugin.yaml
cli/cluster/
cli/cluster/v1.4.0/
cli/cluster/v1.4.0/tanzu-cluster-linux_amd64
cli/cluster/plugin.yaml
cli/package/
cli/package/v1.4.0/
cli/package/v1.4.0/tanzu-package-linux_amd64
cli/package/plugin.yaml
cli/management-cluster/
cli/management-cluster/v1.4.0/
cli/management-cluster/v1.4.0/tanzu-management-cluster-linux_amd64
cli/management-cluster/plugin.yaml
cli/pinniped-auth/
cli/pinniped-auth/v1.4.0/
cli/pinniped-auth/v1.4.0/tanzu-pinniped-auth-linux_amd64
cli/pinniped-auth/plugin.yaml
cli/kubernetes-release/
cli/kubernetes-release/v1.4.0/
cli/kubernetes-release/v1.4.0/tanzu-kubernetes-release-linux_amd64
cli/kubernetes-release/plugin.yaml
cli/manifest.yaml
cli/ytt-linux-amd64-v0.34.0+vmware.1.gz
cli/kapp-linux-amd64-v0.37.0+vmware.1.gz
cli/imgpkg-linux-amd64-v0.10.0+vmware.1.gz
cli/kbld-linux-amd64-v0.30.0+vmware.1.gz
cli/vendir-linux-amd64-v0.21.1+vmware.1.gz
sudo install core/v1.4.0/tanzu-core-linux_amd64 /usr/local/bin/tanzu
tanzu plugin clean
cd ..
tanzu plugin install --local cli all
tanzu plugin list
Management Cluster のデプロイ
Management Cluster をデプロイしていきます。
$ tanzu management-cluster create --ui --bind <tanzu cliを実行したホストのIPアドレス>:8080
unable to open browser: exec: "xdg-open": executable file not found in $PATH
Identity Provider not configured. Some authentication features won't work.
Validating configuration...
web socket connection established
sending pending 2 logs to UI
Using infrastructure provider vsphere:v0.7.10
Generating cluster configuration...
Setting up bootstrapper...
...
Management cluster created!
You can now create your first workload cluster by running the following:
tanzu cluster create [name] -f [file]
$ tanzu management-cluster get
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES
schecter tkg-system running 1/1 1/1 v1.21.2+vmware.1 management
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/schecter True 12m
├─ClusterInfrastructure - VSphereCluster/schecter True 12m
├─ControlPlane - KubeadmControlPlane/schecter-control-plane True 12m
│ └─Machine/schecter-control-plane-rqmnv True 12m
└─Workers
└─MachineDeployment/schecter-md-0
└─Machine/schecter-md-0-77c465c97f-n8577 False Info WaitingForClusterInfrastructure 12m
Providers:
NAMESPACE NAME TYPE PROVIDERNAME VERSION WATCHNAMESPACE
capi-kubeadm-bootstrap-system bootstrap-kubeadm BootstrapProvider kubeadm v0.3.23
capi-kubeadm-control-plane-system control-plane-kubeadm ControlPlaneProvider kubeadm v0.3.23
capi-system cluster-api CoreProvider cluster-api v0.3.23
capv-system infrastructure-vsphere InfrastructureProvider vsphere v0.7.10
tanzu management-cluster kubeconfig get --admin --export-file kubeconfig-lab-schecter
export KUBECONFIG=~/kubeconfig-lab-schecter
$ k get nodes
NAME STATUS ROLES AGE VERSION
schecter-control-plane-rqmnv Ready control-plane,master 20m v1.21.2+vmware.1
schecter-md-0-77c465c97f-n8577 Ready <none> 18m v1.21.2+vmware.1
Management Cluster 内には以下の様なリソースが立ち上がります。
$ k get all -A
NAMESPACE NAME READY STATUS RESTARTS AGE
capi-kubeadm-bootstrap-system pod/capi-kubeadm-bootstrap-controller-manager-6494884869-hxg5c 2/2 Running 0 14m
capi-kubeadm-control-plane-system pod/capi-kubeadm-control-plane-controller-manager-857d687b9d-q9jdp 2/2 Running 0 14m
capi-system pod/capi-controller-manager-778bd4dfb9-gsmxg 2/2 Running 0 14m
capi-webhook-system pod/capi-controller-manager-9995bdc94-lh5w2 2/2 Running 0 14m
capi-webhook-system pod/capi-kubeadm-bootstrap-controller-manager-68845b65f8-qph6n 2/2 Running 0 14m
capi-webhook-system pod/capi-kubeadm-control-plane-controller-manager-9847c6747-4n2zp 2/2 Running 0 14m
capi-webhook-system pod/capv-controller-manager-55bf67fbd5-zlnlc 2/2 Running 0 14m
capv-system pod/capv-controller-manager-587fbf697f-r828x 2/2 Running 0 14m
cert-manager pod/cert-manager-77f6fb8fd5-28nfw 1/1 Running 0 20m
cert-manager pod/cert-manager-cainjector-6bd4cff7bb-2tc4z 1/1 Running 0 20m
cert-manager pod/cert-manager-webhook-fbfcb9d6c-fvzdc 1/1 Running 0 20m
kube-system pod/antrea-agent-d74wn 2/2 Running 0 10m
kube-system pod/antrea-agent-vr62n 2/2 Running 0 11m
kube-system pod/antrea-controller-55b45848bc-lxvd2 1/1 Running 0 10m
kube-system pod/coredns-8dcb5c56b-n67kj 1/1 Running 0 20m
kube-system pod/coredns-8dcb5c56b-n8x7q 1/1 Running 0 20m
kube-system pod/etcd-schecter-control-plane-rqmnv 1/1 Running 0 20m
kube-system pod/kube-apiserver-schecter-control-plane-rqmnv 1/1 Running 0 20m
kube-system pod/kube-controller-manager-schecter-control-plane-rqmnv 1/1 Running 0 20m
kube-system pod/kube-proxy-4cltq 1/1 Running 0 18m
kube-system pod/kube-proxy-s9kn4 1/1 Running 0 20m
kube-system pod/kube-scheduler-schecter-control-plane-rqmnv 1/1 Running 0 20m
kube-system pod/kube-vip-schecter-control-plane-rqmnv 1/1 Running 0 20m
kube-system pod/metrics-server-66fc955cc4-shtck 1/1 Running 0 11m
kube-system pod/vsphere-cloud-controller-manager-p25b5 1/1 Running 0 9m57s
kube-system pod/vsphere-csi-controller-7b4b6bd88c-hxkcg 6/6 Running 0 11m
kube-system pod/vsphere-csi-node-9bd5v 3/3 Running 0 11m
kube-system pod/vsphere-csi-node-hg8cl 3/3 Running 0 11m
tkg-system pod/kapp-controller-6499b8866-7fnq9 1/1 Running 0 16m
tkg-system pod/tanzu-addons-controller-manager-7bf8967c56-7ktnd 1/1 Running 0 12m
tkg-system pod/tanzu-capabilities-controller-manager-6ff97656b8-bv4c7 1/1 Running 0 18m
tkr-system pod/tkr-controller-manager-6bc455b5d4-vszr2 1/1 Running 0 18m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
capi-kubeadm-bootstrap-system service/capi-kubeadm-bootstrap-controller-manager-metrics-service ClusterIP 100.69.7.20 <none> 8443/TCP 14m
capi-kubeadm-control-plane-system service/capi-kubeadm-control-plane-controller-manager-metrics-service ClusterIP 100.65.139.84 <none> 8443/TCP 14m
capi-system service/capi-controller-manager-metrics-service ClusterIP 100.66.87.246 <none> 8443/TCP 14m
capi-webhook-system service/capi-kubeadm-bootstrap-webhook-service ClusterIP 100.66.128.62 <none> 443/TCP 14m
capi-webhook-system service/capi-kubeadm-control-plane-webhook-service ClusterIP 100.67.44.51 <none> 443/TCP 14m
capi-webhook-system service/capi-webhook-service ClusterIP 100.69.197.139 <none> 443/TCP 14m
capi-webhook-system service/capv-webhook-service ClusterIP 100.66.99.168 <none> 443/TCP 14m
capv-system service/capv-controller-manager-metrics-service ClusterIP 100.69.28.159 <none> 8443/TCP 14m
cert-manager service/cert-manager ClusterIP 100.68.31.34 <none> 9402/TCP 20m
cert-manager service/cert-manager-webhook ClusterIP 100.69.119.222 <none> 443/TCP 20m
default service/kubernetes ClusterIP 100.64.0.1 <none> 443/TCP 20m
kube-system service/antrea ClusterIP 100.66.159.222 <none> 443/TCP 16m
kube-system service/cloud-controller-manager NodePort 100.71.76.170 <none> 443:30299/TCP 17m
kube-system service/kube-dns ClusterIP 100.64.0.10 <none> 53/UDP,53/TCP,9153/TCP 20m
kube-system service/metrics-server ClusterIP 100.71.1.239 <none> 443/TCP 11m
kube-system service/vsphere-csi-controller ClusterIP 100.71.235.60 <none> 2112/TCP,2113/TCP 11m
tkg-system service/packaging-api ClusterIP 100.70.191.40 <none> 443/TCP 19m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/antrea-agent 2 2 2 2 2 kubernetes.io/os=linux 16m
kube-system daemonset.apps/kube-proxy 2 2 2 2 2 kubernetes.io/os=linux 20m
kube-system daemonset.apps/vsphere-cloud-controller-manager 1 1 1 1 1 node-role.kubernetes.io/master= 16m
kube-system daemonset.apps/vsphere-csi-node 2 2 2 2 2 <none> 11m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
capi-kubeadm-bootstrap-system deployment.apps/capi-kubeadm-bootstrap-controller-manager 1/1 1 1 14m
capi-kubeadm-control-plane-system deployment.apps/capi-kubeadm-control-plane-controller-manager 1/1 1 1 14m
capi-system deployment.apps/capi-controller-manager 1/1 1 1 14m
capi-webhook-system deployment.apps/capi-controller-manager 1/1 1 1 14m
capi-webhook-system deployment.apps/capi-kubeadm-bootstrap-controller-manager 1/1 1 1 14m
capi-webhook-system deployment.apps/capi-kubeadm-control-plane-controller-manager 1/1 1 1 14m
capi-webhook-system deployment.apps/capv-controller-manager 1/1 1 1 14m
capv-system deployment.apps/capv-controller-manager 1/1 1 1 14m
cert-manager deployment.apps/cert-manager 1/1 1 1 20m
cert-manager deployment.apps/cert-manager-cainjector 1/1 1 1 20m
cert-manager deployment.apps/cert-manager-webhook 1/1 1 1 20m
kube-system deployment.apps/antrea-controller 1/1 1 1 16m
kube-system deployment.apps/coredns 2/2 2 2 20m
kube-system deployment.apps/metrics-server 1/1 1 1 11m
kube-system deployment.apps/vsphere-csi-controller 1/1 1 1 11m
tkg-system deployment.apps/kapp-controller 1/1 1 1 16m
tkg-system deployment.apps/tanzu-addons-controller-manager 1/1 1 1 12m
tkg-system deployment.apps/tanzu-capabilities-controller-manager 1/1 1 1 18m
tkr-system deployment.apps/tkr-controller-manager 1/1 1 1 18m
NAMESPACE NAME DESIRED CURRENT READY AGE
capi-kubeadm-bootstrap-system replicaset.apps/capi-kubeadm-bootstrap-controller-manager-6494884869 1 1 1 14m
capi-kubeadm-control-plane-system replicaset.apps/capi-kubeadm-control-plane-controller-manager-857d687b9d 1 1 1 14m
capi-system replicaset.apps/capi-controller-manager-778bd4dfb9 1 1 1 14m
capi-webhook-system replicaset.apps/capi-controller-manager-9995bdc94 1 1 1 14m
capi-webhook-system replicaset.apps/capi-kubeadm-bootstrap-controller-manager-68845b65f8 1 1 1 14m
capi-webhook-system replicaset.apps/capi-kubeadm-control-plane-controller-manager-9847c6747 1 1 1 14m
capi-webhook-system replicaset.apps/capv-controller-manager-55bf67fbd5 1 1 1 14m
capv-system replicaset.apps/capv-controller-manager-587fbf697f 1 1 1 14m
cert-manager replicaset.apps/cert-manager-77f6fb8fd5 1 1 1 20m
cert-manager replicaset.apps/cert-manager-cainjector-6bd4cff7bb 1 1 1 20m
cert-manager replicaset.apps/cert-manager-webhook-fbfcb9d6c 1 1 1 20m
kube-system replicaset.apps/antrea-controller-55b45848bc 1 1 1 10m
kube-system replicaset.apps/antrea-controller-86f8988c5f 0 0 0 16m
kube-system replicaset.apps/coredns-8dcb5c56b 2 2 2 20m
kube-system replicaset.apps/metrics-server-66fc955cc4 1 1 1 11m
kube-system replicaset.apps/vsphere-csi-controller-7b4b6bd88c 1 1 1 11m
tkg-system replicaset.apps/kapp-controller-6499b8866 1 1 1 16m
tkg-system replicaset.apps/tanzu-addons-controller-manager-7bf8967c56 1 1 1 12m
tkg-system replicaset.apps/tanzu-capabilities-controller-manager-6ff97656b8 1 1 1 18m
tkr-system replicaset.apps/tkr-controller-manager-6bc455b5d4 1 1 1 18m
Tanzu Kubernetes Cluster のデプロイ
ディレクトリ
~/.tanzu/tkg/clusterconfigs
にTanzu Kubernetes Cluster(以下TKC) 用の定義ファイルを作成し、TKC デプロイ時はそれを引数として指定しています。事前に以下のコマンドで利用出来る
kubernetes-release
を確認します。$ tanzu kubernetes-release get
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.19.12---vmware.1-tkg.1 v1.19.12+vmware.1-tkg.1 True True True
v1.20.8---vmware.1-tkg.2 v1.20.8+vmware.1-tkg.2 True True True
v1.21.2---vmware.1-tkg.1 v1.21.2+vmware.1-tkg.1 True True False
作成したら以下のコマンドでTKC を作成していきます。
$ tanzu cluster create fender --tkr v1.21.2---vmware.1-tkg.1 --file fender.yaml -v 6
compatibility file (/home/itot/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml) already exists, skipping download
BOM files inside /home/itot/.config/tanzu/tkg/bom already exists, skipping download
Using namespace from config:
Validating configuration...
...(SNIP)...
Successfully reconciled package: vsphere-csi
Workload cluster 'fender' created
TKC にアクセスします。
$ tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
fender default running 1/1 1/1 v1.21.2+vmware.1 <none> dev
tanzu cluster kubeconfig get fender --export-file kubeconfig-lab-fender --admin
export KUBECONFIG=~/kubeconfig-lab-fender
$ k get nodes
NAME STATUS ROLES AGE VERSION
fender-control-plane-gxlkq Ready control-plane,master 21d v1.21.2+vmware.1
fender-md-0-5ff55d5d58-sd7sh Ready <none> 21d v1.21.2+vmware.1
無事にデプロイ出来ましたので、続いてContour をデプロイしていきます。
Contour のデプロイ
こちらの「User-Managed Packages」、「Implementing Ingress Control with Contour」に従ってデプロイしていきます。この環境では事前に、metalLB をインストールし、
type: LoadBalancer
リソースを払い出せる様にしています。Contour をインストールする前に、先ずはcert-manager をインストールします。
無事にインストール出来たことが確認出来ました。次にPrometheus とGrafana をデプロイしていきます。
こちら「Implementing Monitoring with Prometheus and Grafana」を参考にデプロイしていきます。k create ns user-managed-packages
$ tanzu package available list cert-manager.tanzu.vmware.com -A
/ Retrieving package versions for cert-manager.tanzu.vmware.com...
NAME VERSION RELEASED-AT NAMESPACE
cert-manager.tanzu.vmware.com 1.1.0+vmware.1-tkg.2 2020-11-24T18:00:00Z tanzu-package-repo-global
$ tanzu package install cert-manager --package-name cert-manager.tanzu.vmware.com --version 1.1.0+vmware.1-tkg.2 --namespace user-managed-packages
/ Installing package 'cert-manager.tanzu.vmware.com'
| Getting namespace 'user-managed-packages'
| Getting package metadata for 'cert-manager.tanzu.vmware.com'
| Creating service account 'cert-manager-user-managed-packages-sa'
| Creating cluster admin role 'cert-manager-user-managed-packages-cluster-role'
| Creating cluster role binding 'cert-manager-user-managed-packages-cluster-rolebinding'
- Creating package resource
\ Package install status: Reconciling
Added installed package 'cert-manager' in namespace 'user-managed-packages'
$ tanzu package available list contour.tanzu.vmware.com
/ Retrieving package versions for contour.tanzu.vmware.com...
NAME VERSION RELEASED-AT
contour.tanzu.vmware.com 1.17.1+vmware.1-tkg.1 2021-07-23T18:00:00Z
$ tanzu package install contour --package-name contour.tanzu.vmware.com --version 1.17.1+vmware.1-tkg.1 --values-file contour-data-values.yaml --namespace user-managed-packages
/ Installing package 'contour.tanzu.vmware.com'
| Getting namespace 'user-managed-packages'
| Getting package metadata for 'contour.tanzu.vmware.com'
| Creating service account 'contour-user-managed-packages-sa'
| Creating cluster admin role 'contour-user-managed-packages-cluster-role'
| Creating cluster role binding 'contour-user-managed-packages-cluster-rolebinding'
| Creating secret 'contour-user-managed-packages-values'
- Creating package resource
/ Package install status: Reconciling
Added installed package 'contour' in namespace 'user-managed-packages'
$ tanzu package installed list -A
- Retrieving installed packages...
NAME PACKAGE-NAME PACKAGE-VERSION STATUS NAMESPACE
antrea antrea.tanzu.vmware.com Reconcile succeeded tkg-system
metrics-server metrics-server.tanzu.vmware.com Reconcile succeeded tkg-system
vsphere-cpi vsphere-cpi.tanzu.vmware.com Reconcile succeeded tkg-system
vsphere-csi vsphere-csi.tanzu.vmware.com Reconcile succeeded tkg-system
cert-manager cert-manager.tanzu.vmware.com 1.1.0+vmware.1-tkg.2 Reconcile succeeded user-managed-packages
contour contour.tanzu.vmware.com 1.17.1+vmware.1-tkg.1 Reconcile succeeded user-managed-packages
続いて、Let's Encrypt を利用し、Contour で利用する証明書を取得します。
Let's Encrypt で証明書の取得
以下のコマンドで証明書を発行します。
この環境ではGoogle DNS を使っています。Namespace
tanzu-system-ingress
の envoy
サービスにアサインされていたEXTERNAL-IP
を *.<MYDOMAIN>
のAレコードとして登録しています。$ certbot --server https://acme-v02.api.letsencrypt.org/directory \
-d "*.<MYDOMAIN>" --manual --preferred-challenges dns-01 certonly \
--work-dir ./<cluster-name>/wd \
--config-dir ./<cluster-name>/cfg \
--logs-dir ./<cluster-name>/logs
案内に従ってステップを進めていくと、DNS TXT レコード とそれに対応する Values が表示されるので、その組合せをGoogle DNS に登録します。
名前解決出来るまでしばらく時間が掛かりますが、以下のコマンドで登録したDNS TXT レコードの Values 値が返ってくればOKです。
nslookup -q=txt _acme-challenge.<MYDOMAIN>
クエリが通ったら、プロンプトでEnter を入力し、処理を終えます。
Congratulations! Your certificate and chain have been saved at:
と出力されていれば、無事処理が終わっています。Harbor のデプロイ
続いてHarbor をデプロイしていきます。この手順ではBitnami が提供しているHelm Chart を利用してデプロイしています。こちらにある手順に従って、事前にBitnami のHelm Chart を追加しておきます。
Harbor をデプロイするNamespace を作成します。
k create ns harbor
Harbor が利用するTLS の
Secret
を作成していきます。--cert
と --key
で指定しているファイルは上の手順で作成したfullchain.pem
とprivkey.pem
になります。$ k -n harbor create secret tls harbor-tls-secret \
--cert=./<cluster-name>/cfg/live/<MYDOMAIN>/fullchain.pem \
--key=./<cluster-name>/cfg/live/<MYDOMAIN>/privkey.pem
Helm のリポジトリをアップデートしておきます。
helm repo update
$ helm search repo bitnami |grep harbor
bitnami/harbor 10.2.11 2.3.2 Harbor is an an open source trusted cloud nativ...
Harbor をインストールする際の
values.yaml
を作成します。この環境ではIngress として、Contour を利用しているので、ingress.annotations.kubernetes.io/ingress.class にContour を指定しています。$ cat values.yaml
harborAdminPassword: xxxxx
volumePermissions.enabled: true
service:
type: ClusterIP
tls:
enabled: true
existingSecret: harbor-tls-secret
notaryExistingSecret: harbor-tls-secret
externalURL: registry.<MYDOMAIN>
ingress:
enabled: true
hosts:
core: registry.<MYDOMAIN>
notary: notary.<MYDOMAIN>
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true" # force https, even if http is requested
kubernetes.io/ingress.class: contour # using Contour for ingress
kubernetes.io/tls-acme: "true" # using ACME certificates for TLS
portal:
tls:
existingSecret: harbor-tls-secret
persistence:
persistentVolumeClaim:
registry:
size: 50Gi
trivy:
size: 20Gi
helm でHarbor をデプロイします。
helm upgrade --install harbor bitnami/harbor -f values.yml --namespace harbor
無事にHarbor が立ち上がっている様です。
$ k -n harbor get pods
NAME READY STATUS RESTARTS AGE
harbor-chartmuseum-dfbf4f979-h95c8 1/1 Running 0 20d
harbor-core-7944648dc7-dxlrv 1/1 Running 1 20d
harbor-jobservice-5859d4cf5-jx2mv 1/1 Running 0 20d
harbor-notary-server-77b5754c68-ggnqw 1/1 Running 0 20d
harbor-notary-signer-867c7c587c-fthwg 1/1 Running 0 20d
harbor-portal-85554b6646-q2w42 1/1 Running 0 20d
harbor-postgresql-0 1/1 Running 0 20d
harbor-redis-master-0 1/1 Running 0 20d
harbor-registry-558d64dd67-qgwvx 2/2 Running 0 20d
harbor-trivy-0 1/1 Running 0 20d
Prometheus/Grafana のデプロイ
先ずは、Prometheus からデプロイしていきます。
image_url=$(kubectl -n tanzu-package-repo-global get packages prometheus.tanzu.vmware.com.2.27.0+vmware.1-tkg.1 -o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}')
imgpkg pull -b $image_url -o /tmp/prometheus-package-2.27.0+vmware.1-tkg.1
cp /tmp/prometheus-package-2.27.0+vmware.1-tkg.1/config/values.yaml prometheus-data-values.yml
prometheus-data-values.yml
のingress
リソース設定を以下の様に修正しました。またtls.crt
とtls.key
に関しては、Let's Encrypt での証明書とキーを利用しています。tls.crt
はfullchain.pem
の1つ目の証明書を、tls.key
はprivkey.pem
を指定しています。
...
ingress:
enabled: true
virtual_host_fqdn: "prometheus.<MYDOMAIN>"
prometheus_prefix: "/"
alertmanager_prefix: "/alertmanager/"
prometheusServicePort: 80
alertmanagerServicePort: 80
#! [Optional] The certificate for the ingress if you want to use your own TLS certificate.
#! We will issue the certificate by cert-manager when it's empty.
tlsCertificate:
tls.crt: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
tls.key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
...
$ tanzu package install prometheus --package-name prometheus.tanzu.vmware.com --version 2.27.0+vmware.1-tkg.1 --values-file prometheus-data-values.yml --namespace user-managed-packages
- Installing package 'prometheus.tanzu.vmware.com'
| Getting namespace 'user-managed-packages'
| Getting package metadata for 'prometheus.tanzu.vmware.com'
| Creating service account 'prometheus-user-managed-packages-sa'
| Creating cluster admin role 'prometheus-user-managed-packages-cluster-role'
| Creating cluster role binding 'prometheus-user-managed-packages-cluster-rolebinding'
| Creating secret 'prometheus-user-managed-packages-values'
- Creating package resource
/ Package install status: Reconciling
Added installed package 'prometheus' in namespace 'user-managed-packages'
続いて、同じ様にGrafanaをデプロイしていきます。
image_url=$(kubectl -n tanzu-package-repo-global get packages grafana.tanzu.vmware.com.7.5.7+vmware.1-tkg.1 -o jsonpath='{.spec.template.spec.fetch[0].imgpkgBundle.image}')
imgpkg pull -b $image_url -o /tmp/grafana-package-7.5.7+vmware.1-tkg.1
cp /tmp/grafana-package-PACKAGE-VERSION/config/values.yaml grafana-data-values.yaml
grafana-data-values.yml
に記載していきます。
echo -n '<ADMIN_PASSWORD>' | base64
namespace
を変更し、admin ユーザーのパスワードを変更し、ingress の設定を行い、以下の様なgrafana-data-values.yml
を作成しています。
ingress
リソース設定のtls.crt
とtls.key
に関しては、Let's Encrypt での証明書とキーを利用しています。tls.crt
はfullchain.pem
の1つ目の証明書を、tls.key
はprivkey.pem
を指定しています。
...
...
namespace: tanzu-system-dashboards
...
secret:
type: "Opaque"
admin_user: "YWRtaW4="
admin_password: "<BASE64_ENCODING_ADMIN_PASSWORD>"
...
ingress:
enabled: true
virtual_host_fqdn: "grafana.<MYDOMAIN>"
prefix: "/"
servicePort: 80
#! [Optional] The certificate for the ingress if you want to use your own TLS certificate.
#! We will issue the certificate by cert-manager when it's empty.
tlsCertificate:
tls.crt: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
tls.key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
...
$ tanzu package install grafana --package-name grafana.tanzu.vmware.com --version 7.5.7+vmware.1-tkg.1 --values-file grafana-data-values.yml --namespace user-managed-packages
- Installing package 'grafana.tanzu.vmware.com'
| Getting namespace 'user-managed-packages'
| Getting package metadata for 'grafana.tanzu.vmware.com'
| Creating service account 'grafana-user-managed-packages-sa'
| Creating cluster admin role 'grafana-user-managed-packages-cluster-role'
| Creating cluster role binding 'grafana-user-managed-packages-cluster-rolebinding'
| Creating secret 'grafana-user-managed-packages-values'
- Creating package resource
/ Package install status: Reconciling
Added installed package 'grafana' in namespace 'user-managed-packages'
無事にインストールが完了しました。Grafana にアクセスすると以下のDashboard が作成されており、こちらでTKC 上のリソースの監視が可能になります。
- リンクを取得
- ×
- メール
- 他のアプリ