Files
k3s_auto_deploy/README-DEPLOYMENT.md

105 lines
2.8 KiB
Markdown
Raw Permalink 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.
# K3s集群自动化部署项目
这个项目包含了完整的K3s集群自动化部署配置使用Ansible + GitOps (ArgoCD + Gitea)。
## 项目结构
```
.
├── config/
│ ├── cluster-vars.yml # 集群配置敏感信息不提交到Git
│ └── cluster-vars.yml.example # 配置模板
├── k3s-ansible/ # k3s-ansible项目
│ └── inventory/
│ └── hosts.ini # Ansible inventory自动生成
├── scripts/
│ ├── generate-inventory.py # 生成inventory脚本
│ ├── deploy.sh # K3s部署脚本
│ ├── deploy-gitea.sh # Gitea部署脚本
│ ├── setup-gitea.sh # Gitea初始化脚本
│ ├── deploy-argocd.sh # ArgoCD部署脚本
│ ├── create-argocd-app.sh # 创建ArgoCD应用脚本
│ └── push-demo-app.sh # 推送示例应用脚本
└── README-DEPLOYMENT.md # 本文件
## 快速开始
### 1. 配置集群信息
```bash
cp config/cluster-vars.yml.example config/cluster-vars.yml
# 编辑 config/cluster-vars.yml填入实际的节点信息
```
### 2. 部署K3s集群
```bash
# 生成inventory
python3 scripts/generate-inventory.py
# 部署K3s幂等操作可重复执行
cd k3s-ansible
ansible-playbook site.yml -i inventory/hosts.ini -e "@../config/cluster-vars.yml"
```
### 3. 部署GitOps组件
在master节点上执行
```bash
# 部署Gitea
./scripts/deploy-gitea.sh
# 初始化Gitea
./scripts/setup-gitea.sh
# 部署ArgoCD
./scripts/deploy-argocd.sh
```
## 幂等性说明
本项目的所有部署脚本都支持幂等性,可以安全地重复执行:
- ✅ Ansible playbook可以重复运行只会更新有变化的配置
- ✅ Gitea和ArgoCD的Helm部署支持upgrade操作
- ✅ 配置文件修改后重新运行会自动更新
## 访问服务
- **ArgoCD**: https://<MASTER_IP>:31875 (admin / ArgoAdmin@2026)
- **Gitea**: http://<MASTER_IP>:32158 (gitea_admin / GitAdmin@2026)
- **应用**: 通过NodePort或Ingress访问
## 更新部署配置
1. 修改 `config/cluster-vars.yml`
2. 重新生成inventory: `python3 scripts/generate-inventory.py`
3. 重新运行部署: `cd k3s-ansible && ansible-playbook site.yml -i inventory/hosts.ini -e "@../config/cluster-vars.yml"`
## 注意事项
- `config/cluster-vars.yml` 包含敏感信息,已添加到 `.gitignore`
- 首次部署后建议配置SSH密钥认证替代密码认证
- 定期备份Gitea和ArgoCD的数据
## 故障排查
### 查看K3s服务状态
```bash
systemctl status k3s # master节点
systemctl status k3s-agent # worker节点
```
### 查看集群状态
```bash
kubectl get nodes
kubectl get pods -A
```
### 查看ArgoCD应用状态
```bash
kubectl get application -n argocd
kubectl describe application <app-name> -n argocd
```