19.云原生CICD之ArgoCD入门

云原生专栏大纲

文章目录

  • ArgoCD
  • ArgoCD 简介
    • GitOps介绍
    • Argo CD 的工作流程
    • argocd和jinkens对比
    • kustomize介绍
    • ArgoCD和kustomize关系
  • 安装argocd
  • argocd控制台介绍
    • 首页
    • 应用创建表单
      • SYNC OPTIONS(同步选项)
      • SYNC POLICY(同步策略)
    • 应用功能面板
      • 历史记录和回滚
      • 应用详情
        • SUMMARY(概要)
        • PARAMETERS(参数)
          • PARAMETERS在k8s中的表现形式
  • argocd应用使用实战

ArgoCD

ArgoCD 简介

总结ArgoCD是基于 kubernetes 的声明式 Gitops 持续部署工具

  1. 应用定义,配置和环境变量管理等等,都是声明式基于云原生的。
  2. 所有声明清单都存储在代码仓库中,受版本管理
  3. 应用发布和生命周期管理都是自动化的,可审计的。

Argo CD 是一个基于 GitOps 的持续交付工具,用于管理和部署应用程序到 Kubernetes 集群。它通过将声明性配置文件与实际状态进行比较,并自动调整实际状态以保持一致,实现了基于 GitOps 的持续交付和应用程序管理。
以下是 Argo CD 的一些主要特点和功能:

  1. 声明性配置: Argo CD 使用 Kubernetes 的声明性配置文件(如 YAML 文件)来描述应用程序的期望状态。这些配置文件存储在 Git 存储库中,使其易于版本控制和跟踪。一般使用Kustomize。
  2. 自动同步: Argo CD 监听 Git 存储库中的配置文件变更,并自动将应用程序的实际状态与配置文件进行比较和同步。这样,您只需将更改推送到 Git 存储库,Argo CD 将负责将应用程序部署到集群中。
  3. 多环境支持: Argo CD 支持多个环境(例如开发、测试、生产)的管理。您可以使用相同的配置文件和工作流程来部署和管理不同环境中的应用程序。
  4. 应用程序生命周期管理: Argo CD 提供应用程序的全生命周期管理,包括部署、更新、回滚和删除。它可以跟踪应用程序的版本历史,并支持回滚到先前的版本。
  5. 同步策略和选项: Argo CD 允许您配置同步策略和选项,以定义应用程序的自动同步行为。您可以控制何时触发同步、是否进行修剪操作以及其他同步行为的细节。
  6. 应用程序比较: Argo CD 使用 Kubernetes API 与集群进行通信,获取当前部署的应用程序的实际状态。然后,它将实际状态与声明性配置文件中定义的期望状态进行比较。
  7. 状态同步: 如果实际状态与期望状态不一致,Argo CD 将自动采取必要的操作来调整实际状态,使其与期望状态保持一致。这可能涉及创建、更新或删除 Kubernetes 资源。
  8. 应用程序健康检查: Argo CD 监测应用程序的健康状态,以确保部署成功。它可以通过检查容器的就绪状态、服务的可用性和自定义的健康检查指标来确定应用程序是否正常运行。
  9. 持续交付和自动化: 通过与 CI/CD 工具集成,Argo CD 可以实现持续交付流程。它可以自动部署新的代码版本,通过自动化流水线进行构建、测试和部署,并在部署完成后更新应用程序的状态。
  10. 可视化界面和监控: Argo CD 提供了一个直观的 Web 界面,用于查看和管理应用程序的状态。它显示了应用程序的拓扑图、部署历史、健康状态和同步状态。此外,Argo CD 还提供了监控和警报功能,以帮助用户监测应用程序的性能和可用性。

Argo CD 是一个强大的工具,可以简化和自动化 Kubernetes 应用程序的部署和管理过程。它遵循 GitOps 的最佳实践,提供了可靠、可扩展和可观察的持续交付解决方案。无论是单个应用程序还是大规模的多环境部署,Argo CD 都可以帮助您实现一致性和可控性。

GitOps介绍

GitOps 是一种基于 Git 的运维方法论,它将应用程序的配置和部署状态存储在版本控制系统中,通常是 Git。通过使用 GitOps,团队可以实现基础设施即代码(Infrastructure as Code)和持续交付(Continuous Delivery),以实现更高效、可靠和可重复的应用程序部署和管理。

