Add HTTPS deployment summary and troubleshooting guide

- Complete deployment status
- ArgoCD HTTPS configuration fix explanation
- Idempotency guarantees
- Troubleshooting procedures
- Maintenance checklist

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 05:22:52 +08:00
parent 9ae894a083
commit a44407558d

188
DEPLOYMENT-SUMMARY.md Normal file
View File

@@ -0,0 +1,188 @@
# HTTPS配置部署总结
## ✅ 部署状态
### 已完成的组件
1. **cert-manager** - 自动证书管理
- 版本: v1.13.3
- 状态: 运行正常
- 命名空间: cert-manager
2. **ClusterIssuer** - Let's Encrypt证书签发
- letsencrypt-prod (生产环境) - Ready ✅
- letsencrypt-staging (测试环境) - Ready ✅
3. **SSL证书** - 所有证书已成功签发
```
NAMESPACE NAME READY SECRET
argocd argocd-tls-cert True argocd-tls-cert
default test-app-tls-cert True test-app-tls-cert
gitea gitea-tls-cert True gitea-tls-cert
```
4. **HTTPS Ingress** - 所有服务已启用HTTPS
- ArgoCD: https://argocd.jpc.net3w.com ✅
- Gitea: https://git.jpc.net3w.com ✅
- Test App: https://test.jpc.net3w.com ✅
## 🔧 关键配置修复
### ArgoCD HTTPS配置
**问题**: ArgoCD默认使用自签名证书与Ingress TLS终止冲突
**解决方案**: 配置ArgoCD以insecure模式运行HTTP让Ingress处理TLS终止
**配置文件**: `manifests/07-argocd-insecure-config.yaml`
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
namespace: argocd
data:
server.insecure: "true"
```
**原理**:
- Ingress在443端口接收HTTPS请求
- Ingress使用cert-manager签发的证书进行TLS终止
- Ingress将解密后的HTTP请求转发到ArgoCD的80端口
- ArgoCD以HTTP模式运行无需处理TLS
## 📁 Git仓库结构
```
https-config/
├── README.md # 说明文档
├── DEPLOYMENT-SUMMARY.md # 本文档
└── manifests/
├── 01-namespace.yaml # cert-manager命名空间
├── 02-cert-manager.yaml # cert-manager RBAC
├── 03-clusterissuer.yaml # Let's Encrypt配置
├── 04-ingress-argocd-tls.yaml # ArgoCD HTTPS Ingress
├── 05-ingress-gitea-tls.yaml # Gitea HTTPS Ingress
├── 06-ingress-test-app-tls.yaml # test-app HTTPS Ingress
└── 07-argocd-insecure-config.yaml # ArgoCD insecure模式配置
```
## 🔄 幂等性保证
### GitOps管理
- ✅ 所有配置存储在Git仓库
- ✅ ArgoCD自动同步Git变更
- ✅ 支持重复应用,不会产生副作用
- ✅ 配置变更有完整历史记录
### 部署流程
```
修改Git配置 → ArgoCD检测变更 → 自动同步到集群 → 配置生效
```
### 验证幂等性
```bash
# 重新应用所有配置(应该无变化)
kubectl apply -f manifests/
# 检查ArgoCD同步状态
kubectl get application https-config -n argocd
```
## 🔍 故障排查
### 证书未就绪
```bash
# 检查证书状态
kubectl get certificate -A
# 查看证书详情
kubectl describe certificate <cert-name> -n <namespace>
# 检查cert-manager日志
kubectl logs -n cert-manager deployment/cert-manager
```
### HTTPS无法访问
```bash
# 检查Ingress状态
kubectl get ingress -A
# 检查Traefik日志
kubectl logs -n kube-system -l app.kubernetes.io/name=traefik
# 测试内部访问
curl -k -I https://localhost/ -H "Host: <domain>"
```
### ArgoCD无法访问
```bash
# 检查ArgoCD配置
kubectl get configmap argocd-cmd-params-cm -n argocd -o yaml
# 检查ArgoCD日志
kubectl logs -n argocd deployment/argocd-server
# 验证insecure模式
kubectl get configmap argocd-cmd-params-cm -n argocd -o jsonpath={.data.server.insecure}
```
## 📊 证书自动续期
cert-manager会自动管理证书续期
- **检查周期**: 每小时检查一次
- **续期时间**: 证书到期前30天
- **续期方式**: 自动向Let's Encrypt申请新证书
- **无需人工干预**: 完全自动化
## 🔐 安全建议
1. **DNS解析**: 确保域名正确解析到集群IP
2. **防火墙规则**: 开放443端口HTTPS
3. **证书监控**: 定期检查证书状态
4. **备份证书**: 虽然会自动续期但建议备份Secret
5. **速率限制**: Let's Encrypt有速率限制避免频繁申请
## 🎯 访问验证
### 从外部访问需要DNS和防火墙配置
```bash
curl -I https://argocd.jpc.net3w.com
curl -I https://git.jpc.net3w.com
curl -I https://test.jpc.net3w.com
```
### 从集群内部访问
```bash
kubectl run -it --rm debug --image=curlimages/curl --restart=Never -- \
curl -k -I https://argocd.jpc.net3w.com
```
## 📝 维护清单
### 日常维护
- [ ] 每周检查证书状态
- [ ] 每月检查cert-manager日志
- [ ] 每季度验证自动续期功能
### 配置变更
- [ ] 修改Git仓库中的配置文件
- [ ] 提交并推送到Gitea
- [ ] 等待ArgoCD自动同步3分钟内
- [ ] 验证变更生效
### 添加新服务
1. 创建Ingress配置添加TLS和cert-manager注解
2. 提交到Git仓库
3. ArgoCD自动部署
4. cert-manager自动申请证书
## 🎉 总结
**HTTPS配置完成**: 所有服务已启用HTTPS
**证书自动管理**: cert-manager自动申请和续期
**GitOps化**: 配置存储在Git支持版本控制
**幂等性保证**: 可以安全重复应用配置
**自动化**: 修改Git自动部署无需手动操作
您的K3s集群现在已经完全支持HTTPS并通过GitOps实现了自动化和幂等性管理