19.云原生CICD之ArgoCD入门CD过程实战

云原生专栏大纲

文章目录

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

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

argocd CD过程实战

参考官网文档第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应用程序,部署项目用到的k8s资源清单。和helm类似封装到了一起
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.mfbz.cn/a/344238.html

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

相关文章

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

亚信安慧AntDB:AntDB-M元数据锁之锁的获取(三)

5 锁的获取 5.1 锁的强弱 当线程已经持有的锁比新申请的锁更强时&#xff0c;认为已经持有了锁&#xff0c;无需再对申请锁类型加锁。锁的强弱指持有的锁与其他锁的不兼容集合大小&#xff0c;集合相同锁相同&#xff0c;集合更大锁更强&#xff0c;否则无强弱关系。通过锁的…

Find My手套|苹果Find My技术与手套结合,智能防丢,全球定位

手套是手部保暖或劳动保护用品&#xff0c;也有装饰用的。手套是个很特别的东西&#xff0c;当初它的产生并不是为了实用&#xff0c;只是到近代&#xff0c;它才成了寒冷地区保温必备之物&#xff0c;或是医疗防菌、工业防护用品。手套按照制作方法分为缝制、针织、浸胶等。如…

第二证券:股指预计维持蓄势震荡格局 关注通信设备、软件开发等板块

第二证券以为&#xff0c;沪指盘中下探近期新低后快速反弹&#xff0c;商场抛压力度逐步削弱&#xff0c;跟着北上资金逐步回流&#xff0c;资金抄底志愿回归。从周线等级看&#xff0c;指数回踩2020年3月份低位&#xff0c;做空力气有逐步削弱痕迹&#xff0c;短期将有望构成周…

Redis(发布订阅、事务、redis整合springboot、集成 Spring Cache)

目录 一.redis的发布订阅 1、什么 是发布和订阅 2、Redis的发布和订阅 3、发布订阅的代码实现 二.Redis事务 1.事务简介 1、在事务执行之前 如果监听的key的值有变化就不能执行 2、在事务执行之前 如果监听的key的值没有变化就能执行 3、Exec之前就出现错误 4、Exec之…

Kafka-服务端-副本机制

Kafka从0.8版本开始引入副本(Replica)的机制&#xff0c;其目的是为了增加Kafka集群的高可用性。 Kafka实现副本机制之后&#xff0c;每个分区可以有多个副本&#xff0c;并且会从其副本集合(Assigned Replica,AR)中选出一个副本作为Leader副本&#xff0c;所有的读写请求都由…

计算机网络-AAA原理概述

对于任何网络&#xff0c;用户管理都是最基本的安全管理要求之一&#xff0c;在华为设备管理中通过AAA框架进行认证、授权、计费实现安全验证。 一、AAA概述 AAA&#xff08;Authentication(认证), Authorization(授权), and Accounting(计费)&#xff09;是一种管理框架&#…

鸿蒙APP的应用场景

鸿蒙APP可以用于多种场合和设备类型&#xff0c;这是鸿蒙系统的分布式能力和多终端适配的优势。以下是一些鸿蒙APP的应用场景&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.智能手机和平板电脑&am…

桌面型物联网智能机器人设计(预告)

相关资料 桌面级群控机器人CoCube探索-2022--CSDN博客 视频&#xff1a; 能&#xff01;有&#xff01;多&#xff01;酷&#xff01;CoCube桌面级群控机器人 让我看看谁在SJTU里划水… 简要介绍 设计一个桌面型物联网智能机器人&#xff0c;以ESP32芯片为核心&#xff0c;配…

uniapp+uview封装上传图片组件(单张/多张)

uniappuview封装上传图片组件(单张/多张) 先看效果 1.uploadImg.vue <template><view class"uploadImg flex-d flex-wrap"><!-- 多张图片上传 --><view class"imgList imgArr flex-d flex-wrap" v-for"(item,index) in file…

Leetcode2806. 取整购买后的账户余额

Every day a Leetcode 题目来源&#xff1a;2806. 取整购买后的账户余额 解法1&#xff1a;数学 题目要求为将 purchaseAmount 四舍五入到最近的 10 的倍数作为 roundedAmount&#xff0c;计算 100−roundedAmount 的值并返回。 分类讨论即可。 代码&#xff1a; /** lc…

Leetcode—24. 两两交换链表中的节点【中等】

2023每日刷题&#xff08;八十七&#xff09; Leetcode—24. 两两交换链表中的节点 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x),…

Java零基础学习19:集合

编写博客目的&#xff1a;本系列博客均根据B站黑马程序员系列视频学习和编写目的在于记录自己的学习点滴&#xff0c;方便后续回忆和查找相关知识点&#xff0c;不足之处恳请各位有缘的朋友指正。 一、集合和数组的对比 数组和集合很相似&#xff0c;但集合只能存储引用数据类…

MySQL两个表的亲密接触-连接查询的原理

MySQL对于被驱动表的关联字段没索引的关联查询&#xff0c;一般都会使用 BNL 算法。如果有索引一般选择 NLJ 算法&#xff0c;有 索引的情况下 NLJ 算法比 BNL算法性能更高。 关系型数据库还有一个重要的概念&#xff1a;Join&#xff08;连接&#xff09;。使用Join有好处&…

【操作系统】实验四 增加Linux系统调用

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

Zabbix 整合 Prometheus:案例分享与操作指南

一、简介 Zabbix 和 Prometheus 都是流行的开源监控工具&#xff0c;它们各自具有独特的优势。Zabbix 主要用于网络和系统监控&#xff0c;而 Prometheus 则专注于开源的分布式时间序列数据库。在某些场景下&#xff0c;将这两个工具整合在一起可以更好地发挥它们的优势&#…

C语言进阶——数据结构之链表

前言 hello&#xff0c;大家好呀&#xff0c;我是Humble 在之前的两篇博客&#xff0c;我们学完了数据结构中的顺序表&#xff0c;还对它进行了一个应用&#xff0c;做了一个通讯录的小项目 那今天我们再来学习一个新的数据结构——链表 引入 我们来回忆一下顺序表 对于顺…

Spring Boot 初始(快速搭建 Spring Boot 应用环境)

提示&#xff1a; ① 通过下面的简介可以快速的搭建一个可以运行的 Spring Boot 应用&#xff08;估计也就2分钟吧&#xff09;&#xff0c;可以简单的了解运行的过程。 ② 建议还是有一点 Spring 和 SpringMVC的基础&#xff08;其实搭建一个 Spring Boot 环境不需要也没有关系…

C++多线程_std::future与std::promise

目录 1. 引言 2. promise/future的含义 std::future std::promise std::packaged_task std::async 处理异常 std::shared_future 实战&#xff1a;多线程实现快速排序 时钟与限定等待时间 参考: 1. 引言 在并发编程中&#xff0c;我们通常会用到一组非阻塞的模型&a…

共享wifi项目到底能不能做?

如今&#xff0c;互联网已经渗透到我们生活的方方面面&#xff0c;人们对WiFi的需求越来越大&#xff0c;已经成为人们不可或缺的一部分。在这样的背景下&#xff0c;共享WiFi项目应运而生&#xff0c;作为近年来兴起的创业选择&#xff0c;成为了越来越多创业者追逐的热门项目…
最新文章