GitOps 的核心思想是将应用程序的期望状态(Desired State)以声明性的方式定义并存储在版本控制系统中。这包括应用程序的配置、部署规范、服务拓扑和环境变量等。团队成员可以通过提交代码到版本控制系统来更新应用程序的期望状态。

GitOps 的工作流程如下:

  1. 应用程序的期望状态以声明性的方式定义在版本控制系统中,例如 Git 存储库。
  2. 运维工具(例如 Argo CD)会监测版本控制系统中的变更,并将期望状态与实际状态进行比较。
  3. 如果实际状态与期望状态不一致,运维工具会自动采取必要的操作来调整实际状态,使其与期望状态保持一致。
  4. 运维工具会定期轮询版本控制系统,以确保实际状态与期望状态保持同步。

通过使用 GitOps,团队可以实现以下优势:

  1. 基础设施即代码:通过将应用程序的配置和部署规范存储在版本控制系统中,团队可以将基础设施视为代码,并应用软件开发中的最佳实践,例如版本控制、代码审查和自动化测试。
  2. 可重复性和可审计性:由于应用程序的期望状态存储在版本控制系统中,团队可以轻松地重现和审计每个部署的过程,确保一致性和可靠性。
  3. 自动化和持续交付:通过自动化工具监测版本控制系统并自动调整实际状态,团队可以实现持续交付,并快速、可靠地部署应用程序。
  4. 多环境管理:GitOps 支持多环境部署,团队可以轻松地在不同的环境中部署和管理应用程序,例如开发、测试和生产环境。

总而言之,GitOps 提供了一种强大的方式来管理和部署应用程序,通过将应用程序的期望状态存储在版本控制系统中,并通过自动化工具实现状态的自动调整,使团队能够实现持续交付、可靠性和可审计性。

Argo CD 的工作流程

image.png
Argo CD 的工作流程如下:

  1. 创建应用程序: 用户通过 Argo CD 的命令行界面或 Web 界面创建应用程序。在创建应用程序时,用户需要指定应用程序的名称、Git 存储库的 URL、分支或标签以及路径等信息。
  2. GitOps 同步: Argo CD 定期轮询配置的 Git 存储库,检测应用程序配置文件的变更。一旦发现变更,它会触发同步过程。
  3. 应用程序同步: Argo CD 从 Git 存储库中获取应用程序的声明性配置文件(例如 YAML 文件),并将其与当前的实际状态进行比较。
  4. 状态比较: Argo CD 使用 Kubernetes API 与集群进行通信,获取当前部署的应用程序的实际状态。然后,它将实际状态与声明性配置文件中定义的期望状态进行比较。
  5. 状态同步: 如果实际状态与期望状态不一致,Argo CD 将自动采取必要的操作来调整实际状态,使其与期望状态保持一致。这可能涉及创建、更新或删除 Kubernetes 资源。
  6. 应用程序健康检查: Argo CD 监测应用程序的健康状态,以确保部署成功。它可以通过检查容器的就绪状态、服务的可用性和自定义的健康检查指标来确定应用程序是否正常运行。
  7. 持续同步: Argo CD 会定期轮询 Git 存储库,以确保应用程序的状态与声明性配置文件保持同步。如果发现配置文件有更新,它将触发新一轮的同步过程,以将实际状态调整为期望状态。
  8. 可视化界面和监控: Argo CD 提供了一个直观的 Web 界面,用于查看和管理应用程序的状态。用户可以在界面上查看应用程序的拓扑图、部署历史、健康状态和同步状态。此外,Argo CD 还提供了监控和警报功能,以帮助用户监测应用程序的性能和可用性。

通过以上工作流程,Argo CD 实现了基于 GitOps 的持续交付和应用程序管理。它简化了应用程序的部署和更新过程,并提供了可视化界面和监控功能,使用户能够轻松地管理和监控 Kubernetes 环境中的应用程序。

argocd和jinkens对比

下面是对 Argo CD 和 Jenkins 进行比较的扩展表格:

