关于 ArgoCD,初学者指南
ArgoCD 是市场上第一个以在 Kubernetes 上基于声明性 GitOps 的部署而闻名的公司之一,是最常用的持续交付工具之一。它以其在 Kubernetes 上出色的应用程序部署和管理以及自动修复集群、用户访问管理、状态检查等功能而闻名。它是在 Apache 2.0 许可证下在 github上开源的。 ArgoCD 存在,为什么🤔? [](https://res.cloudinary.
ArgoCD 是市场上第一个以在 Kubernetes 上基于声明性 GitOps 的部署而闻名的公司之一,是最常用的持续交付工具之一。它以其在 Kubernetes 上出色的应用程序部署和管理以及自动修复集群、用户访问管理、状态检查等功能而闻名。它是在 Apache 2.0 许可证下在 github上开源的。
ArgoCD 存在,为什么🤔?
[](https://res.cloudinary.com/practicaldev/image/fetch/s--znpQN1v---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/ec6gjcpw7vvlrkj88cvs.jpeg)
市场上已经有很多工具,为什么我们还需要另一个呢?为了证明 ArgoCD 的存在,让我们尝试了解 ArgoCD 前后应用程序部署的工作流程。
ArgoCD之前的工作流程
[](https://res.cloudinary.com/practicaldev/image/fetch/s--mIrM_-vr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/f9dxi44lpvq97pkg03al.jpg)
在 ArgoCD 存在之前,管道看起来像上图。一个常见的 ci-cd 工具用于持续集成和持续部署。
-
一旦代码被推送到版本控制让我们说 Github,该工具会触发其他作业
-
它运行测试用例,构建镜像,将镜像推送到相应的容器注册表
-
然后根据新映像构建更改部署清单,然后使用
kubectl
命令部署新清单
所有这些作业/任务都由 ci-cd 工具执行。这就是 ArgoCD 存在之前传统 ci-cd 工作流程的工作方式。但是,此工作流程存在一些挑战。
-
我们需要在ci-cd工具中安装和配置kubectl、helm等工具
-
如果将 eks 等托管服务用于相应的 ci-cd 工具,我们将必须提供对 k8s 集群和云提供商的访问权限
-
向外部工具提供凭证可能导致安全漏洞
-
部署指标不可见,您的 ci-cd 工具在应用清单后不知道已部署应用程序的状态
ArgoCD之后的工作流程
[](https://res.cloudinary.com/practicaldev/image/fetch/s--SlS9e6iJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/j6pnk2lfu0hixq09avgj.jpg)
ArgoCD 上市后,整个工作流程发生了变化。正如您在图像中看到的,持续集成和持续部署现在已经分开了。 ArgoCD 使用基于声明性 GitOps 的部署,它指出最佳实践是拥有两个不同的 git 存储库,一个用于应用程序源代码,另一个用于部署清单文件。
-
一旦代码被推送到版本,CI 管道触发作业
-
开始运行测试用例,构建镜像,将镜像推送到各自的容器注册表,然后根据清单更新清单并将清单推送到其各自的 git 存储库
-
一旦更新的清单被推送到其各自的存储库,如镜像所显示的 Github、Gitlab 等,安装在集群内的 ArgoCD 会自动检查更新并在集群内应用。
这就是相应的 ci-cd 工具仅限于 CI 和 ArgoCD 处理 CD 部分的方式,从而将这两个操作分开。使用此工作流程有许多不同的优点,其中一些是 -
-
它使用 git 作为单一数据源,从而将 GitOps 原则用于部署
-
因为 ArgoCD 安装在集群中并且是唯一在集群中进行更改的,它不需要任何额外的凭据,这与 ci-cd 工具的情况不同
-
ArgoCD 提供了一个仪表板来管理所有已部署的应用程序,因此使您能够获得应用程序正在部署或未部署的状态,这是我们在以前的工作流程中无法获得的
-
轻松回滚,因为集群与单独的git仓库同步,所以我们只需要还原git中的更改,集群就会自动与git仓库同步
-
灾难恢复,如果发生任何灾难,您只需将 git 存储库指向新创建的集群,它将具有之前集群的所有配置
因此,这些是 ArgoCD 之后 Workflow 的一些主要优势。现在让我们深入了解 ArgoCD 并做一些实际的事情。
ArgoCD 入门
正如我们已经看到了 ArgoCD 的一些背景概念及其需求,让我们深入了解一些动手部分。在集群中安装和设置 ArgoCD 有两种不同的方法,
1.使用脚本安装
2.使用helm chart安装
让我们来看看这些。
[注意:安装 argocd 之前必须安装 kubectl 命令,并且 kubeconfig 文件应该在默认位置(~/.kube/config)]
脚本安装
只需几个命令,您就可以在集群中安装 ArgoCD 并准备在其上部署应用程序。请执行以下命令进行安装 -
创建一个命名空间argocd
将安装所有 ArgoCD 资源
kubectl create namespace argocd
进入全屏模式 退出全屏模式
在创建的命名空间中安装所有资源
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
进入全屏模式 退出全屏模式
安装后,您需要访问仪表板。他们的文档中提供了不同的方法来访问仪表板。我们将在本地机器上安装时使用端口转发。请执行以下命令
kubectl port-forward svc/argocd-server -n argocd 8080:443
进入全屏模式 退出全屏模式
现在可以在127.0.0.1:8080
中访问您的 ArgoCD 仪表板,如下图所示。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--lEu5-bhW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/nofuzua4039l96mekfna.png)
对于登录凭据,用户名是admin
,对于密码,执行以下命令 -
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
进入全屏模式 退出全屏模式
恭喜🥳 您已成功登录 argocd 仪表板。
现在,这是方法之一。它也可以使用 helm chart 安装。让我们看看如何。
helm安装
最近 argo-project 推出了对 ArgoCD 的官方 helm-chart 支持,这使我们也可以使用 helm 安装它。请执行以下命令以使用 helm 安装 ArgoCD -
在系统中添加 helm 存储库
helm repo add argo https://argoproj.github.io/argo-helm
进入全屏模式 退出全屏模式
现在安装 ArgoCD helm chart
helm install my-release argo/argo-cd
进入全屏模式 退出全屏模式
使用 helm chart 安装的好处是,您可以在安装过程中轻松提供所需的配置。关于 ArgoCD helm chart 支持的参数的详细信息,请看这个详细的README
安装后,要访问仪表板和凭据,您可以按照我们之前执行的相同命令进行操作。
[注意:如果您在安装期间没有提供任何命名空间,请确保删除命名空间,即-n argocd
,以访问仪表板和凭据。要提供命名空间,请将其附加到 helm install 命令--create-namespace --namespace argocd
]
这就是您可以使用两种不同方法轻松安装 ArgoCD 的方式。有关 ArgoCD 入门的详细文档,请查看。现在,让我们部署一个简单的应用程序并将其配置为由 ArgoCD 管理。
应用部署
对于要由 ArgoCD 部署和管理的任何应用程序,我们需要创建一个配置文件,例如application.yaml
,它将具有 ArgoCD 所需的所有配置,其中包含要与之同步的存储库 URL,存储所有清单的路径,需要部署、命名空间和其他配置。这是一个演示项目,我们将在我们的集群中部署它,其中包含所有yamls
和application.yaml
文件以及最低配置。
让我们部署我们的应用程序。请按照以下步骤操作。
-
首先,我们需要将所有配置文件,包括
application.yaml
存储在单独的 gitHub(gitlab、bitbucket 等)存储库中,因为您可以在这里看到 -
然后我们只需要使用以下命令在集群中部署包含 ArgoCD 所需配置的
application.yaml
-
kubectl apply -f application.yaml
进入全屏模式 退出全屏模式
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Nkp3HXNG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/jctvbkokfrlqazr975ho.png)
现在只需应用 ArgoCD 应用程序配置文件,所有其他 k8s yamls 将自动部署并与集群同步。在下图中,您可以看到应用程序go-app-argo-config
负责创建所有其他资源。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--ocu67w-u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/brglesoh6gl1155uaifw.png)
如果我们想要更新部署、服务或添加任何其他 k8s 清单(yamls),我们只需要进行更改并推送到与其同步的 github 存储库中,其余部分将由 ArgoCD 处理。
所以,这就是关于 ArgoCD 的全部内容,您需要启动并围绕它进行游戏。如果您有任何疑问或建议,请随时发表评论,我很乐意回答您的所有问题。
有关 ArgoCD 的更多详细信息,请随时查看他们的Github 存储库
我在做什么
正如您在博客中看到的,ArgoCD 专门用于部署和其他操作,您仍然需要其他工具。Devtron是一个用于 Kubernetes 的开源工具生态系统。 Devtron 还使用 ArgoCD 进行 GitOps 驱动部署,以及其他行业认可的开源工具,如 Prometheus 和 Grafana(用于监控)、Clair(用于图像扫描)、Casbin(用于 rbac 身份验证实施)以及更多开源和企业级工具都集成无缝集成在一个包中。
目前我正在写另一个博客,我将解释 Devtron 如何利用 ArgoCD 和其他工具在 Kubernetes 上提供完整的软件交付生命周期的无缝体验。
devtron-labs/devtron
Kubernetes 工具集成平台
更多推荐
所有评论(0)