Files
k3s/009-基础设施/域名绑定配置.md
2026-02-05 00:11:05 +08:00

6.5 KiB
Raw Blame History

域名绑定配置总结

配置完成时间

2026-01-30

域名配置

所有服务已绑定到 *.u9.net3w.com 子域名,通过 Caddy 作为前端反向代理。

已配置的子域名

服务 域名 后端服务 命名空间
Longhorn UI https://longhorn.u9.net3w.com longhorn-frontend:80 longhorn-system
Grafana https://grafana.u9.net3w.com kube-prometheus-stack-grafana:80 monitoring
Prometheus https://prometheus.u9.net3w.com kube-prometheus-stack-prometheus:9090 monitoring
Alertmanager https://alertmanager.u9.net3w.com kube-prometheus-stack-alertmanager:9093 monitoring
MinIO S3 API https://s3.u6.net3w.com minio:9000 minio
MinIO Console https://console.s3.u6.net3w.com minio:9001 minio

架构说明

Internet (*.u9.net3w.com)
    ↓
Caddy (前端反向代理, 80/443)
    ↓
Traefik Ingress Controller
    ↓
Kubernetes Services

流量路径

  1. 外部请求 → DNS 解析到服务器 IP
  2. Caddy (端口 80/443) → 接收请求,自动申请 Let's Encrypt SSL 证书
  3. Traefik → Caddy 转发到 Traefik Ingress Controller
  4. Kubernetes Service → Traefik 根据 Ingress 规则路由到对应服务

Caddy 配置

配置文件位置: /home/fei/k3s/009-基础设施/005-ingress/Caddyfile

{
    email admin@u6.net3w.com
}

# Longhorn 存储管理
longhorn.u9.net3w.com {
    reverse_proxy traefik.kube-system.svc.cluster.local:80
}

# Grafana 监控仪表板
grafana.u9.net3w.com {
    reverse_proxy traefik.kube-system.svc.cluster.local:80
}

# Prometheus 监控
prometheus.u9.net3w.com {
    reverse_proxy traefik.kube-system.svc.cluster.local:80
}

# Alertmanager 告警管理
alertmanager.u9.net3w.com {
    reverse_proxy traefik.kube-system.svc.cluster.local:80
}

Ingress 配置

Longhorn Ingress

  • 文件: /home/fei/k3s/009-基础设施/005-ingress/longhorn-ingress.yaml
  • Host: longhorn.u9.net3w.com

监控系统 Ingress

  • 文件: /home/fei/k3s/009-基础设施/006-monitoring/ingress.yaml
  • Hosts:
    • grafana.u9.net3w.com
    • prometheus.u9.net3w.com
    • alertmanager.u9.net3w.com

SSL/TLS 证书

Caddy 会自动为所有配置的域名申请和续期 Let's Encrypt SSL 证书。

  • 证书存储: Caddy Pod 的 /data 目录
  • 自动续期: Caddy 自动管理
  • 邮箱: admin@u6.net3w.com

访问地址

监控和管理

对象存储

DNS 配置

确保以下 DNS 记录已配置A 记录或 CNAME

*.u9.net3w.com  →  <服务器IP>

或者单独配置每个子域名:

longhorn.u9.net3w.com      →  <服务器IP>
grafana.u9.net3w.com       →  <服务器IP>
prometheus.u9.net3w.com    →  <服务器IP>
alertmanager.u9.net3w.com  →  <服务器IP>

验证配置

检查 Caddy 状态

kubectl get pods -n default -l app=caddy
kubectl logs -n default -l app=caddy -f

检查 Ingress 状态

kubectl get ingress -A

测试域名访问

curl -I https://longhorn.u9.net3w.com
curl -I https://grafana.u9.net3w.com
curl -I https://prometheus.u9.net3w.com
curl -I https://alertmanager.u9.net3w.com

添加新服务

如果需要添加新的服务到 u9.net3w.com 域名:

1. 更新 Caddyfile

编辑 /home/fei/k3s/009-基础设施/005-ingress/Caddyfile,添加:

newservice.u9.net3w.com {
    reverse_proxy traefik.kube-system.svc.cluster.local:80
}

2. 更新 Caddy ConfigMap

kubectl create configmap caddy-config \
  --from-file=Caddyfile=/home/fei/k3s/009-基础设施/005-ingress/Caddyfile \
  -n default --dry-run=client -o yaml | kubectl apply -f -

3. 重启 Caddy

kubectl rollout restart deployment caddy -n default

4. 创建 Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: newservice-ingress
  namespace: your-namespace
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
  - host: newservice.u9.net3w.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: your-service
            port:
              number: 80

5. 应用 Ingress

kubectl apply -f newservice-ingress.yaml

故障排查

Caddy 无法启动

# 查看 Caddy 日志
kubectl logs -n default -l app=caddy

# 检查 ConfigMap
kubectl get configmap caddy-config -n default -o yaml

域名无法访问

# 检查 Ingress
kubectl describe ingress <ingress-name> -n <namespace>

# 检查 Traefik
kubectl logs -n kube-system -l app.kubernetes.io/name=traefik

# 测试内部连接
kubectl run test --rm -it --image=curlimages/curl -- curl -v http://traefik.kube-system.svc.cluster.local:80

SSL 证书问题

# 查看 Caddy 证书状态
kubectl exec -n default -it <caddy-pod> -- ls -la /data/caddy/certificates/

# 强制重新申请证书
kubectl rollout restart deployment caddy -n default

安全建议

  1. 启用基本认证: 为敏感服务(如 Prometheus、Alertmanager添加认证
  2. IP 白名单: 限制管理界面的访问 IP
  3. 定期更新: 保持 Caddy 和 Traefik 版本更新
  4. 监控日志: 定期检查访问日志,发现异常访问

维护命令

# 更新 Caddy 配置
kubectl create configmap caddy-config \
  --from-file=Caddyfile=/home/fei/k3s/009-基础设施/005-ingress/Caddyfile \
  -n default --dry-run=client -o yaml | kubectl apply -f -
kubectl rollout restart deployment caddy -n default

# 查看所有 Ingress
kubectl get ingress -A

# 查看 Caddy 日志
kubectl logs -n default -l app=caddy -f

# 查看 Traefik 日志
kubectl logs -n kube-system -l app.kubernetes.io/name=traefik -f

备份

重要配置文件已保存在:

  • Caddyfile: /home/fei/k3s/009-基础设施/005-ingress/Caddyfile
  • Longhorn Ingress: /home/fei/k3s/009-基础设施/005-ingress/longhorn-ingress.yaml
  • 监控 Ingress: /home/fei/k3s/009-基础设施/006-monitoring/ingress.yaml

建议定期备份这些配置文件。


*配置完成!所有服务现在可以通过 .u9.net3w.com 域名访问。 🎉