k3s: Pod-Monitoring in Grafana (Task 6.5)
ci / test (push) Failing after 23s

kube-state-metrics (NodePort 30808) und ServiceAccount prometheus-infra (nur
nodes/metrics) im Cluster; Prometheus auf infra liest kubelet/cAdvisor per TLS
gegen die k3s-CA. Ziele per file_sd aus kubectl get nodes, cAdvisor auf die
nötigen Reihen begrenzt. Dashboard "k3s – Pods" (Vorgabe nex), Alerts K3s*
nur mit notify. Playbook monitoring-k3s.yml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Robert Rapp
2026-10-19 16:31:03 +02:00
co-authored by Claude Opus 5.5
parent abf4a75063
commit 4ac251715e
17 changed files with 1271 additions and 13 deletions
@@ -17,6 +17,7 @@
- {path: "{{ infra_repo_dir }}", mode: "0755"}
- {path: "{{ infra_state_dir }}", mode: "0700"}
- {path: "{{ infra_state_dir }}/secrets", mode: "0700"}
- {path: "{{ infra_state_dir }}/secrets/k3s", mode: "0755"}
# Nur die Teile, die Build und Konfiguration brauchen. Nie .git, .venv, tofu-State oder .env-Dateien.
- name: Repo-Auszug von ops abgleichen
@@ -87,6 +88,30 @@
mode: "0600"
no_log: true
# Task 6.5: Token des ServiceAccounts prometheus-infra und CA des Clusters (von playbooks/monitoring-k3s.yml
# auf ops abgelegt). Lesbar für nobody (Prometheus im Container). Fehlen sie, bleiben die k3s-Jobs down.
- name: k3s-Zugang für Prometheus vorhanden? (auf ops)
ansible.builtin.stat:
path: "{{ item }}"
loop: ["{{ infra_k3s_token }}", "{{ infra_k3s_ca }}"]
delegate_to: localhost
register: k3s_access
- name: k3s-Zugang für Prometheus kopieren
ansible.builtin.copy:
src: "{{ item.src }}"
dest: "{{ infra_state_dir }}/secrets/k3s/{{ item.dest }}"
owner: "65534"
group: "65534"
mode: "0400"
loop:
- {src: "{{ infra_k3s_token }}", dest: token}
- {src: "{{ infra_k3s_ca }}", dest: ca.crt}
loop_control:
label: "{{ item.dest }}"
when: k3s_access.results | map(attribute='stat.exists') | min
no_log: true
- name: file_sd-Ziele
ansible.builtin.include_tasks: targets.yml