Tanzu Kubernetes Grid multicloud(TKGm) にTKG Extensions を利用し、Prometheus をデプロイしたので、その際の手順です。
環境
- Tanzu Kubernetes Grid v1.3.0 on vSphere
- Workload Cluster v1.20.4
- こちらの記事で構築した環境を利用
Prometheus のデプロイ
先ずは、Namespace を作成します。
kubectl apply -f monitoring/prometheus/namespace-role.yaml
以下の様に、<tanzu-system-monitoring
>というNamespace が作成され、このNamespace に対してリソースをデプロイしていく形になります。
namespace/tanzu-system-monitoring created
serviceaccount/prometheus-extension-sa created
role.rbac.authorization.k8s.io/prometheus-extension-role created
rolebinding.rbac.authorization.k8s.io/prometheus-extension-rolebinding created
clusterrole.rbac.authorization.k8s.io/prometheus-extension-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/prometheus-extension-cluster-rolebinding created
Prometheus をデプロイする際の values.yaml
をコピーし、編集します。
cp monitoring/prometheus/prometheus-data-values.yaml.example monitoring/prometheus/prometheus-data-values.yaml
デフォルトだと、以下の様なファイルの中身になっています。
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
monitoring:
prometheus_server:
image:
repository: projects.registry.vmware.com/tkg/prometheus
alertmanager:
image:
repository: projects.registry.vmware.com/tkg/prometheus
kube_state_metrics:
image:
repository: projects.registry.vmware.com/tkg/prometheus
node_exporter:
image:
repository: projects.registry.vmware.com/tkg/prometheus
pushgateway:
image:
repository: projects.registry.vmware.com/tkg/prometheus
cadvisor:
image:
repository: projects.registry.vmware.com/tkg/prometheus
prometheus_server_configmap_reload:
image:
repository: projects.registry.vmware.com/tkg/prometheus
prometheus_server_init_container:
image:
repository: projects.registry.vmware.com/tkg/prometheus
定義出来るパラメータはこちら「
Customize Your Prometheus Deployment」を参考に作成していきます。以下の様な形で定義しました。<
monitoring.ingress.tlsCertificate.tls.crt
>と<
monitoring.ingress.tlsCertificate.tls.key
>は以下の設定で通ったのですが、
tls
以下は更にインデントを下げるのが正解なのかもしれません。。。
また、tls.crt と tls.key に関しては、
こちらの手順で作成したLet's Encrypt での証明書とキーを利用しています。
tls.crt
は
fullchain.pem
の1つ目の証明書を、
tls.key
は
privkey.pem
を指定しています。
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
monitoring:
prometheus_server:
image:
repository: projects.registry.vmware.com/tkg/prometheus
sc:
sc_enabled: true
is_default: true
pvc:
storage: 50Gi
alertmanager:
image:
repository: projects.registry.vmware.com/tkg/prometheus
sc:
sc_enabled: true
is_default: true
pvc:
storage: 20Gi
kube_state_metrics:
image:
repository: projects.registry.vmware.com/tkg/prometheus
node_exporter:
image:
repository: projects.registry.vmware.com/tkg/prometheus
pushgateway:
image:
repository: projects.registry.vmware.com/tkg/prometheus
cadvisor:
image:
repository: projects.registry.vmware.com/tkg/prometheus
prometheus_server_configmap_reload:
image:
repository: projects.registry.vmware.com/tkg/prometheus
prometheus_server_init_container:
image:
repository: projects.registry.vmware.com/tkg/prometheus
ingress:
enabled: true
virtual_host_fqdn: prometheus.<MYDOMAIN>
tlsCertificate:
tls.crt: |
-----BEGIN CERTIFICATE-----
...(SNIP)...
-----END CERTIFICATE-----
tls.key: |
-----BEGIN PRIVATE KEY-----
...(SNIP)...
-----END PRIVATE KEY-----
この定義ファイルを元に、Secret
リソースを作成します。
kubectl create secret generic prometheus-data-values --from-file=values.yaml=monitoring/prometheus/prometheus-data-values.yaml -n tanzu-system-monitoring
この後、Prometheus extension をデプロイします。
kubectl apply -f monitoring/prometheus/prometheus-extension.yaml
デプロイ出来たかどうか確認します。
$ kubectl get extension prometheus -n tanzu-system-monitoring
NAME STATE HEALTH VERSION
prometheus 3
$ kubectl get pod -n tanzu-system-monitoring
NAME READY STATUS RESTARTS AGE
prometheus-alertmanager-78bdc5d795-k4w77 2/2 Running 0 3m1s
prometheus-cadvisor-xhp2p 1/1 Running 0 3m1s
prometheus-kube-state-metrics-57c8d99b9f-9vqqt 1/1 Running 0 3m1s
prometheus-node-exporter-5q8d5 1/1 Running 0 3m1s
prometheus-pushgateway-5b686c79f-fmggq 1/1 Running 0 3m1s
prometheus-server-655d4bf98c-s9qt4 2/2 Running 0 3m1s
$ kubectl get app prometheus -n tanzu-system-monitoring
NAME DESCRIPTION SINCE-DEPLOY AGE
prometheus Reconcile succeeded 4s 3m5s
設定等を変える時は以下のコマンドでSecret
リソースを更新します。
kubectl create secret generic prometheus-data-values --from-file=values.yaml=monitoring/prometheus/prometheus-data-values.yaml -n tanzu-system-monitoring -o yaml --dry-run=client | kubectl replace -f -
Prometheus のDashboard とAlertmanager にアクセスします。Alertmanager は、prometheus.<MYDOMAIN>/alertmanager
でアクセス出来ます。
無事にデプロイ出来ました。