特点Argo CDJenkins
功能定位应用程序部署和持续交付自动化构建、测试和部署
架构和工作原理基于 Kubernetes 架构,使用 GitOps 方法独立的自动化服务器,可在不同操作系统上运行
CI/CD 功能应用程序版本控制、回滚、自动化部署和健康检查广泛的构建、测试和部署功能
社区和生态系统活跃的社区,与其他云原生工具有良好的集成庞大的用户社区和丰富的插件生态系统
可扩展性支持多集群部署,可与其他工具和平台集成丰富的插件生态系统,可定制和扩展功能
可视化界面提供直观的 Web 界面和应用程序拓扑图提供 Web 界面和流水线可视化编辑器
配置管理使用声明性配置文件进行应用程序管理支持流水线脚本和可视化编辑器进行配置
持续交付流程基于 GitOps 方法实现自动化部署和更新可以定义复杂的流水线来处理构建和部署流程
可观测性提供应用程序状态监控和事件通知支持构建和部署日志记录和报告
安全性支持 RBAC 权限控制和敏感数据管理提供安全性插件和功能来保护构建和部署过程

Argo CD 和 Jenkins 是两个在持续集成和持续交付 (CI/CD) 领域常用的工具,它们有一些共同的目标,但在功能和使用方式上有一些区别。下面是对 Argo CD 和 Jenkins 进行对比的一些关键点:

  1. 功能定位:
    • Argo CD:Argo CD 是一个专注于应用程序部署和持续交付的工具,它使用 GitOps 方法来自动化应用程序的部署和更新。它主要关注于将应用程序与 Git 存储库中的声明性配置文件进行同步,并确保应用程序始终处于所需的状态。
    • Jenkins:Jenkins 是一个功能强大的自动化服务器,它提供了广泛的插件生态系统,用于构建、测试和部署软件。Jenkins 可以处理复杂的构建流程、集成测试和部署任务,并支持多种编程语言和工具。
  2. 架构和工作原理:
    • Argo CD:Argo CD 基于 Kubernetes 架构,通过自定义资源 (Custom Resource) 和控制器来管理应用程序的部署和更新。它使用 Git 存储库中的声明性配置文件来定义应用程序的期望状态,并通过与 Kubernetes API 交互来实现状态的同步。
    • Jenkins:Jenkins 是一个独立的自动化服务器,它可以在不同的操作系统上运行。Jenkins 使用插件来扩展其功能,并提供了一个 Web 界面和流水线脚本 (Pipeline Script) 来定义和执行构建和部署流程。
  3. CI/CD 功能:
    • Argo CD:Argo CD 提供了应用程序的持续交付功能,它可以自动检测 Git 存储库中的变更,并将应用程序部署到 Kubernetes 集群中。它支持应用程序的版本控制、回滚、自动化部署和健康检查等功能。
    • Jenkins:Jenkins 是一个通用的 CI/CD 工具,它提供了广泛的插件来支持不同的构建、测试和部署场景。Jenkins 可以根据代码的提交、定时触发或其他触发条件来执行构建和部署任务,并支持复杂的流水线定义和集成测试。
  4. 社区和生态系统:
    • Argo CD:Argo CD 是一个相对较新的项目,但已经得到了广泛的关注和采用。它有一个活跃的社区,并且与其他云原生工具和项目(如 Kubernetes、Helm 等)有良好的集成。
    • Jenkins:Jenkins 是一个成熟的项目,拥有庞大的用户社区和丰富的插件生态系统。它已经被广泛应用于各种软件开发和交付流程中,并有大量的文档和教程可供参考。

综上所述,Argo CD 和 Jenkins 在功能和使用方式上有一些区别。Argo CD 更专注于应用程序的部署和持续交付,使用 GitOps 方法来实现自动化。Jenkins 则是一个通用的自动化服务器,提供了广泛的插件和流水线功能,适用于各种构建、测试和部署场景。选择使用哪个工具取决于具体的需求和使用情景。

kustomize介绍

Kustomize 是一个用于 Kubernetes 应用程序配置管理的开源工具。它允许您对 Kubernetes 配置进行自定义和重用,以便根据不同的环境、部署目标或团队需求生成不同的配置。

