×

Red Hat OpenShift GitOps 支持两种 Argo Rollouts 安装模式

  • 集群范围安装(默认):任何命名空间中定义的 Argo Rollouts 自定义资源 (CR) 都由 Argo Rollouts 实例协调。因此,您可以跨集群上的任何命名空间使用 Argo Rollouts CR。

  • 命名空间范围安装:Argo Rollouts 实例安装在特定命名空间中,并且仅处理同一命名空间内的 Argo Rollouts CR。此安装模式具有以下优点

    • 此模式不需要集群范围的ClusterRoleClusterRoleBinding权限。您可以在单个命名空间中安装和使用 Argo Rollouts,而无需集群权限。

    • 此模式通过将单个 Argo Rollouts 实例的集群范围限制到特定命名空间来提供安全优势。

为防止意外权限提升,Red Hat OpenShift GitOps 每次只允许一种 Argo Rollout 安装模式。

要在集群范围和命名空间范围的 Argo Rollouts 安装之间切换,请完成以下步骤。

配置命名空间作用域 Argo Rollouts 安装

要配置命名空间作用域的 Argo Rollouts 安装实例,请完成以下步骤。

先决条件
  • 您已以管理员身份登录 Red Hat OpenShift GitOps 集群。

  • 您已在 Red Hat OpenShift GitOps 集群上安装了 Red Hat OpenShift GitOps。

步骤
  1. 在 Web 控制台的**管理员**视角中,转到**管理** → **自定义资源定义**。

  2. 搜索Subscription 并单击**Subscription** CRD。

  3. 单击**实例**选项卡,然后单击**openshift-gitops-operator** 订阅。

  4. 单击**YAML** 选项卡并编辑 YAML 文件。

    1. 指定NAMESPACE_SCOPED_ARGO_ROLLOUTS 环境变量,并在.spec.config.env 属性中将其值设置为true

      配置命名空间范围 Argo Rollouts 安装的示例
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        name: openshift-gitops-operator
      spec:
        # (...)
        config:
          env:
            - name: NAMESPACE_SCOPED_ARGO_ROLLOUTS
              value: 'true' (1)
      1 设置为'true' 的值启用命名空间范围的安装。如果值设置为'false' 或未指定,则安装默认为集群范围模式。
    2. 单击**保存**。

      Red Hat OpenShift GitOps 运算符促进在命名空间范围安装中 Argo Rollouts 自定义资源的协调。

  5. 通过查看 GitOps 容器的日志,验证 Red Hat OpenShift GitOps 运算符是否已启用命名空间范围的 Argo Rollouts 安装

    1. 在 Web 控制台的**管理员**视角中,转到**工作负载** → **Pod**。

    2. 单击**openshift-gitops-operator-controller-manager** pod,然后单击**日志**选项卡。

    3. 查找以下日志语句:Running in namespaced-scoped mode。此语句表示 Red Hat OpenShift GitOps 运算符已启用命名空间范围的 Argo Rollouts 安装。

  6. 创建RolloutManager 资源以完成命名空间范围的 Argo Rollouts 安装

    1. 转到**运算符** → **已安装的运算符** → **Red Hat OpenShift GitOps**,然后单击**RolloutManager** 选项卡。

    2. 单击**创建 RolloutManager**。

    3. 选择**YAML 视图**并输入以下代码段

      命名空间范围 Argo Rollouts 安装的示例RolloutManager CR
      apiVersion: argoproj.io/v1alpha1
      kind: RolloutManager
      metadata:
        name: rollout-manager
        namespace: my-application (1)
      spec:
        namespaceScoped: true
      1 指定要在其中安装命名空间范围 Argo Rollouts 实例的项目名称。
    4. 单击**创建**。

      创建RolloutManager CR 后,Red Hat OpenShift GitOps 将开始将命名空间范围的 Argo Rollouts 实例安装到选定的命名空间中。

  7. 验证命名空间范围的安装是否成功。

    1. 在**RolloutManager** 选项卡下的**RolloutManagers** 部分,确保RolloutManager 实例的**状态**字段为Phase: Available

    2. 检查**RolloutManagers** 部分下的**YAML** 选项卡中的以下输出,以确保安装成功

      命名空间范围 Argo Rollouts 安装 YAML 文件的示例
      spec:
        namespaceScoped: true
      status:
        conditions:
          lastTransitionTime: '2024-07-10T14:20:5z`
          message: ''
          reason: Success
          status: 'True' (1)
          type: 'Reconciled'
        phase: Available
        rolloutController: Available
      1 此状态表示命名空间范围的 Argo Rollouts 安装已成功启用。

      如果您尝试安装命名空间特定的 Argo Rollouts 实例,而集群上已存在集群范围的安装,则会显示错误消息

      安装错误以及错误消息示例
      spec:
        namespaceScoped: true
      status:
        conditions:
         lastTransitionTime: '2024-07-10T14:10:7z`
         message: 'when Subscription has environment variable NAMESPACE_SCOPED_ARGO_ROLLOUTS set to False, there may not exist any namespace-scoped RolloutManagers: only a single cluster-scoped RolloutManager is supported'
         reason: InvalidRolloutManagerScope
         status: 'False' (1)
         type: 'Reconciled'
        phase: Failure
        rolloutController: Failure
      1 此状态表示命名空间范围的 Argo Rollouts 安装未成功启用。安装默认为集群范围模式。