From 459e792f56826adfbd20fa484ec8f56a99bb452a Mon Sep 17 00:00:00 2001 From: Sathvik Date: Fri, 24 Oct 2025 16:16:28 +0530 Subject: [PATCH] Playbook to install kube-prometheus-stack --- .../k8s-ansible/install-k8s-monitoring.yml | 27 ++++++++ .../install-monitoring/defaults/main.yml | 9 +++ .../files/power-custom-values.yaml | 61 +++++++++++++++++++ .../roles/install-monitoring/tasks/main.yml | 35 +++++++++++ 4 files changed, 132 insertions(+) create mode 100644 kubetest2-tf/data/k8s-ansible/install-k8s-monitoring.yml create mode 100644 kubetest2-tf/data/k8s-ansible/roles/install-monitoring/defaults/main.yml create mode 100644 kubetest2-tf/data/k8s-ansible/roles/install-monitoring/files/power-custom-values.yaml create mode 100644 kubetest2-tf/data/k8s-ansible/roles/install-monitoring/tasks/main.yml diff --git a/kubetest2-tf/data/k8s-ansible/install-k8s-monitoring.yml b/kubetest2-tf/data/k8s-ansible/install-k8s-monitoring.yml new file mode 100644 index 0000000..67ed017 --- /dev/null +++ b/kubetest2-tf/data/k8s-ansible/install-k8s-monitoring.yml @@ -0,0 +1,27 @@ +--- +- name: Deploy kube-prometheus-stack to Kubernetes + hosts: masters + gather_facts: no + become: yes + + pre_tasks: + - name: Ensure kubernetes.core collection is installed + command: ansible-galaxy collection install kubernetes.core + changed_when: false + delegate_to: "{{ groups['masters'][0] }}" + become: no + + - name: Download Helm install script + ansible.builtin.get_url: + url: https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 + dest: /tmp/get_helm.sh + mode: '0700' + delegate_to: "{{ groups['masters'][0] }}" + + - name: Run Helm install script + command: /tmp/get_helm.sh + delegate_to: "{{ groups['masters'][0] }}" + + roles: + - role: install-monitoring + name: Deploy kube-prometheus-stack diff --git a/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/defaults/main.yml b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/defaults/main.yml new file mode 100644 index 0000000..8e1f7cc --- /dev/null +++ b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/defaults/main.yml @@ -0,0 +1,9 @@ +#Default vars for install-monitoring role +--- +helm_release_name: k8s-monitoring +helm_chart_name: prometheus-community/kube-prometheus-stack +helm_chart_version: "78.4.0" +helm_namespace: monitoring +helm_repo_name: prometheus-community +helm_repo_url: https://prometheus-community.github.io/helm-charts +helm_custom_values: "power-custom-values.yaml" diff --git a/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/files/power-custom-values.yaml b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/files/power-custom-values.yaml new file mode 100644 index 0000000..77e46a4 --- /dev/null +++ b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/files/power-custom-values.yaml @@ -0,0 +1,61 @@ +grafana: + image: + registry: quay.io + repository: powercloud/grafana + tag: v12.1.0 + pullPolicy: IfNotPresent + + service: + type: NodePort + portName: http-web + ipFamilies: [] + ipFamilyPolicy: "" + port: 3000 + targetPort: 3000 + + adminUser: admin + adminPassword: prom-operator + + nodeSelector: + kubernetes.io/role: infra + +prometheusOperator: + admissionWebhooks: + deployment: + nodeSelector: + kubernetes.io/role: infra + + patch: + enabled: true + image: + registry: quay.io + repository: powercloud/kube-webhook-certgen + tag: v1.6.3 + + nodeSelector: + kubernetes.io/role: infra + +prometheus: + prometheusSpec: + retention: 14d + nodeSelector: + kubernetes.io/role: infra + +crds: + upgradeJob: + nodeSelector: + kubernetes.io/role: infra + +alertmanager: + alertmanagerSpec: + nodeSelector: + kubernetes.io/role: infra + +kube-state-metrics: + nodeSelector: + kubernetes.io/role: infra + +thanosRuler: + thanosRulerSpec: + nodeSelector: + kubernetes.io/role: infra diff --git a/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/tasks/main.yml b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/tasks/main.yml new file mode 100644 index 0000000..dadb26e --- /dev/null +++ b/kubetest2-tf/data/k8s-ansible/roles/install-monitoring/tasks/main.yml @@ -0,0 +1,35 @@ +--- +- name: Ensure namespace exists + command: kubectl create namespace {{ helm_namespace }} + ignore_errors: yes # Ignore error if namespace already exists + +- name: Ensure Helm repository is added + kubernetes.core.helm_repository: + name: "{{ helm_repo_name }}" + repo_url: "{{ helm_repo_url }}" + state: present + delegate_to: "{{ groups['masters'][0] }}" + +- name: Copy IBM Power specific helm chart values files + copy: + src: "{{ helm_custom_values }}" + dest: /tmp/ + +- name: Install or upgrade kube-prometheus-stack chart + kubernetes.core.helm: + update_repo_cache: yes + name: "{{ helm_release_name }}" + chart_ref: "{{ helm_chart_name }}" + namespace: "{{ helm_namespace }}" + chart_version: "{{ helm_chart_version }}" + values_files: + - "/tmp/power-custom-values.yaml" + timeout: 10m + set_values: + - value: grafana.adminUser={{ grafana_admin_user }} + value_type: string + - value: grafana.adminPassword={{ grafana_admin_password }} + value_type: string + state: present + delegate_to: "{{ groups['masters'][0] }}" +