以下是 Kustomize 的一些主要特点和功能:

  1. 声明式配置: Kustomize 使用声明性配置文件来描述应用程序的期望状态。您可以定义资源对象(如部署、服务、配置映射等)以及它们的属性和关联关系,而无需编写复杂的模板。
  2. 配置重用: Kustomize 提供了一种配置重用机制,称为“基础”。您可以定义一组通用的基础配置,并在不同的环境或部署目标中引用它们。这样,您可以避免重复编写相似的配置,并轻松管理和更新共享的配置片段。
  3. 覆盖和合并: Kustomize 允许您使用覆盖和合并的方式来修改基础配置。您可以定义“覆盖”文件,其中包含对基础配置的修改,以满足特定环境或需求。Kustomize 将自动合并基础配置和覆盖文件,生成最终的配置。
  4. 资源生成: Kustomize 提供了一些资源生成选项,用于自动生成一些常见的资源配置,如命名空间、标签选择器和服务账户等。这样,您可以简化配置的编写,并确保生成的配置符合最佳实践和约定。
  5. 可插拔: Kustomize 是一个可插拔的工具,可以与其他工具和流程集成。它可以与持续集成/持续交付 (CI/CD) 系统、GitOps 工具和其他 Kubernetes 工具链中的组件进行配合使用。

Kustomize 的设计理念是提供一种简单而灵活的方式来管理 Kubernetes 应用程序的配置。它强调声明性配置和可重用性,使得配置管理变得更加可维护和可扩展。无论是单个应用程序还是复杂的多环境部署,Kustomize 都可以帮助您轻松管理和定制 Kubernetes 配置。

ArgoCD和kustomize关系

Argo CD 和 Kustomize 是两个独立但可以互补的工具,它们在 Kubernetes 应用程序的部署和管理过程中可以一起使用。

在实际应用中,您可以使用 Kustomize 来管理和定制应用程序的配置,将其组织为可重用的基础配置和环境特定的覆盖文件。然后,您可以将这些配置文件存储在 Git 存储库中,并使用 Argo CD 来监视和部署这些配置文件。Argo CD 可以与 Kustomize 集成,自动识别和应用 Kustomize 配置,以确保应用程序的部署和同步符合预期。

因此,Argo CD 和 Kustomize 可以一起使用,以实现基于 GitOps 的持续交付和灵活的配置管理。您可以使用 Kustomize 来生成和管理应用程序的配置,然后使用 Argo CD 来自动化部署和管理这些配置。这种组合可以提供更高效、可重复和可控的应用程序交付和配置管理流程。

安装argocd

kubekey | k9s
介绍两种安装方式,方式1:在kubesphere3.3中开启devops组件也会安装argocd;方式2:在k8s中部署如下:

  1. 部署argocd
# kubectl create namespace argocd
# kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install .yaml
  1. 暴露argocd控制台

image.png

  1. argocd控制台admin账号密码获取
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
  1. 登录argocd控制验证部署

image.png

argocd控制台介绍

首页

首页展示引用列表,以及左上方有应用创建的入口
image.png

应用创建表单

在 Argo CD 中创建应用时,您需要提供一些配置信息来定义应用的源代码、目标环境和部署方式。这些配置信息在 Argo CD 中分为四个主要部分:General(常规)、Source(源代码)、Destination(目标环境)和Directory(目录)。

  1. General(常规): 在常规配置中,您需要提供应用的名称、命名空间和项目名称。应用名称是在 Argo CD 中唯一标识应用的名称,命名空间是应用将被部署到的 Kubernetes 命名空间,项目名称用于将应用组织到逻辑项目中。
  2. Source(源代码): 在源代码配置中,您需要指定应用的源代码存储库和路径。您可以选择使用 Git 存储库或 Helm 存储库作为源代码存储库。对于 Git 存储库,您需要提供存储库 URL、分支或标签以及路径。对于 Helm 存储库,您需要提供存储库名称、存储库 URL 和 Helm 配置文件路径。
  3. Destination(目标环境): 在目标环境配置中,您需要指定应用程序将要部署到的 Kubernetes 环境。您可以选择将应用程序部署到单个 Kubernetes 集群或多个集群中。对于单个集群,您需要提供集群的名称和命名空间。对于多个集群,您需要提供一个目标服务器定义(Target Server Definition),其中包含每个集群的名称、服务器 URL、证书和其他连接详细信息。
  4. Directory(目录): 在目录配置中,您可以选择性地指定应用程序的根目录和配置文件路径。如果您的应用程序是使用 Kustomize 进行管理的,您可以指定 Kustomize 根目录,并选择要应用的 Kustomize overlays。如果您的应用程序使用其他配置文件,请指定配置文件的路径。

