ArgoCD第一课--概念理解

1 Argo CD 简介

Argo CD 是一个为 Kubernetes 而生的,遵循声明式 GitOps 理念的持续部署(CD)工具,它的配置和使用非常简单,并且自带一个简单易用的 Dashboard 页面,并且支持多种配置管理/模板工具(例如 Kustomize、Helm、Ksonnet、Jsonnet、plain-YAML)。

Argo CD 被实现为一个 Kubernetes 控制器,它持续监控正在运行的应用程序并将当前的实时状态与所需的目标状态(例如 Git 仓库中的配置)进行比较,在 Git 仓库更改时自动同步和部署应用程序。

2 架构图

Argo CD 在 CI/CD 流程中的位置如下图所示,Argo CD 的主要职责是 CD(Continuous Delivery,持续交付),将应用部署到 Kubernetes 等环境中,而 CI(Continuous Integration,持续集成)主要是交给 Jenkins,Gitlab CI 等工具来完成。

这里简单介绍一下 GitOps 的概念,GitOps 这个词出现于 2017 年,是由 Weaveworks 公司根据多年云计算基础设施和应用程序管理经验而提出的一个概念,它是一种进行 Kubernetes 集群管理和应用程序交付的方式,GitOps 使用 Git 作为声明性基础设施和应用程序的单一事实来源。

GitOps 的核心思想是拥有一个 Git 仓库,包含目标环境中当前所需基础设施的声明性描述,以及使目标环境与 Git 仓库中描述的状态相匹配的自动化过程,Argo CD 就是一个遵循了 GitOps 理念的持续部署(CD)工具。

在 GitOps 模式的 CI/CD 流水线包含以下几个流程:

1.将应用的 Git 仓库分为 Application Deployment file 和 Docker file 两个库。 Docker file 用于存放应用的核心代码以及 Docker build file,后续将会直接打包成 Docker image;Application Deployment file 可以 Kustomize、Helm、Ksconnet、Jsonnet 等多种 Kubernetes 包管理工具来定义;以 Helm 为例,Chart 中所使用到的 Image 由 Docker file Code 打包完成后提供。

2.使用 Jenkins 或 Gitlab 等 CI 工具进行自动化构建打包,并将 Docker image push 到 Harbor 镜像仓库。

3.使用 Argo CD 部署应用。Argo CD 可以独立于集群之外,并且支持管理多个 Kubernetes 集群。在 Argo CD 上配置好应用部署的相关信息后 Argo CD 便可以正常工作,Argo CD 会自动和代码仓库 Application deployment file 的内容进行校验,当代码仓库中应用属性等信息发生变化时,Argo CD 会自动同步更新 Kubernetes 集群中的应用;应用启动时,会从 Harbor 镜像仓库拉取 Docker image。

相关推荐
海鸥812 天前
ArgoCD App of Apps 模式详解
java·elasticsearch·argocd
海鸥812 天前
argocd, app (especially CiliumIdentity) is constantly marked as Out-Of-Sync
大数据·elasticsearch·argocd
一念一花一世界5 天前
企业级CI/CD工具选型:Argo CD vs Tekton vs Arbess
ci/cd·argocd·tekton·arbess
羊羊羊i14 天前
通过Crossplane使用K8sYAML格式的API接口,创建虚拟云资源,同时利用ArgoCD达到GitOps效果
容器·kubernetes·argocd
一条闲鱼_mytube16 天前
CI/CD: K8S + Tekton + ArgoCD 深入浅出完全指南
大数据·argocd
一条闲鱼_mytube16 天前
CI/CD: Argo 深入浅出教程
大数据·elasticsearch·argocd
庸子19 天前
告别手动运维:Kustomize 与 ArgoCD 构建的 GitOps 体系
运维·kubernetes·argocd
Empty_7771 个月前
ArgoCD概述
argocd
Selegant1 个月前
Kubernetes + Helm + ArgoCD:打造 GitOps 驱动的 Java 应用交付流水线
java·kubernetes·argocd
海鸥811 个月前
in argocd ‘/tmp/_argocd-repo/../.git/index.lock‘: No space left on
git·argocd