1. argo 介绍
Argo 是一个开源项目,它在 Kubernetes 上提供了一系列工具,用于构建和运行应用程序。Argo 的核心组件主要包括以下几个:
- Argo CD
Argo CD 是一个基于 GitOps 的持续交付工具,它允许用户声明式地管理 Kubernetes 集群中的应用部署。Argo CD 通过与 Git 仓库同步,确保集群状态与 Git 仓库中定义的状态保持一致。
- Argo Workflows
这是一个基于容器的任务编排工具,它允许用户定义、运行和监控复杂的工作流。Argo Workflows 支持多种类型的工作流,包括顺序、并行、条件和循环等。
- Argo Events
这是一个事件驱动工具,它提供了一种机制来处理来自外部系统的事件,并触发 Kubernetes 集群内的操作。Argo Events 包括事件源(EventSources)、事件总线(EventBus)、传感器(Sensors)和触发器(Triggers)等组件。
- Argo Rollouts
Argo Rollouts 是一个应用渐进式发布工具,它支持金丝雀发布、蓝绿发布等策略,帮助用户安全地更新和回滚 Kubernetes 集群中的应用。
2. argo-cd
2.1 安装
|
|
|
|
2.2 相关 CRD 列表
|
|
- applications.argoproj.io
这个 CRD 定义了 Argo CD 中的 Application 资源。Application 是 Argo CD 的核心概念之一,它代表了在 Kubernetes 集群中部署的一组资源(如 Pods、Services 等)的期望状态。Application 资源通常与 Git 仓库中的配置文件关联,允许用户通过 GitOps 的方式管理应用的部署和更新。
- applicationsets.argoproj.io
ApplicationSet 是 Argo CD 的一个扩展,它提供了自动化和更灵活的管理能力,特别是在处理大量集群和单体仓库(monorepo)时。ApplicationSet 允许用户使用单个 Kubernetes 清单(manifest)来针对多个 Kubernetes 集群部署 Argo CD 应用。它还支持在多租户 Kubernetes 集群中,让单个集群租户使用 Argo CD 部署应用,而无需集群管理员介入。ApplicationSet 通过使用不同的生成器(如列表生成器、集群生成器、Git 生成器等)来生成参数,这些参数随后被用于模板渲染,从而创建或更新 Argo CD 应用。
- appprojects.argoproj.io
AppProject 资源在 Argo CD 中用于逻辑上组织 Application 资源。它定义了一组应用可以部署到的 Git 仓库、目标集群和命名空间,以及这些应用的访问控制策略。AppProject 允许用户定义源仓库(sourceRepos)、目标集群(destinations)和角色(roles),这些角色定义了用户或服务账户对项目内资源的访问权限。这使得管理员可以更精细地控制谁可以部署哪些应用到哪些集群。
3. argo-workflows
3.1 安装
|
|
|
|
3.2 相关 CRD
|
|
- clusterworkflowtemplates.argoproj.io
ClusterWorkflowTemplate 是一种资源,它允许用户定义工作流模板,这些模板可以在集群范围内共享和重用。它类似于 WorkflowTemplate,但具有更高的权限级别,可以在任何命名空间中使用。
- cronworkflows.argoproj.io
CronWorkflow 资源用于定义按计划执行的工作流。它类似于 Kubernetes 中的 CronJob,允许用户设置定时任务,以便在指定的时间间隔内自动启动工作流。
- workflowartifactgctasks.argoproj.io
WorkflowArtifactGCTask 是一种用于清理工作流执行后遗留的资源的任务。这有助于维护集群的整洁,避免资源泄露。
- workfloweventbindings.argoproj.io
WorkflowEventBinding 资源用于定义工作流事件的绑定,它允许用户根据 Kubernetes 事件(如 Pod 完成、ConfigMap 更新等)触发工作流的执行。
- workflows.argoproj.io
Workflow 是 Argo Workflows 中的核心资源类型,它定义了一个由多个步骤(任务)组成的工作流。每个步骤可以是一个容器、一个脚本或者其他类型的操作,它们按顺序或并行执行。
- workflowtaskresults.argoproj.io
WorkflowTaskResult 资源用于存储工作流任务的执行结果。这有助于在工作流中传递数据,或者在任务失败时进行调试。
- workflowtasksets.argoproj.io
WorkflowTasksSet 是一种资源,它允许用户定义一组工作流任务,这些任务可以作为模板在多个工作流中重用。
- workflowtemplates.argoproj.io
WorkflowTemplate 是一种资源,它定义了一个工作流模板,可以在特定命名空间内共享和重用。它类似于 ClusterWorkflowTemplate,但作用范围限制在单个命名空间内。
4. argo-events
4.1 安装
|
|
|
|
可选安装 validating webhook
|
|
4.2 相关 CRD
|
|
- eventbus.argoproj.io
EventBus 是 Argo Events 中的一个核心资源,它负责在事件源(EventSources)和传感器(Sensors)之间传输事件。EventBus 可以基于 NATS Streaming 或 Kafka 构建,它提供了一种机制来确保事件在集群内可靠地传递。EventBus 资源定义了事件传输的配置,包括使用的后端消息系统、认证策略、持久化设置等。
- eventsources.argoproj.io
EventSource 资源定义了如何从外部服务(如 Kafka、GitHub、Slack 等)消费事件。它指定了事件源的类型、连接信息、过滤条件等。当观察到匹配过滤条件的事件时,EventSource 会将这些事件写入到 EventBus。EventSource 可以是原生的(如基于 NATS Streaming 的 EventSource)或者是异构的(如连接到现有的 Kafka 集群)。
- sensors.argoproj.io
Sensor 资源定义了在 EventBus 上监听特定事件的逻辑,并在匹配事件时触发相应的响应。Sensor 运行在由 sensor-controller 管理的 Pod 中,它可以定义触发器(Triggers),这些触发器可以是 HTTP 请求、Kubernetes 对象操作、Slack 消息等。当 Sensor 观察到匹配的事件时,它会执行定义的操作,例如创建或更新 Kubernetes 资源。
5. Argo rollouts
5.1 安装
|
|
|
|
可选安装 dashboard
|
|
5.2 相关 CRD
|
|
- analysisruns.argoproj.io
AnalysisRun 资源用于定义和管理分析任务的执行。这些分析任务可以在部署过程中运行,以评估新版本的表现,例如通过比较新旧版本的指标。AnalysisRun 可以与 Experiment 资源关联,以在实验过程中执行分析。
- analysistemplates.argoproj.io
AnalysisTemplate 是一个模板资源,它定义了分析任务的配置,但不立即执行。AnalysisTemplate 可以被 AnalysisRun 引用,以便在需要时创建和执行分析任务。
- clusteranalysistemplates.argoproj.io
ClusterAnalysisTemplate 类似于 AnalysisTemplate,但它具有集群范围的作用域。这意味着它可以在多个命名空间中被引用和使用,而不仅仅是在定义它的命名空间中。
- experiments.argoproj.io
Experiment 资源用于定义和管理实验,这些实验通常用于比较新旧版本的应用性能。Experiment 可以包含多个 AnalysisRun,以便在实验过程中执行多个分析任务。实验的结果可以用来决定是否将新版本推广到生产环境。
- rollouts.argoproj.io
Rollout 是 Argo Rollouts 中的核心资源类型,它用于定义和管理应用的渐进式部署。Rollout 允许用户逐步将新版本的应用推送到生产环境,同时监控部署过程中的指标,以确保新版本的稳定性。Rollout 支持多种策略,如金丝雀发布、蓝绿部署等。