Argo CD 【1】介绍与入门

简介: Argo CD 【1】介绍与入门

文章目录

1. Argo 概览

2. Argo CD 介绍

3. Argo CD 适用场景

4. Argo CD 特征

5. Argo CD 架构

6. Argo CD 组成

6.1 API Server

6.2 Repository Server

6.3 Application Controller

7. Argo CD 核心概念

8. Argo CD 基础必备

9. Argo CD 版本

10. Argo CD 部署简要

10.1 多租户(multi-tenant)

10.2 非高可用

10.3 高可用

10.4 core

10.5 kustomize

10.6 Helm

GitOps【1】理论认识

Argo CD【1】介绍与入门

Argo CD 【2】动手实践

1. Argo 概览

2020 年 4 月 7 日,CNCF Technical Oversight Committee (TOC) 投票通过 Argo 项目进入 CNCF 孵化。


其实 Argo 是在 2017 年由 Applatix 公司创建的(这家公司的主要产品和服务目前主要与 AWS 进行深度融合,当然也包括一些多云的服务),2018 年初被 Intuit 收购。之后,BlackRock 为 Argo 项目贡献了 Argo Events 子项目。两家公司都积极参与项目和社区的开发和培育中。


Argo 及其子项目提供了一种简单的方法管理 Workflow,事件和应用程序。所有 Argo 工具都通过 CRD 的方式实现。他们可以使用或集成其他 CNCF 项目,如 gRPC、Prometheus、NATS、Helm 和 CloudEvents。


Argo 生态目前主要由四个子项目组成,包括:


Argo Workflows – 第一个 Argo 项目,是 Kubernetes 的原生工作流引擎,支持 DAG 和step-based 的工作流;

Argo Events – Kubernetes 上的基于事件的依赖管理器,用于触发 Kubernetes 中的 Argo工作流和其他操作。

Argo CD – 是 Argo 社区和 Intuit 带来的开源项目,支持基于 GitOps 的声明性部署 Kubernetes 资源。

Argo Rollouts – 支持声明式渐进式交付策略,例如 canary 、blue-green 和更多形式。

2. Argo CD 介绍

Argo CD 旨在提供一个声明式持续交付 (CD) 工具。Argo CD 支持多种配置管理工具,包括 ksonnet /jsonnet,kustomize 和 Helm 等。Argo CD 扩展了声明式和基于 Git 的配置管理的优势,以在不影响安全性和合规性的情况下加速应用程序的部署和生命周期管理。

1035234-20181020215539574-213176954.png

3. Argo CD 适用场景

  • 应用程序及其部署环境的配置是声明性的,并且是版本可控的;
  • 应用程序部署和生命周期管理简单、可自动和可审计(企业友好);
  • 应用程序部署快速、可靠和幂等;
  • 需要检测并纠正与版本控制配置的任何偏差;
  • 回滚简单;

4. Argo CD 特征

将应用程序自动部署到指定的目标环境

支持多种配置管理/模板工具(Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)

能够管理和部署到多个集群

SSO 集成(OIDC、OAuth2、LDAP、SAML 2.0、GitHub、GitLab、Microsoft、LinkedIn)

用于授权的多租户和 RBAC 策略

回滚/随处回滚到 Git 存储库中提交的任何应用程序配置

应用资源健康状况分析

自动配置漂移检测和可视化

自动或手动将应用程序同步到所需状态

提供应用程序活动实时视图的 Web UI

用于自动化和 CI 集成的 CLI

Webhook 集成(GitHub、BitBucket、GitLab)

自动化的访问令牌

PreSync、Sync、PostSync 挂钩以支持复杂的应用程序部署(例如蓝色/绿色和金丝雀升级)

应用程序事件和 API 调用的审计跟踪

普罗米修斯指标

用于覆盖 Git 中的 ksonnet/helm 参数的参数覆盖

5. Argo CD 架构

1035234-20181020215539574-213176954.png

6. Argo CD 组成

从整体上看,Argo CD 有三个主要的组成部分:API Server 、Repository Server 、Application Controller。

6.1 API Server

Argo CD 的 API Server 是一个 gRPC/REST server,它公开 Web UI、CLI 以及一些其他场景需要用到的 API。


它主要进行以下几个内容:


应用程序管理和状态报告;

调用应用程序操作(例如:同步、回滚、用户定义的操作);

