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

273 lines
6.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 域名绑定配置总结
## 配置完成时间
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 <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 证书问题
```bash
# 查看 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. **监控日志**: 定期检查访问日志,发现异常访问
## 维护命令
```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 域名访问。** 🎉