apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-gitops-operator
spec:
# (...)
config:
env:
- name: NAMESPACE_SCOPED_ARGO_ROLLOUTS
value: 'true' (1)
Red Hat OpenShift GitOps 支持两种 Argo Rollouts 安装模式
集群范围安装(默认):任何命名空间中定义的 Argo Rollouts 自定义资源 (CR) 都由 Argo Rollouts 实例协调。因此,您可以跨集群上的任何命名空间使用 Argo Rollouts CR。
命名空间范围安装:Argo Rollouts 实例安装在特定命名空间中,并且仅处理同一命名空间内的 Argo Rollouts CR。此安装模式具有以下优点
此模式不需要集群范围的ClusterRole
或ClusterRoleBinding
权限。您可以在单个命名空间中安装和使用 Argo Rollouts,而无需集群权限。
此模式通过将单个 Argo Rollouts 实例的集群范围限制到特定命名空间来提供安全优势。
为防止意外权限提升,Red Hat OpenShift GitOps 每次只允许一种 Argo Rollout 安装模式。 |
要在集群范围和命名空间范围的 Argo Rollouts 安装之间切换,请完成以下步骤。
要配置命名空间作用域的 Argo Rollouts 安装实例,请完成以下步骤。
您已以管理员身份登录 Red Hat OpenShift GitOps 集群。
您已在 Red Hat OpenShift GitOps 集群上安装了 Red Hat OpenShift GitOps。
在 Web 控制台的**管理员**视角中,转到**管理** → **自定义资源定义**。
搜索Subscription
并单击**Subscription** CRD。
单击**实例**选项卡,然后单击**openshift-gitops-operator** 订阅。
单击**YAML** 选项卡并编辑 YAML 文件。
指定NAMESPACE_SCOPED_ARGO_ROLLOUTS
环境变量,并在.spec.config.env
属性中将其值设置为true
。
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' 或未指定,则安装默认为集群范围模式。 |
单击**保存**。
Red Hat OpenShift GitOps 运算符促进在命名空间范围安装中 Argo Rollouts 自定义资源的协调。
通过查看 GitOps 容器的日志,验证 Red Hat OpenShift GitOps 运算符是否已启用命名空间范围的 Argo Rollouts 安装
在 Web 控制台的**管理员**视角中,转到**工作负载** → **Pod**。
单击**openshift-gitops-operator-controller-manager** pod,然后单击**日志**选项卡。
查找以下日志语句:Running in namespaced-scoped mode
。此语句表示 Red Hat OpenShift GitOps 运算符已启用命名空间范围的 Argo Rollouts 安装。
创建RolloutManager
资源以完成命名空间范围的 Argo Rollouts 安装
转到**运算符** → **已安装的运算符** → **Red Hat OpenShift GitOps**,然后单击**RolloutManager** 选项卡。
单击**创建 RolloutManager**。
选择**YAML 视图**并输入以下代码段
RolloutManager
CRapiVersion: argoproj.io/v1alpha1
kind: RolloutManager
metadata:
name: rollout-manager
namespace: my-application (1)
spec:
namespaceScoped: true
1 | 指定要在其中安装命名空间范围 Argo Rollouts 实例的项目名称。 |
单击**创建**。
创建RolloutManager
CR 后,Red Hat OpenShift GitOps 将开始将命名空间范围的 Argo Rollouts 实例安装到选定的命名空间中。
验证命名空间范围的安装是否成功。
在**RolloutManager** 选项卡下的**RolloutManagers** 部分,确保RolloutManager
实例的**状态**字段为Phase: Available
。
检查**RolloutManagers** 部分下的**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 安装未成功启用。安装默认为集群范围模式。 |