repository 和集群 credential 管理(存 K8s secrets);

身份验证和授权委托给外部身份认证组件;

RBAC(Role-based access control 基于角色的访问控制);

Git webhook 事件的 listener/forwarder;

6.2 Repository Server

Repository Server 是一个内部服务,它负责保存应用程序 Git 仓库的本地缓存,并负责生成和返回可供 Kubernetes 使用的 manifests,它接受的输入信息主要有以下内容:


仓库地址(URL)

revision(commit, tag, branch)

应用程序路径

模板的特定设置:参数、ksonnet 环境、helm values.yaml

6.3 Application Controller

Application Controller 是一个 Kubernetes controller,它持续监听正在运行的应用程序并将当前的实时状态与所需的目标状态(如 repo 中指定的)进行比较。它检测 OutOfSync 应用程序状态并有选择地采取纠正措施。它负责为生命周期事件(PreSync、Sync、PostSync)调用任何用户定义的 hooks。

7. Argo CD 核心概念

假设您熟悉核心 Git、Docker、Kubernetes、持续交付和 GitOps 概念。


Application清单定义的一组 Kubernetes 资源。这是自定义资源定义 (CRD)。

Application source type哪些工具来构建应用程序。

Target state应用程序所需的状态,由 Git 存储库中的文件表示。

Live state该应用程序的实时状态。部署了哪些 Pod 等。

Sync status实时状态是否与目标状态匹配。部署的应用程序是否与 Git 所说的一样?

Sync使应用程序移动到其目标状态的过程。例如,通过对 Kubernetes 集群应用更改。

Sync operation status 同步是否成功。

Refresh将 Git 中的最新代码与实时状态进行比较。弄清楚有什么不同。

Health应用程序的健康状况,是否正常运行?它可以服务请求吗?

工具一种从文件目录创建清单的工具。例如 Kustomize 或 Ksonnet。请参阅应用程序源类型。

8. Argo CD 基础必备

9. Argo CD 版本

自2019年3月17号发布了 v1.0.0 版本开始,到现在,Argo CD已经全面进入了 v2.x 时代,当前最新的版本是 v2.1.5。


在 2.0 中引入了Pods View功能、重写了日志可视化、新增了通知横幅功能、还有很多后台操作及自定义操作,并且致力于打造 Argo CD Core (轻量级 Argo CD 发行版,仅打包核心 GitOps 功能,依赖Kubernetes API/RBAC 为 UI 和 CLI 提供支持)。


Pods View :对于拥有数百个 Pod 的应用程序特别有用。它没有可视化应用程序的所有 Kubernetes 资源,而是仅显示Kubernetes pod 和密切相关的资源。

新日志可视化:支持分页、过滤、禁用/启用日志流的能力,甚至为终端爱好者提供暗模式。支持查看多个部署 Pod 的聚合日志,Argo CD CLI 也支持日志流。

UI通知横幅功能:使用ConfigMap 中的ui.bannercontent和ui.bannerurl属性指定通知消息和可选 URL argocd-cm。

后台操作:资源的deletion/pruning、仅同步更改的资源、Prune Last、引入了对Sealed-secrets、kubernetes-external-secrets 和 strimzi CRD 的健康检查。

10. Argo CD 部署简要

Argo CD 有四种安装方式:多租户(multi-tenant)、 core 、自定义 、Helm。

10.1 多租户(multi-tenant)

多租户是 Argo CD 使用最多的部署方式。用户可以使用 Web UI 或 argocd CLI 通过 API Server访问 Argo CD 。

该 argocd CLI 必须先执行 argocd login <server-host>命令。更多细节请参考

argocd login SERVER [flags]
# Login to Argo CD using a username and password
argocd login cd.argoproj.io
# Login to Argo CD using SSO
argocd login cd.argoproj.io --sso
# Configure direct access using Kubernetes API server
argocd login cd.argoproj.io --core

在项目的 GitHub 仓库中默认提供了两种部署方式(manifests):

10.2 非高可用

这种类型的安装通常用于演示和测试。(不推荐用于生产)


install.yaml - 具有集群管理员权限的标准 Argo CD 安装。可使用 Argo CD 在其运行的同一集群中部署应用程序,当然也可以使用输入的 credentials 部署到外部集群。


namespace-install.yaml - 只需要命名空间级别的权限(不需要集群管理员权限)。但这种安装的话 Argo CD 不能在其所运行的同一集群中部署应用程序,并且将仅依赖于输入的外部集群 credentials 。


