# 域名绑定配置总结 ## 配置完成时间 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` ```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 ## 访问地址 ### 监控和管理 - **Longhorn 存储管理**: https://longhorn.u9.net3w.com - **Grafana 监控**: https://grafana.u9.net3w.com - 用户名: `admin` - 密码: `prom-operator` - **Prometheus**: https://prometheus.u9.net3w.com - **Alertmanager**: https://alertmanager.u9.net3w.com ### 对象存储 - **MinIO S3 API**: https://s3.u6.net3w.com - **MinIO Console**: https://console.s3.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 状态 ```bash kubectl get pods -n default -l app=caddy kubectl logs -n default -l app=caddy -f ``` ### 检查 Ingress 状态 ```bash kubectl get ingress -A ``` ### 测试域名访问 ```bash 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`,添加: ```caddyfile newservice.u9.net3w.com { reverse_proxy traefik.kube-system.svc.cluster.local:80 } ``` ### 2. 更新 Caddy ConfigMap ```bash 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 ```bash kubectl rollout restart deployment caddy -n default ``` ### 4. 创建 Ingress ```yaml 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 ```bash kubectl apply -f newservice-ingress.yaml ``` ## 故障排查 ### Caddy 无法启动 ```bash # 查看 Caddy 日志 kubectl logs -n default -l app=caddy # 检查 ConfigMap kubectl get configmap caddy-config -n default -o yaml ``` ### 域名无法访问 ```bash # 检查 Ingress kubectl describe ingress -n # 检查 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 证书问题 ```bash # 查看 Caddy 证书状态 kubectl exec -n default -it -- ls -la /data/caddy/certificates/ # 强制重新申请证书 kubectl rollout restart deployment caddy -n default ``` ## 安全建议 1. **启用基本认证**: 为敏感服务(如 Prometheus、Alertmanager)添加认证 2. **IP 白名单**: 限制管理界面的访问 IP 3. **定期更新**: 保持 Caddy 和 Traefik 版本更新 4. **监控日志**: 定期检查访问日志,发现异常访问 ## 维护命令 ```bash # 更新 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 域名访问。** 🎉