stack.basicstack.de/infrastructure
CTO Agent 1c3cd31381 fix(dns): cap hostNetwork/coredns pod DNS at 3 upstreams (DEV-527)
Hetzner OS publishes 4 systemd-resolved upstreams and Kubernetes limits
pod resolv.conf to 3 nameservers, so kubelet drops the 4th and fires a
DNSConfigForming Warning event on every hostNetwork or dnsPolicy=Default
pod restart. Silence the noise by pinning the pods to 3 explicit servers
(same 3 kubelet was already picking).

- apps/observability/patches/node-exporter-dns-config.yaml — strategic-
  merge patch adding dnsPolicy=None + dnsConfig to the
  kube-prometheus-stack node-exporter DaemonSet (Helm-managed, applied
  by hand)
- apps/observability/patches/coredns-dns-config.yaml — companion patch
  for the k3s built-in CoreDNS Deployment. kubectl patch alone is not
  durable because the k3s addon controller reverts dnsPolicy; kept as a
  quick manual re-apply hook
- infrastructure/k3s-manifests/coredns.yaml — the authoritative modified
  k3s addon manifest that must live at
  /var/lib/rancher/k3s/server/manifests/coredns.yaml on all 3 CP nodes
- infrastructure/k3s-manifests/README-DEV-527.md — apply procedure,
  verification steps, and upgrade caveat

Applied and verified on the live cluster:
- node-exporter DaemonSet rolled with dnsPolicy=None; no
  DNSConfigForming events on current pods
- coredns Deployment reconciled after pushing the modified manifest to
  all 3 CPs; new pod runs with dnsPolicy=None and 3-nameserver dnsConfig
- internal + external DNS resolution still works

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-08-23 12:05:12 +00:00
..
k3s-manifests fix(dns): cap hostNetwork/coredns pod DNS at 3 upstreams (DEV-527) 2026-08-23 12:05:12 +00:00
k3s-upgrade Add k3s cluster management automation and documentation 2026-07-06 17:08:21 +00:00
networking Traefik: check in HelmChartConfig with DEV-457 changes for reproducibility 2026-08-08 14:52:29 +00:00
scripts os-update: generalize CP procedure to HA cp-1/cp-2/cp-3 (DEV-515) 2026-08-23 01:53:14 +00:00
ADD_WORKER_NODE.md docs: add standalone worker node addition instruction 2026-07-26 16:07:52 +00:00
CLUSTER_ACCESS.md Update k3s cluster documentation 2026-07-06 17:54:53 +00:00
CP1_UPDATE_PROCEDURE.md os-update: generalize CP procedure to HA cp-1/cp-2/cp-3 (DEV-515) 2026-08-23 01:53:14 +00:00
CP_UPDATE_PROCEDURE.md os-update: generalize CP procedure to HA cp-1/cp-2/cp-3 (DEV-515) 2026-08-23 01:53:14 +00:00
K3S_OPERATIONS.md Document DNS configuration and service CIDR fix 2026-07-06 18:22:53 +00:00
OS_UPDATE_PROCEDURE.md os-update: generalize CP procedure to HA cp-1/cp-2/cp-3 (DEV-515) 2026-08-23 01:53:14 +00:00
OS_UPDATE_ROUTINE.md Add weekly rolling OS-update procedure for k3s nodes (DEV-462) 2026-08-09 15:55:39 +00:00
README.md Add weekly rolling OS-update procedure for k3s nodes (DEV-462) 2026-08-09 15:55:39 +00:00

Infrastructure

This directory contains cluster-wide infrastructure configurations that support all applications.

Operational procedures (agent-facing)

Structure

networking/

Network-level configurations including:

  • Network Architecture - Comprehensive network architecture documentation
  • DNS Requirements - DNS records and configuration guide
  • Ingress controller configurations (Traefik)
  • Network policies
  • Load balancer configurations (k3s ServiceLB)
  • Certificate management (cert-manager, TLS)
  • Certificate reloading (Stakater Reloader)

monitoring/

Observability infrastructure:

  • Prometheus operator and configurations
  • Grafana dashboards and datasources
  • Logging stack (Loki, Promtail, etc.)
  • Alert rules and notification channels
  • Service monitors and pod monitors

Purpose

Infrastructure configurations in this directory are shared across all applications. Changes here can affect the entire cluster, so:

  1. Test thoroughly before applying
  2. Document all changes
  3. Consider the impact on existing deployments
  4. Coordinate with other team members

Adding Infrastructure Components

When adding new infrastructure components:

  1. Create appropriate subdirectories if needed
  2. Include clear documentation
  3. Define dependencies and prerequisites
  4. Provide rollback procedures
  5. Update this README with the new component