Files
awoooi/k8s/k3s-system/coredns-custom.yaml
OG T 0a9d94d82b feat(k8s): CoreDNS GitOps 架構 (ADR-026)
問題: DNS 配置沒有版本控制,手動修改易遺失

架構:
- k8s/k3s-system/coredns-custom.yaml: HelmChartConfig
- CD workflow: k3s-system 路徑偵測 + 自動 apply
- ADR-026: CoreDNS GitOps 管控架構

DNS 上游:
- 使用 8.8.8.8 + 1.1.1.1
- 禁止 /etc/resolv.conf (systemd-resolved)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-26 18:43:28 +08:00

86 lines
2.2 KiB
YAML

# =============================================================================
# K3s CoreDNS 自訂配置 (GitOps 版本控制)
# =============================================================================
# 負責人: CIO
# 版本: v1.0
# 日期: 2026-03-26 (台北時區)
#
# 原則:
# - 使用 K3s 原生 HelmChartConfig (不與 K3s Helm Controller 衝突)
# - 禁止使用宿主機 systemd-resolved (127.0.0.53)
# - 上游 DNS: Google (8.8.8.8) + Cloudflare (1.1.1.1)
#
# 部署方式:
# CD Pipeline 會將此檔案 SCP 到 K3s Master:
# /var/lib/rancher/k3s/server/manifests/coredns-custom.yaml
# K3s 會自動偵測並 Apply
#
# 變更紀錄:
# - v1.0 (2026-03-26): 初始版本,修復 DNS 解析問題 (ADR-011 Appendix B)
# =============================================================================
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
name: coredns
namespace: kube-system
spec:
valuesContent: |-
# CoreDNS 伺服器配置
servers:
- zones:
- zone: .
port: 53
plugins:
# 錯誤日誌
- name: errors
# 健康檢查端點 (/health)
- name: health
configBlock: |-
lameduck 5s
# 就緒檢查端點 (/ready)
- name: ready
# Kubernetes 內部 DNS 解析
- name: kubernetes
parameters: cluster.local in-addr.arpa ip6.arpa
configBlock: |-
pods insecure
fallthrough in-addr.arpa ip6.arpa
ttl 30
# 上游 DNS 伺服器 (禁止使用 /etc/resolv.conf)
# 🔴 重要: 不使用宿主機 systemd-resolved (127.0.0.53)
- name: forward
parameters: . 8.8.8.8 1.1.1.1
# DNS 快取 (30 秒)
- name: cache
parameters: 30
# 偵測 DNS 迴圈
- name: loop
# 熱重載配置
- name: reload
# 負載平衡 (多個 Pod 回應)
- name: loadbalance
# 資源限制
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
# 自動水平擴展
autoscaler:
enabled: true
min: 1
max: 3