第 4 章 GitOps


4.1. Red Hat OpenShift GitOps 发行注记

Red Hat OpenShift GitOps 是为云原生应用程序实施持续部署的一种声明方法。当应用程序部署到不同环境中的不同集群时,Red Hat OpenShift GitOps 可确保应用程序的一致性,如开发、临时和生产环境。Red Hat OpenShift GitOps 可帮助您自动执行以下任务:

  • 确保集群具有类似的配置、监控和存储状态
  • 从已知状态恢复或重新创建集群
  • 对多个 OpenShift Container Platform 集群应用或恢复配置更改
  • 将模板配置与不同环境关联
  • 在集群间(从调试到生产阶段)推广应用程序。

如需了解 Red Hat OpenShift GitOps 的概述,请参阅了解 OpenShift GitOps

4.1.1. 使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 Red Hat CTO Chris Wright 信息

4.1.2. Red Hat OpenShift GitOps 1.2.1 发行注记

Red Hat OpenShift GitOps 1.2.1 现在包括在 OpenShift Container Platform 4.7 和 4.8 中。

4.1.2.1. 支持列表

这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。

技术预览功能支持范围

在下表中,功能被标记为以下状态:

  • TP: 技术预览
  • GA: 正式发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

Expand
表 4.1. 支持列表
功能Red Hat OpenShift GitOps 1.2.1

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.2.2. 修复的问题

在当前发行版本中解决了以下问题:

  • 在以前的版本中,应用程序控制器启动时会在应用程序控制器中观察到大量内存高峰。现在,应用程序控制器的 --kubectl-parallelism-limit 标志默认设置为 10,但可以通过在 Argo CD CR 规格中为 .spec.controller.kubeParallelismLimit 指定数字来覆盖这个值。GITOPS-1255
  • 最新的 Triggers API 会导致在使用 kam bootstrap 命令时因为 kustomization.yaml 中的重复条目导致 Kubernetes 构建失败。Pipelines 和 Tekton 会在 v0.24.2 和 v0.14.2 中分别更新来解决这个问题。GITOPS-1273
  • 现在,当从源命名空间中删除 Argo CD 实例时,持久化 RBAC 角色和绑定会自动从目标命名空间中移除。GITOPS-1228
  • 在以前的版本中,当将 Argo CD 实例部署到命名空间中时,Argo CD 实例会将"managed-by"标签更改为自己的命名空间。在这个版本中,命名空间会取消标记,同时确保为命名空间创建和删除所需的 RBAC 角色和绑定。GITOPS-1247
  • 在以前的版本中,Argo CD 工作负载中的默认资源请求限制(特别是 repo-server 和应用程序控制器)被发现非常严格的限制。现有资源配额现已被删除,在仓库服务器中默认内存限值已增加到 1024M。请注意,这个更改只会影响新的安装;现有的 Argo CD 实例工作负载不会受到影响。GITOPS-1274

4.1.3. Red Hat OpenShift GitOps 1.2 发行注记

Red Hat OpenShift GitOps 1.2 现在包括在 OpenShift Container Platform 4.7 和 4.8 中。

4.1.3.1. 支持列表

这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。

技术预览功能支持范围

在下表中,功能被标记为以下状态:

  • TP: 技术预览
  • GA: 正式发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

Expand
表 4.2. 支持列表
功能Red Hat OpenShift GitOps 1.2

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.3.2. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift GitOps 1.2 中的新内容。

  • 如果您没有对 openshift-gitops 命名空间的读写访问权限,现在可以使用 GitOps Operator 中的 DISABLE_DEFAULT_ARGOCD_INSTANCE 环境变量,并将值设置为 TRUE 以防止默认的 Argo CD 实例从 openshift-gitops 命名空间启动。
  • 现在,在 Argo CD 工作负载中配置了资源请求和限制。在 openshift-gitops 命名空间中启用资源配额。因此,手动在 openshift-gitops 命名空间中部署的带外工作负载必须使用资源请求和限制进行配置,并且可能需要增加资源配额。
  • Argo CD 身份验证现已与红帽 SSO 集成,并在集群中自动配置 OpenShift 4 身份提供商。此功能默认为禁用。要启用红帽 SSO,请在 ArgoCD CR 中添加 SSO 配置,如下所示。目前,keycloak 是唯一受支持的提供程序。

    apiVersion: argoproj.io/v1alpha1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: basic
    spec:
      sso:
        provider: keycloak
      server:
        route:
         enabled: true
    Copy to Clipboard Toggle word wrap
  • 现在,您可以使用路由标签定义主机名来支持路由器分片。现在,支持在 server (argocd server)、grafanaprometheus 路由上设置标签。要在路由上设置标签,请在 ArgoCD CR 中的服务器的路由配置下添加标签

    在 argocd 服务器上设置标签的 ArgoCD CR YAML 示例

    apiVersion: argoproj.io/v1alpha1
    kind: ArgoCD
    metadata:
      name: example-argocd
      labels:
        example: basic
    spec:
      server:
        route:
         enabled: true
         labels:
           key1: value1
           key2: value2
    Copy to Clipboard Toggle word wrap

  • GitOps Operator 现在会自动向 Argo CD 实例授予权限,以通过应用标签来管理目标命名空间中的资源。用户可以使用标签 argocd.argoproj.io/managed-by: <source-namespace> 标记目标命名空间,其中 source-namespace 是部署 argocd 实例的命名空间。

