首次提交:初始化项目
This commit is contained in:
272
009-基础设施/域名绑定配置.md
Normal file
272
009-基础设施/域名绑定配置.md
Normal file
@@ -0,0 +1,272 @@
|
||||
# 域名绑定配置总结
|
||||
|
||||
## 配置完成时间
|
||||
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 域名访问。** 🎉
|
||||
Reference in New Issue
Block a user