# 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://:31875 (admin / ArgoAdmin@2026) - **Gitea**: http://: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 -n argocd ```