terraform-aws-eks-blueprints GitOps 部署:如何使用 ArgoCD 实现持续交付
terraform-aws-eks-blueprints 是一个用于配置和部署完整 EKS 集群的工具,通过 GitOps 方式结合 ArgoCD 可实现高效的持续交付流程,帮助用户轻松管理 Kubernetes 应用的部署与更新。
什么是 GitOps 与 ArgoCD?
GitOps 是一种基于 Git 的持续交付方法,将应用配置和部署流程存储在 Git 仓库中,通过自动化工具实现配置的同步与应用的部署。ArgoCD 作为一款流行的 GitOps 工具,能够监控 Git 仓库中的配置变化,并自动将 Kubernetes 集群状态与 Git 中的期望状态同步,确保应用部署的一致性和可靠性。
GitOps 部署架构解析
GitOps 部署架构主要包含以下关键组件和流程:
从架构图中可以看到,通过 Terraform(IaC)创建 EKS 集群和相关资源,然后安装 ArgoCD。ArgoCD 读取 Git 仓库中的应用配置,创建应用并同步到 EKS 集群,实现 Add-ons 和 Workloads 的自动化部署与管理。
ArgoCD 在 EKS 集群中的工作流程
ArgoCD 在 EKS 集群中通过以下流程实现持续交付:
- 仓库连接:ArgoCD 连接到存储 Add-ons 和 Workloads 配置的 Git 仓库。
- 配置同步:监控 Git 仓库中的配置变化,将最新配置同步到 EKS 集群。
- 应用部署:根据同步的配置在 EKS 集群中部署和更新应用。
快速部署步骤
1. 克隆项目仓库
首先,克隆 terraform-aws-eks-blueprints 项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/te/terraform-aws-eks-blueprints
2. 部署 EKS 集群基础资源
进入 GitOps 示例目录,使用 Terraform 部署 EKS 集群的 VPC 和基础资源:
cd terraform-aws-eks-blueprints/patterns/gitops/getting-started-argocd
terraform apply -target="module.vpc" -auto-approve
terraform apply -target="module.eks" -auto-approve
3. 完成 ArgoCD 部署
执行以下命令完成 ArgoCD 的部署和配置:
terraform apply -auto-approve
4. 同步 Add-ons 和 Workloads
使用 kubectl 应用 bootstrap 配置,同步 Add-ons 和 Workloads:
kubectl apply --server-side -f bootstrap/addons.yaml
kubectl apply --server-side -f bootstrap/workloads.yaml
验证部署结果
查看 ArgoCD 部署状态
执行以下命令查看 ArgoCD 相关组件的部署状态:
kubectl get deploy -n argocd \
argo-cd-argocd-applicationset-controller \
argo-cd-argocd-repo-server \
argo-cd-argocd-server
正常情况下,各组件的 READY 状态应为 1/1。
访问 ArgoCD 控制台
获取 ArgoCD 的访问密码和 URL:
echo "ArgoCD Password: $(kubectl get secrets argocd-initial-admin-secret -n argocd --template="{{index .data.password | base64decode}}")"
echo "ArgoCD URL: https://$(kubectl get svc -n argocd argo-cd-argocd-server -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')"
通过浏览器访问获取到的 URL,使用用户名 admin 和密码登录 ArgoCD 控制台,查看应用的同步状态。
总结
通过 terraform-aws-eks-blueprints 和 ArgoCD 实现 GitOps 部署,能够极大简化 EKS 集群中应用的持续交付流程。借助 Git 仓库管理配置,结合 ArgoCD 的自动化同步能力,可确保应用部署的一致性、可靠性和可追溯性,是现代云原生应用部署的理想选择。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考