4.1.3.3. 修复的问题

在当前发行版本中解决了以下问题:

  • 在以前的版本中,如果用户在 openshift-gitops 命名空间中创建了由默认集群实例管理的 Argo CD 实例,则负责新 Argo CD 实例的应用程序会停留在 OutOfSync 状态。现在,通过添加对集群 secret 的所有者引用解决了这个问题。GITOPS-1025

4.1.3.4. 已知问题

Red Hat OpenShift GitOps 1.2 中已知的问题。

  • 当从源命名空间中删除 Argo CD 实例时,目标命名空间中的 argocd.argoproj.io/managed-by 标签不会被删除。GITOPS-1228
  • Red Hat OpenShift GitOps 1.2 中的 openshift-gitops 命名空间中启用了资源配额。这会影响手动部署的带外工作负载,以及 openshift-gitops 命名空间中默认 Argo CD 实例部署的工作负载。当您从 Red Hat OpenShift GitOps v1.1.2 升级到 v1.2 时,此类工作负载必须使用资源请求和限制来配置。如果存在额外的工作负载,则必须增加 openshift-gitops 命名空间中的资源配额。

    openshift-gitops 命名空间的当前资源配额。

    Expand
    资源RequestsLimits

    CPU

    6688m

    13750m

    内存

    4544Mi

    9070Mi

    您可以使用以下命令来更新 CPU 限值。

    $ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/limits.cpu", "value":"9000m"}]'
    Copy to Clipboard Toggle word wrap

    您可以使用以下命令来更新 CPU 请求。

    $ oc patch resourcequota openshift-gitops-compute-resources -n openshift-gitops --type='json' -p='[{"op": "replace", "path": "/spec/hard/cpu", "value":"7000m"}]
    Copy to Clipboard Toggle word wrap

    您可以替换以上命令中的路径从 cpumemory 来更新内存。

4.1.4. Red Hat OpenShift GitOps 1.1 发行注记

Red Hat OpenShift GitOps 1.1 现在包括在 OpenShift Container Platform 4.7 中。

4.1.4.1. 支持列表

这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。

技术预览功能支持范围

在下表中,功能被标记为以下状态:

  • TP: 技术预览
  • GA: 正式发行

请参阅红帽门户网站中关于对技术预览功能支持范围的信息:

Expand
表 4.3. 支持列表
功能Red Hat OpenShift GitOps 1.1

Argo CD

GA

Argo CD ApplicationSet

TP

Red Hat OpenShift GitOps Application Manager (kam)

TP

4.1.4.2. 新功能

除了包括修复和稳定性改进的信息外,以下小节突出介绍了 Red Hat OpenShift GitOps 1.1 中的新内容:

  • 现在添加了 ApplicationSet 功能(技术预览)。ApplicationSet 功能可在大量集群和 monorepos 中管理 Argo CD 应用程序时实现自动化和更大的灵活性。它还可在多租户 Kubernetes 集群中实现自助服务。
  • Argo CD 现在与集群日志记录堆栈以及 OpenShift Container Platform Monitoring 和 Alerting 功能集成。
  • Argo CD auth 现在与 OpenShift Container Platform 集成。
  • Argo CD 应用程序控制器现在支持横向扩展。
  • Argo CD Redis 服务器现在支持高可用性(HA)。

4.1.4.3. 修复的问题

