19.云原生CICD之ArgoCD入门

news2024/11/24 19:39:00

云原生专栏大纲

文章目录

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频异常检测论文笔记

看几篇中文的学习一下别人的思路 基于全局-局部自注意力网络的视频异常检测方法主要贡献&#xff1a;网络结构注意力模块结构&#xff1a; 融合自注意力和自编码器的视频异常检测主要贡献&#xff1a;网络结构Transformer模块动态图 融合门控自注意力机制的生成对抗网络视频异常…

Kafka框架详解

Kafka 1、Kafka介绍 ​ Kafka是最初由linkedin公司开发的&#xff0c;使用scala语言编写&#xff0c;kafka是一个分布式&#xff0c;分区的&#xff0c;多副本的&#xff0c;多订阅者的消息队列系统。 2、Kafka相比其他消息队列的优势 ​ 常见的消息队列&#xff1a;Rabbit…

【Docker篇】详细讲解容器相关命令

&#x1f38a;专栏【Docker】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【如愿】 &#x1f384;欢迎并且感谢大家指出小吉的问题&#x1f970; 文章目录 &#x1f6f8;容器&#x1f339;相关命令&#x1f354;案例⭐创建并运…

大模型微调实战笔记

大模型三要素 1.算法&#xff1a;模型结构&#xff0c;训练方法 2.数据&#xff1a;数据和模型效果之间的关系&#xff0c;token分词方法 3.算力&#xff1a;英伟达GPU&#xff0c;模型量化 基于大模型对话的系统架构 基于Lora的模型训练最好用&#xff0c;成本低好上手 提…

Mysql流程控制函数

1概述 Mysql中的流程控制函数非常重要&#xff0c;可以根据不同的条件&#xff0c;执行不同的流程转换&#xff0c;可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。 1.1 IF函数 SELECT IF(1 > 0, 正确, 错误);1.2 IFNULL…

ROS第 12 课 Launch 启动文件的使用方法

文章目录 第 12 课 Launch 启动文件的使用方法1.本节前言2.Lanuch 文件基本语法2.2 参数设置2.3 重映射嵌套 3.实操练习 第 12 课 Launch 启动文件的使用方法 1.本节前言 我们在前面的教程里面通过命令行来尝试运行新的节点。但随着创建越来越复杂的机器人系统中&#xff0c;打…

idea运行卡顿优化方案

文章目录 前言一、调整配置1. idea.properties2. idea.vmoptions3.heap size4.Plugins5.Inspections 总结 前言 本人电脑16G内存&#xff0c;处理器i7 10代&#xff0c;磁盘空间也够用&#xff0c;整体配置够用&#xff0c;但运行idea会很卡&#xff0c;记录优化过程&#xff…

【JavaEE】文件操作与IO

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

vue3+vite:封装Svg组件

前言 在项目开发过程中&#xff0c;以svg图片引入时&#xff0c;会遇到当hover态时图片颜色修改的场景&#xff0c;我们可能需要去引入另一张不同颜色的svg图片&#xff0c;或者用css方式修改&#xff0c;为了方便这种情况&#xff0c;需要封装svg组件来自定义宽高和颜色&…

IaC基础设施即代码:Terraform 进行 lifecycle 生命周期管理

目录 一、实验 1.环境 2.Terraform 创建网络资源 3.Terraform 进行 create_before_destroy&#xff08;销毁前创建新资源&#xff09; 4.Terraform 进行 prevent_destroy&#xff08;防止资源被销毁&#xff09; 5.Terraform 进行 ignore_changes&#xff08;忽略资源的差…

记录汇川:H5U与Factory IO测试15

主程序&#xff1a; 子程序&#xff1a; IO映射 子程序&#xff1a; 出料程序 子程序&#xff1a; 视觉判断 子程序&#xff1a; 自动程序 Factory IO配置&#xff1a; 实际动作如下&#xff1a; Factory IO测试15

【本科生机器学习】【北京航空航天大学】课题报告:支持向量机(Support Vector Machine, SVM)初步研究【上、原理部分】

说明&#xff1a; &#xff08;1&#xff09;、仅供个人学习使用&#xff1b; &#xff08;2&#xff09;、本科生学术水平有限&#xff0c;故不能保证全无科学性错误&#xff0c;本文仅作为该领域的学习参考。 一、课程总结 1、机器学习&#xff08;Machine Learning, ML&am…

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

Go使用记忆化搜索的套路【以20240121力扣每日一题为例】

题目 分析 这道题很明显记忆化搜索&#xff0c;用py很容易写出来 Python class Solution:def splitArray(self, nums: List[int], k: int) -> int:n len(nums)# 寻找分割子数组中和的最小的最大值s [0]for num in nums:s.append(s[-1] num)#print(s)cachedef dfs(cur,…

跟着pink老师前端入门教程-day07

去掉li前面的项目符号&#xff08;小圆点&#xff09; 语法&#xff1a;list-style: none; 十五、圆角边框 在CSS3中&#xff0c;新增了圆角边框样式&#xff0c;这样盒子就可以变成圆角 border-radius属性用于设置元素的外边框圆角 语法&#xff1a;border-radius:length…

1.11马原

同一性是事物存在和发展的前提&#xff0c;一方的发展以另一方的发展为条件 同一性使矛盾双方相互吸收有利于自身的因素&#xff0c;在相互作用中各自得到发展 是事物发展根本规律&#xff0c;唯物辩证法的实质和核心 揭示了事物普遍联系的根本内容和变化发展的内在动力 是贯…

Vue3 在 history 模式下通过 vite 打包部署白屏

Vue3 在 history 模式下通过 vite 打包部署后白屏; 起因 hash 模式 url 后面跟个 # 强迫症犯了改成了 history,就此一波拉锯战开始了 ... 期间 nigix 和 router 各种反复排查尝试最终一波三折后可算是成功了 ... Vue官方文档 具体配置可供参考如下: 先简要介绍下,当前项目打包…

SpringBoot整合Dubbo和Zookeeper分布式服务框架使用的入门项目实例

文章目录 SpringBoot整合Dubbo和Zookeeper分布式服务框架使用的入门项目实例Dubbo定义其核心部分包含: 工作原理为什么要用dubbo各个节点角色说明&#xff1a;调用关系说明&#xff1a; dubbo为什么需要和zookeeper结合使用&#xff0c;zookeeper在dubbo体系中起到什么作用&…

0基础开发EtherNet/IP:协议格式,JAVA、C#、C++处理

经过一阵倒腾&#xff0c;把CIP、Ethernet/ip协议搞到手 协议的概念和理论就不提及了&#xff0c;上网随便一搜索EtherNet/IP遍地都是。 直接将协议关键点列举出来吧。 更多协议资料 www.jngbus.com 通讯软件群 30806722 这里讲解的是TCP和UDP协议的格式&#xff0c;EtherN…

【标准IO】fseek函数、ftell函数、fflush函数、getline函数

目录 fseekftellrewindfflushgetline 橙色 当你在文件中写入了10个字符后&#xff0c;又想把这10个字符读出来&#xff0c;该怎么做呢&#xff1f;因为有文件操作符指针的存在&#xff0c;此时该指针已经指在了这10个字符末尾&#xff0c;所以需要把该指针重定向&#xff0c;这…