注意:Argo CD CRD 不包含在 namespace-install.yaml 中 必须单独安装。CRD manifests位于manifests/crds目录中。使用以下命令安装它们:

kubectl apply -k https://github.com/argoproj/argo-cd/manifests/crds\?ref\=stable

10.3 高可用

强烈建议生产环境使用高可用方式安装。


bundle 包含相同的组件,但针对高可用性和弹性进行了调整。


ha/install.yaml - 与上文中提到的 install.yaml 相同,但配置了相关组件的多个副本;

ha/namespace-install.yaml - 与上文提到的 namespace-install.yaml

相同,但配置了相关组件的多个副本;

10.4 core

core 安装最适合独立使用 Argo CD 且不需要多租户功能的集群管理员。


此安装包括较少的组件,并且更易于设置。bundle 不包括 API Server或 UI,并只安装每个组件的轻量级(非 HA)版本。


用户需要 Kubernetes 访问权限来管理 Argo CD。该 argocd CLI 必须使用下面的命令进行配置:

kubectl config set-context --current --namespace=argocd
argocd login --core

Web UI 也可以使用,可以使用以下命令启动。

argocd admin dashboard

具体的 manifests 对应于仓库中的 core-install.yaml 。

10.5 kustomize

Argo CD manifests 也可以使用自定义安装。建议将 manifests 作为远程资源包含在内,并使用 Kustomize 补丁应用其他自定义。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: argocd
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.0.4/manifests/ha/install.yaml

10.6 Helm

Argo CD 可以使用Helm安装。Helm chart 目前由社区维护,访问 https://github.com/argoproj/argo-helm/tree/master/charts/argo-cd 获取即可,此处不再添加示例。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
开发工具 git Perl
Argo CD 入门扫盲使用(二)
Argo CD 入门扫盲使用
711 0
|
Kubernetes Devops jenkins
ArgoCD 简明教程
ArgoCD 简明教程
3590 0
ArgoCD 简明教程
|
Kubernetes API 调度
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
企业实战(19)基于Kubeadm工具从零开始快速部署K8S集群
658 0
|
Kubernetes 安全 网络协议
【K8S系列】深入解析k8s网络插件—Calico
【K8S系列】深入解析k8s网络插件—Calico
6411 0
|
Kubernetes 搜索推荐 前端开发
containerd 镜像构建工具 -- nerdctl 和 buildkit
containerd 镜像构建工具 -- nerdctl 和 buildkit
9645 0
|
8月前
|
运维 自然语言处理 Kubernetes
AIOps运维实战指南:OpenClaw阿里云+本地部署保姆级教程,让AI Agent接管运维任务!
本文基于2026年最新实战案例,完整还原OpenClaw与K8s MCP的适配全过程,详细提供阿里云与本地双部署流程,同步分享MCP客户端改造、会话缓存配置、运维技能封装等实操步骤,所有代码命令可直接复制执行,助力运维人员解放重复劳动,打造专属AI运维助手。
1813 12
|
安全
Gitlab配置webhook报错:Urlis blocked: Requests to the local netwo..解决
Gitlab配置webhook报错:Urlis blocked: Requests to the local netwo..解决
1547 0
|
存储 Kubernetes 开发工具
使用ArgoCD管理Kubernetes部署指南
ArgoCD 是一款基于 Kubernetes 的声明式 GitOps 持续交付工具,通过自动同步 Git 存储库中的配置与 Kubernetes 集群状态,确保一致性与可靠性。它支持实时同步、声明式设置、自动修复和丰富的用户界面,极大简化了复杂应用的部署管理。结合 Helm Charts,ArgoCD 提供模块化、可重用的部署流程,显著减少人工开销和配置错误。对于云原生企业,ArgoCD 能优化部署策略,提升效率与安全性,是实现自动化与一致性的理想选择。
1206 0
|
Kubernetes Cloud Native 容器
开放下载!《深入浅出Kubernetes》
一次搞懂6个核心原理吃透基础理论,一次学会6个典型问题的华丽操作
开放下载!《深入浅出Kubernetes》
|
Kubernetes 监控 数据可视化
k8s学习--使用argo-rollouts实现金丝雀发布
k8s学习--使用argo-rollouts实现金丝雀发布
1390 1

热门文章

最新文章