- Change from Deployment with 3 replicas to DaemonSet - Ensure Traefik runs on every node automatically
78 lines
1.8 KiB
YAML
78 lines
1.8 KiB
YAML
apiVersion: helm.cattle.io/v1
|
|
kind: HelmChartConfig
|
|
metadata:
|
|
name: traefik
|
|
namespace: kube-system
|
|
spec:
|
|
valuesContent: |-
|
|
# DaemonSet for HA - runs on every node
|
|
deployment:
|
|
kind: DaemonSet
|
|
|
|
# Resource limits
|
|
resources:
|
|
requests:
|
|
cpu: 50m
|
|
memory: 128Mi
|
|
limits:
|
|
memory: 128Mi
|
|
|
|
# Pod Anti-Affinity - 가능하면 각 노드에 분산 배치 (soft)
|
|
affinity:
|
|
podAntiAffinity:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
- weight: 100
|
|
podAffinityTerm:
|
|
labelSelector:
|
|
matchLabels:
|
|
app.kubernetes.io/name: traefik
|
|
topologyKey: kubernetes.io/hostname
|
|
|
|
# Control-plane 노드에도 배치 허용
|
|
tolerations:
|
|
- key: node-role.kubernetes.io/control-plane
|
|
operator: Exists
|
|
|
|
# Traefik Dashboard 활성화
|
|
dashboard:
|
|
enabled: true
|
|
|
|
# API 활성화 (Dashboard에서 필요)
|
|
api:
|
|
dashboard: true
|
|
|
|
# Cross-namespace middleware 허용
|
|
providers:
|
|
kubernetesCRD:
|
|
allowCrossNamespace: true
|
|
|
|
# CLI 추가 인자
|
|
additionalArguments:
|
|
- "--api.insecure=true"
|
|
|
|
# ports 설정
|
|
ports:
|
|
traefik:
|
|
expose:
|
|
default: true
|
|
|
|
# svclb tolerations for control-plane node
|
|
service:
|
|
annotations:
|
|
svccontroller.k3s.cattle.io/tolerations: '[{"key":"node-role.kubernetes.io/control-plane","operator":"Exists","effect":"NoSchedule"}]'
|
|
|
|
# Prometheus metrics
|
|
metrics:
|
|
prometheus:
|
|
entryPoint: metrics
|
|
addEntryPointsLabels: true
|
|
addRoutersLabels: true
|
|
addServicesLabels: true
|
|
service:
|
|
enabled: true
|
|
serviceMonitor:
|
|
enabled: true
|
|
namespace: prometheus
|
|
additionalLabels:
|
|
release: prometheus
|