引言
使用Kubernetes部署你的应用程序可以提供显著的基础设施优势,例如灵活的伸缩、分布式组件的管理以及对应用程序不同版本的控制。然而,随着控制的增加,复杂性也随之增加。持续集成和持续部署(CI/CD)系统通常工作在高抽象级别,以便提供版本控制、更改日志记录和回滚功能。此方法称为GitOps。
GitOps最初是由Weaveworks在2017年的一篇博客文章中提出的,它使用Git作为CI/CD过程的唯一来源,将代码更改集成到每个项目的单个共享存储库中,并使用Pull请求来管理基础设施和部署。
在本篇文章中,你将学习使用Argo CD,这是一种声明式持续交付工具。Argo CD提供了持续交付工具,只要Git存储库中发生更改,该工具就会自动同步和部署你的应用程序。通过管理应用程序的部署和生命周期,它为Kubernetes环境中的版本控制、配置和应用程序定义提供了解决方案,通过易于理解的用户界面组织复杂的数据。它可以处理多种类型的Kubernetes 部署方式,包括Jsonnet、kustomize应用程序、Helm Charts和YAML/json文件,并支持来自GitHub、GitLab和BitBucket的WebHook通知。
下面,你将使用Argo CD从Git仓库中部署和同步应用程序。
第 0 步 - 拥有k8s环境
如果你已拥有 k8s 环境可跳过此步骤
本教程采用优快云 开发云提供了k8s学习环境,一键创建了k8s环境。优快云 开发云k8s 学习环境按小时付费使用,每小时仅 0.1元。学习完毕后可以释放主机资源即会停止计费。
点这里一键拥有 k8s 环境。
你也可以使用其他方法创建自己的k8s集群。
点击【立即购买】后,几分钟后你可以拥有自己的k8s集群。
在本地计算机上安装kubectl
命令行工具,配置为连接到你的集群。kubectl
你可以在官方文档中阅读有关安装的更多信息。
第1步 - 在你的群集上安装Argo CD
要安装Argo CD,你应该首先使用kubectl
检查Kubernetes配置,从中可以ping通你的工作节点。你可以通过运行kubectl get nodes
来测试:
kubectl get nodes
此命令返回状态为Ready
的节点列表:
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 10d v1.24.2+k3s1
接下来,在你的集群中创建argocd
命名空间
kubectl create namespace argocd
运行AgroCD提供的安装脚本,安装ArgoCD 到上步创建的命名空间
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
命令输出如下
customresourcedefinition.apiextensions.k8s.io/applications.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/applicationsets.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/appprojects.argoproj.io created
serviceaccount/argocd-application-controller created
serviceaccount/argocd-applicationset-controller created
serviceaccount/argocd-dex-server created
serviceaccount/argocd-notifications-controller created
serviceaccount/argocd-redis created
serviceaccount/argocd-repo-server created
serviceaccount/argocd-server created
role.rbac.authorization.k8s.io/argocd-application-controller created
role.rbac.authorization.k8s.io/argocd-applicationset-controller created
role.rbac.authorization.k8s.io/argocd-dex-server created
role.rbac.authorization.k8s.io/argocd-notifications-controller created
role.rbac.authorization.k8s.io/argocd-server created
clusterrole.rbac.authoriza