在当前发行版本中解决了以下问题:

  • 在以前的版本中,Red Hat OpenShift GitOps 在带有活跃全局代理设置的代理服务器设置中无法正常工作。这个问题已被解决。现在,Red Hat OpenShift GitOps Operator 会使用 pod 的完全限定域名(FQDN)配置 Argo CD,以启用组件间的通信。GITOPS-703
  • Red Hat OpenShift GitOps 后端依赖于 Red Hat OpenShift GitOps URL 中的 ?ref= 查询参数来发出 API 调用。在以前的版本中,这个参数没有从 URL 中读取,从而导致后端始终考虑默认引用。这个问题已被解决。Red Hat OpenShift GitOps 后端现在从 Red Hat OpenShift GitOps URL 提取引用查询参数,且仅在未提供输入引用时使用默认引用。GITOPS-817
  • 在以前的版本中,Red Hat OpenShift GitOps 后端无法找到有效的 GitLab 存储库。这是因为 Red Hat OpenShift GitOps 后端检查 main 作为分支引用,而不是 GitLab 存储库中的 master。这个问题现已解决。GITOPS-768
  • OpenShift Container Platform Web 控制台的 Developer 视角中的 Environments 页面现在显示应用程序列表和环境数量。本页还显示 Argo CD 链接,它将您定向到列出所有应用程序的 Argo CD Applications 页面。Argo CD Applications 页面带有 LABELS (如 app.kubernetes.io/name=appName),它只帮助您过滤您选择的应用程序。GITOPS-544

4.1.4.4. 已知问题

Red Hat OpenShift GitOps 1.1 中已知的问题:

  • Red Hat OpenShift GitOps 不支持 Helm v2 和 ksonnet。
  • 在断开连接的集群中不支持 Red Hat SSO(RH SSO)Operator。因此,断开连接的集群中不支持 Red Hat OpenShift GitOps Operator 和 RH SSO 集成。
  • 当您从 OpenShift Container Platform web 控制台删除 Argo CD 应用程序时,Argo CD 应用程序会从用户界面中删除,但部署仍存在于集群中。作为临时解决方案,请从 Argo CD 控制台删除 Argo CD 应用程序。GITOPS-830

4.1.4.5. 有问题的更改

4.1.4.5.1. 从 Red Hat OpenShift GitOps v1.0.1 升级

当您从 Red Hat OpenShift GitOps v1.0.1 升级到 v1.1 时,Red Hat OpenShift GitOps Operator 会将 openshift-gitops 命名空间中创建的默认 Argo CD 实例从 argocd-cluster 重命名到 openshift-gitops

这是一个有问题的变化,需要在升级前手动执行以下步骤:

  1. 进入 OpenShift Container Platform web 控制台,将 openshift-gitops 命名空间中的 argocd-cm.yml 配置映射文件的内容复制到本地文件中。内容可能类似以下示例:

    argocd 配置映射 YAML 示例

    kind: ConfigMap
    apiVersion: v1
    metadata:
    selfLink: /api/v1/namespaces/openshift-gitops/configmaps/argocd-cm
    resourceVersion: '112532'
    name: argocd-cm
    uid: f5226fbc-883d-47db-8b53-b5e363f007af
    creationTimestamp: '2021-04-16T19:24:08Z'
    managedFields:
    ...
    namespace: openshift-gitops
    labels:
      app.kubernetes.io/managed-by: argocd-cluster
      app.kubernetes.io/name: argocd-cm
      app.kubernetes.io/part-of: argocd
    data: "" 
    1
    
    admin.enabled: 'true'
    statusbadge.enabled: 'false'
    resource.exclusions: |
      - apiGroups:
        - tekton.dev
        clusters:
        - '*'
        kinds:
        - TaskRun
        - PipelineRun
    ga.trackingid: ''
    repositories: |
      - type: git
        url: https://github.com/user-name/argocd-example-apps
    ga.anonymizeusers: 'false'
    help.chatUrl: ''
    url: >-
      https://argocd-cluster-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com   "" 
    2
    
    help.chatText: ''
    kustomize.buildOptions: ''
    resource.inclusions: ''
    repository.credentials: ''
    users.anonymous.enabled: 'false'
    configManagementPlugins: ''
    application.instanceLabelKey: ''
    Copy to Clipboard Toggle word wrap

    1
    手工恢复 argocd-cm.yml 配置映射文件中内容的 data 部分。
    2
    将配置映射条目中的 URL 值替换为新实例名称 openshift-gitops
  2. 删除默认的 argocd-cluster 实例。
  3. 编辑新的 argocd-cm.yml 配置映射文件,手动恢复整个 data 部分。
  4. 将配置映射条目中的 URL 值替换为新实例名称 openshift-gitops。例如,在上例中将 URL 值替换为以下 URL 值:

    url: >-
      https://openshift-gitops-server-openshift-gitops.apps.dev-svc-4.7-041614.devcluster.openshift.com
    Copy to Clipboard Toggle word wrap
  5. 登录到 Argo CD 集群,验证之前的配置是否存在。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat