Files
k3s_auto_deploy/README-DEPLOYMENT.md

2.8 KiB
Raw Permalink Blame History

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集群

# 生成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节点上执行

# 部署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服务状态

systemctl status k3s        # master节点
systemctl status k3s-agent  # worker节点

查看集群状态

kubectl get nodes
kubectl get pods -A

查看ArgoCD应用状态

kubectl get application -n argocd
kubectl describe application <app-name> -n argocd