Files
k3s-ansible/roles/traefik-config/templates/traefik-helmchartconfig.j2
T
michi 14d4f2528d Add automatic TLS via Let's Encrypt Cloudflare DNS-01 and Vaultwarden
- Introduce Traefik ACME configuration using Cloudflare DNS-01 challenge
- Deploy Vaultwarden password manager with IP allowlist protection
- Add middleware for security headers, compression, and rate limiting
- Update IngressRoute resources to use new ACME resolver
- Add troubleshooting steps for certificate and TLS issues
- Include test application deployment and verification commands
2026-03-25 11:21:01 +01:00

64 lines
2.7 KiB
Django/Jinja

# Managed by Ansible — do not edit manually.
# This HelmChartConfig patches the K3s-bundled Traefik Helm release.
# K3s's helm-controller merges the valuesContent below into the Traefik chart values.
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: traefik
namespace: kube-system
spec:
valuesContent: |-
# ── Entrypoints ────────────────────────────────────────────────────────────
ports:
web:
port: 8000
exposedPort: 80
protocol: TCP
{% if traefik_redirect_http_to_https %}
redirectTo:
port: {{ traefik_entrypoint_websecure }}
{% endif %}
websecure:
port: 8443
exposedPort: 443
protocol: TCP
tls:
enabled: true
# ── ACME / Let's Encrypt via Cloudflare DNS-01 ─────────────────────────────
additionalArguments:
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.email={{ acme_email }}"
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.storage={{ traefik_acme_storage }}"
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.caserver={{ traefik_acme_server }}"
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.dnschallenge=true"
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.dnschallenge.provider=cloudflare"
- "--certificatesresolvers.{{ traefik_certresolver_name }}.acme.dnschallenge.resolvers=1.1.1.1:53,8.8.8.8:53"
# ── Cloudflare API token injected as an environment variable ───────────────
env:
- name: CF_DNS_API_TOKEN
valueFrom:
secretKeyRef:
name: traefik-cloudflare-token
key: CF_DNS_API_TOKEN
# ── Persist ACME certificate state across pod restarts ────────────────────
persistence:
enabled: true
name: data
accessMode: ReadWriteOnce
size: 128Mi
path: /data
# ── Allow cross-namespace middleware references ───────────────────────────
# Required for IngressRoute objects in one namespace (e.g. vaultwarden) to
# reference Middleware objects in another namespace (e.g. traefik-system).
providers:
kubernetesCRD:
allowCrossNamespace: true
# ── Expose Traefik dashboard (internal use only) ───────────────────────────
ingressRoute:
dashboard:
enabled: false