通过提供这些配置信息,您可以在 Argo CD 中创建一个应用程序,并将其与源代码存储库关联起来,指定目标环境以及配置文件的位置。Argo CD 将使用这些信息来自动部署和同步应用程序的状态,确保它与配置文件的期望状态保持一致。

image.png
image.png
image.png

SYNC OPTIONS(同步选项)

image.png
在 Argo CD 的 SYNC OPTIONS 中,还有一些其他选项可以用于更精细地控制应用程序的同步行为。以下是这些选项的介绍:

  1. SKIP SCHEMA VALIDATION (跳过模式验证): 默认情况下,Argo CD 会对应用程序的声明性配置文件进行模式验证,以确保其符合 Kubernetes 资源的模式。但有时可能需要跳过模式验证,特别是当使用自定义的资源模式时。通过设置 SKIP SCHEMA VALIDATION 为 true,可以跳过模式验证。
  2. AUTO-CREATE NAMESPACE (自动创建命名空间): 如果应用程序的声明性配置文件中指定了不存在的命名空间,Argo CD 默认会拒绝同步操作。但有时可能希望自动创建不存在的命名空间。通过设置 AUTO-CREATE NAMESPACE 为 true,可以自动创建命名空间。
  3. PRUNE LAST (最后修剪): 在同步操作中,Argo CD 默认会先创建或更新资源,然后再删除不再需要的资源。但有时可能希望先删除不再需要的资源,然后再创建或更新资源。通过设置 PRUNE LAST 为 true,可以将删除操作放在同步操作的最后。
  4. APPLY OUT OF SYNC ONLY (仅应用不同步的资源): 默认情况下,Argo CD 会应用所有资源的变更,无论它们是否与声明性配置文件中的定义一致。但有时可能只希望应用与声明性配置文件不一致的资源变更。通过设置 APPLY OUT OF SYNC ONLY 为 true,可以仅应用不同步的资源变更。
  5. RESPECT IGNORE DIFFERENCES (遵守忽略的差异): 在同步操作中,Argo CD 默认会忽略声明性配置文件中标记为忽略的差异。但有时可能希望遵守忽略的差异,即使它们与实际状态不一致。通过设置 RESPECT IGNORE DIFFERENCES 为 true,可以遵守忽略的差异。

这些 SYNC OPTIONS 可以根据具体需求进行配置,以实现更精确的同步行为。通过灵活使用这些选项,可以满足特定场景下的同步需求,并确保应用程序的状态与预期保持一致。

SYNC POLICY(同步策略)

image.png
在 Argo CD 中,SYNC POLICY(同步策略)用于定义应用程序的自动同步行为。它允许您配置何时以及如何触发应用程序的同步操作。以下是 Argo CD 中的一些常见 SYNC POLICY 选项:

  1. Automated Sync (自动同步): 这是 Argo CD 的默认同步策略。当应用程序的声明性配置文件发生变化时,自动触发同步操作。这意味着 Argo CD 会自动检测并应用配置文件的更改,以确保应用程序与声明性配置文件保持一致。
  2. Manual Sync (手动同步): 在手动同步策略下,应用程序的同步操作不会自动触发。您需要手动执行同步操作,以将应用程序的实际状态与声明性配置文件同步。这种策略适用于需要手动控制同步时机的情况。
  3. Prune (修剪): 在修剪策略下,Argo CD 会自动删除不再需要的资源。当声明性配置文件中不再包含某个资源定义时,Argo CD 会自动将其删除。这可以确保应用程序的实际状态与声明性配置文件保持一致,避免遗留的无效资源。
  4. Sync Wave (同步波): 同步波是一种分批同步的策略,用于控制应用程序的同步速率。通过将应用程序分为多个同步波,可以逐步同步应用程序的不同部分,以减轻集群的负载和避免突发的大规模同步操作。
  5. Sync Options (同步选项): SYNC POLICY 还可以与 SYNC OPTIONS 结合使用,以进一步细化同步行为。SYNC OPTIONS 允许您配置诸如跳过模式验证、自动创建命名空间、最后修剪、仅应用不同步的资源等选项,以满足特定的同步需求。

通过合理配置 SYNC POLICY,您可以根据应用程序的特性和需求,定义适合的同步策略,确保应用程序在 Kubernetes 环境中始终保持最新和一致的状态。

