搜索

第 4 章 GitOps

download PDF

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: 正式发行

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

表 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: 正式发行

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

表 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
  • 现在,您可以使用路由标签定义主机名来支持路由器分片。现在,支持在 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

  • 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 命名空间的当前资源配额。

    资源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"}]'

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

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

    您可以替换以上命令中的路径从 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: 正式发行

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

表 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: ''

    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
  5. 登录到 Argo CD 集群,验证之前的配置是否存在。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.