应用功能面板

功能如下,可手动同步、删除、回滚等。
image.png

历史记录和回滚

点击历史记录和回滚,可查看部署历史记录及回滚到历史版本
image.png

应用详情

在 Argo CD 的应用详情中,您会看到以下几个部分的信息:SUMMARY(概要)、PARAMETERS(参数)、MANIFEST(清单)和EVENTS(事件)。下面是对每个部分的介绍:

  1. SUMMARY(概要): SUMMARY 部分提供了有关应用的基本信息的总览。它包括应用的名称、命名空间、项目名称、源代码存储库和目标环境等。还显示了应用的当前状态和最新的同步状态,以及最后一次同步的时间戳。
  2. PARAMETERS(参数): PARAMETERS 部分列出了应用的参数列表。参数是在部署过程中用于配置应用的可配置项。在 PARAMETERS 部分,您可以查看每个参数的名称、值和描述。如果允许,您可以在此处修改参数的值,以便在下一次同步时应用新的配置。
  3. MANIFEST(清单): MANIFEST 部分显示了应用的配置文件清单。它列出了应用的所有配置文件,包括 YAML 或 JSON 文件。您可以查看每个配置文件的内容,以了解应用的详细配置信息。通过 MANIFEST 部分,您可以检查应用的配置文件是否正确,并对需要进行修改的配置文件进行编辑。
  4. EVENTS(事件): EVENTS 部分显示了与应用相关的事件日志。这些事件包括同步事件、资源创建和更新事件等。您可以查看每个事件的详细信息,包括事件类型、资源名称、时间戳和事件描述。EVENTS 部分提供了一个历史记录,帮助您了解应用的状态变化和操作记录。
SUMMARY(概要)

image.png

PARAMETERS(参数)

在 Argo CD 的应用参数(PARAMETERS)部分,有几个参数:VERSION、NAME PREFIX 和 NAME SUFFIX。下面是对每个参数的介绍:

  1. VERSION: VERSION 参数用于指定应用的版本。它可以是一个字符串或数字,用于标识应用的不同版本。通过在应用的配置文件中使用 VERSION 参数,您可以轻松地管理和跟踪不同版本的应用。
  2. NAME PREFIX: NAME PREFIX 参数用于为应用的资源名称添加前缀。资源名称是 Kubernetes 中的对象标识符,用于唯一标识每个资源。通过使用 NAME PREFIX 参数,您可以为应用的资源名称添加一个统一的前缀,以便更好地组织和识别应用的资源。
  3. NAME SUFFIX: NAME SUFFIX 参数用于为应用的资源名称添加后缀。与 NAME PREFIX 类似,NAME SUFFIX 允许您为应用的资源名称添加一个统一的后缀,以便更好地组织和识别应用的资源。通过使用 NAME SUFFIX 参数,您可以在资源名称的末尾添加一个标识符或描述性的后缀。

这些参数提供了一种在部署应用时进行自定义配置的方式。通过设置 VERSION 参数,您可以管理不同版本的应用。而使用 NAME PREFIX 和 NAME SUFFIX 参数,可以为应用的资源名称添加统一的前缀和后缀,以便更好地组织和识别资源。这些参数可以根据您的需求进行自定义,并根据应用的特定要求进行配置。
image.png

PARAMETERS在k8s中的表现形式

在 Kubernetes 资源中,VERSION、NAME PREFIX 和 NAME SUFFIX 这些参数并不是 Kubernetes 原生的字段,它们是 Argo CD 中的应用参数,用于在创建和管理应用时进行自定义配置。这些参数在 Argo CD 中被解析并应用于创建和管理 Kubernetes 资源的过程中。
下面是一个示例,展示了在 Argo CD 中如何使用这些参数来创建 Kubernetes 资源:
假设有一个应用名为 “my-app”,在 Argo CD 中的应用配置文件(例如 YAML)中定义了以下参数:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
spec:
  source:
    repoURL: <repo_url>
    path: <path_to_app_manifests>
    targetRevision: <git_commit_sha>
  destination:
    server: <kubernetes_cluster_url>
    namespace: <target_namespace>
  project: <project_name>
  syncPolicy:
    automated:
      prune: true
  parameters:
    - name: VERSION
      value: v1.0
    - name: NAME_PREFIX
      value: prod-
    - name: NAME_SUFFIX
      value: -app

在上述示例中,我们定义了三个参数:VERSION、NAME_PREFIX 和 NAME_SUFFIX。这些参数通过 parameters 字段指定,并指定了相应的值。

在 Argo CD 同步该应用并创建相关的 Kubernetes 资源时,这些参数将会被解析并应用于资源的创建过程中。

假设应用中有一个 Deployment 资源,原始的资源名称可能是 “my-app-deployment”。根据上述示例中的参数配置,资源的名称将会是 “prod-my-app-deployment-app”,其中 “prod-” 是 NAME_PREFIX 的值,“-app” 是 NAME_SUFFIX 的值。

类似地,VERSION 参数可以在应用的配置文件中使用,以标识不同的应用版本,并根据需要进行自定义配置。

需要注意的是,这些参数的具体表现形式和如何应用于 Kubernetes 资源的创建过程取决于您在 Argo CD 中的配置和模板定义。示例中的表达方式仅用于说明目的,实际使用时可能会根据具体情况有所不同。

argocd应用使用实战

参考官网文档第6小节 ,使用 GitOps 实现应用持续部署

  1. 将argocd测试项目迁移至gitlab,项目目录介绍如下:
ApplicationDescription
guestbook作为普通 YAML 的 hello word 留言簿应用程序
ksonnet-guestbook作为 ksonnet 应用
helm-guestbook作为 Helm 图表的留言板应用
jsonnet-guestbook作为原始 jsonnet 的留言板应用
jsonnet-guestbook-tla作为原始 jsonnet,支持顶级参数
kustomize-guestbookKustomize 2应用程序
pre-post-sync演示 Argo CD PreSync 和 PostSync 钩子
sync-waves演示带有钩子的 Argo CD 同步
helm-dependency演示如何从上游存储库自定义 OTS(现成的)helm 图表
sock-shop微服务演示应用 (https://microservices-demo.github.io))
plugins演示配置管理插件用法的应用

修改argocd-example-apps\kustomize-guestbook\guestbook-ui-deployment.yaml下镜像,使用《6.云原生之DevOps和CICD》章节CICD制作上传到harbor的镜像。

  1. 创建应用

image.png

  1. GENERAL常规配置

image.png

  1. SOURCE配置

image.png

  1. DESTINATION目的地配置

image.png

  1. 点击CREATE创建应用

image.pngimage.png

  1. 点击进入详情面板,手动同步

image.png

  1. 查看同步情况

image.png

  1. 登录kubesphere查看部署情况,验证完成

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/337866.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

以超市数据微案例-fineBI可视化分析

一、入门案例&#xff1a; 2.分析思路&#xff1a; 数据清晰界面中添加毛利额计算 **所以在新增步骤之后&#xff0c;必须点击保存并更新&#xff0c;否则可视化界面中无法使用最新的数据 4、数据可视化分析 1&#xff09;销售额最高的十大商品种类 为1-8月超市数据&#xff…

代码随想录刷题题Day38

刷题的第三十八天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C Day38 任务 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组 1 最长递增子序列 300.最长递增子序列 …

基于springboot+vue考编论坛

摘要 近年来&#xff0c;随着互联网的迅猛发展&#xff0c;编程论坛成为程序员们交流学术、分享经验的重要平台之一。为了满足广大程序员的需求&#xff0c;本文基于Spring Boot和Vue框架&#xff0c;设计并实现了一个功能强大的编程论坛。首先&#xff0c;我们选择Spring Boot…

微软使其AI驱动的阅读导师免费

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Excel 根据日期按月汇总公式

Excel 根据日期按月汇总公式 数据透视表日期那一列右击&#xff0c;选择“组合”&#xff0c;步长选择“月” 参考 Excel 根据日期按月汇总公式Excel如何按着日期来做每月求和

怎么提升搜狗网站排名

在当今数字化时代&#xff0c;网站排名对于品牌、企业以及个人都至关重要。而对于许多网站来说&#xff0c;搜狗搜索引擎是一个重要的流量来源。为了在搜狗上取得更好的排名&#xff0c;不仅需要优化网站内容&#xff0c;还需要巧妙运用一些工具和技巧。在本文中&#xff0c;我…

MySQL---单表查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

人工智能时代的十大核心技术:重塑未来的无限可能 - 引言

在人工智能&#xff08;AI&#xff09;的浪潮中&#xff0c;无数技术如雨后春笋般涌现&#xff0c;引领着人类社会迈向一个崭新的时代。这些技术不仅在理论上具有突破性&#xff0c;更在实际应用中展现出巨大的潜力和价值。 本文将围绕人工智能时代的十大核心技术展开&#xff…

《Linux高性能服务器编程》笔记05

Linux高性能服务器编程 本文是读书笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考 Linux高性能服务器编程源码: https://github.com/raichen/LinuxServerCodes 豆瓣: Linux高性能服务器编程 文章目录 Linux高性能服务器编程第12章 高性能I/O框架库Libevent12.1 I/…

基于BERT对中文邮件内容分类

用BERT做中文邮件内容分类 项目背景与意义项目思路数据集介绍环境配置数据加载与预处理自定义数据集模型训练加载BERT预训练模型开始训练 预测效果 项目背景与意义 本文是《用BERT做中文邮件内容分类》系列的第二篇&#xff0c;该系列项目持续更新中。系列的起源是《使用Paddl…

采集B站up主视频信息

一、网页信息&#xff08;示例网址&#xff1a;https://space.bilibili.com/3493110839511225/video&#xff09; 二、查看响应数据 三、查看数据包内容 四、相关代码&#xff08;代码内容未进行翻页爬取&#xff09; # Time: 2024/1/19 16:42 # Author: 马龙强 # File: 采集B…

【Linux】第三十二站:命名管道

文章目录 一、命名管道介绍二、编码1.mkfifo2.unlink3.一个简单的例子4.修改 一、命名管道介绍 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。 如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作…

<软考高项备考>《论文专题 - 78 风险管理(10)》

10 论文-历年真题解析 10.1 2005年上半年真题 请围绕“项目的风险管理”论题&#xff0c;分别从以下三个方面进行论述&#xff1a; 1&#xff0e;概要叙述你参与管理过的信息系统项目&#xff08;项目的背景、发起单位、目的、项目周期、交付的产品等&#xff09;&#xff0c…

【排序算法】五、冒泡排序(C/C++)

「前言」文章内容是排序算法之冒泡排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 冒泡排序1.1 原理1.2 代码实现&#xff08;C/C&#xff09;1.3 特性总结 冒泡排序 1.1…

每日一题——1295.统计位数为偶数的数字

方法一 个人方法&#xff1a; 想知道整数型数字有多少位&#xff0c;可以直接把数字转字符&#xff0c;看字符的长度就是数字的位数 var findNumbers function(nums) {let count0for(let num of nums){let strnumif(str.length%20) count}return count }; 消耗时间和内存情况…

uni-app使用HBuilderX打包Web项目

非常简单&#xff0c;就是容易忘记 一、找到manifest.json配置Web配置 二、源码视图配置 "h5" : {"template" : "","domain" : "xxx.xx.xx.xxx","publicPath" : "./","devServer" : {&quo…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(一):基础知识考察

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第一部分:基础知识考察,子节点表示追问或同级提问 基本概念 包括一些核心问…

什么是葡萄酒“质量三级标准”?

在葡萄酒的世界里有一个笼统的级别分为&#xff1a;入门、精品和顶级。那么&#xff0c;对应这三个级别的标准都是什么呢&#xff1f; 入门级别的标准&#xff1a;入门级别的酒首先喝起来新鲜且顺口。新鲜很容易理解&#xff0c;就是没有腐熟水果的味道&#xff0c;也就是“罐…

8.3最大自序和(LC53-M)

算法&#xff1a; 如果 -2 1 在一起&#xff0c;计算起点的时候&#xff0c;一定是从 1 开始计算&#xff0c;因为负数只会拉低总和&#xff0c;这就是贪心贪的地方&#xff01; &#xff08;-21&#xff0c;起点为负数&#xff0c;加上后面的数&#xff0c;只会让和变小&…

《WebKit 技术内幕》之六(3): CSS解释器和样式布局

3 WebKit布局 3.1 基础 当WebKit创建RenderObject对象之后&#xff0c;每个对象是不知道自己的位置、大小等信息的&#xff0c;WebKit根据框模型来计算它们的位置、大小等信息的过程称为布局计算&#xff08;或者称为排版&#xff09;。 图描述了这一过程中涉及的主要WebKit…