重新授权 NamespaceScope 操作员,采用最小RBAC策略 (从版本升级 5.2 至版本 5.3

若在安装时为 NamespaceScope 操作员分配了最低限度的基于角色的访问控制(RBAC), IBM® Software Hub则必须更新操作员的分配角色,确保其拥有足够权限以协助操作员将角色从操作员项目迁移至实例项目

升级阶段
  • 你不在这里。 更新您的客户端工作站
  • 你不在这里。 收集所需信息
  • 你不在这里。 在受限网络中准备执行升级操作
  • 你不在这里。 准备从私有容器注册表运行升级操作
  • 你不在这里。 升级必备软件
  • 你不在这里。 升级共享集群组件
  • 您在此处图标。 准备升级实例
  • 你不在这里。 升级实例
谁需要完成这项任务?

集群管理员集群管理员必须完成此任务。

你需要在什么时候完成这项任务?
  • 若您在安装时已执行该 authorize-instance-topologyIBM Software Hub 命令,则可跳过此步骤。
  • 若您 NamespaceScope 为操作员授予了最低限度的基于角色的访问控制(RBAC),则必须完成此任务,以便为操作员在实例上授予足够的权限。

    根据需要重复此操作 IBM Software Hub。若存在多个实例,则必须对计划升级的 IBM Software Hub 每个实例重复此任务。

开始之前

最佳实践: 您可以直接使用安装环境变量,按此任务中命令的原样执行。 请确保您已添加来自更新环境变量脚本中的新环境变量。

此外,请确保在本任务中执行命令之前已设置环境变量。

要确认操作员 NamespaceScope 是否使用最小RBAC,请运行以下命令:

oc get role nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS} \
-n ${PROJECT_CPD_INST_OPERATORS} \
-o json | jq 'any(.rules[].apiGroups[]; . == "*")'
  • 如果命令 true返回,则操作员无需重新授权。
  • 如果命令 false返回,则操作员正在使用最低RBAC权限,必须重新授权。

关于本任务

使用 命令 show-minimum-rbac 生成 YAML 文件,该文件可用于向 NamespaceScope 操作员授予最低 RBAC 权限,从而帮助操作员将角色从操作员项目填充到实例项目

您必须重新生成并重新应用分配给 NamespaceScope 操作员的角色,以确保操作员拥有足够的权限。

过程

  1. 登录 cpd-cli 到集群 Red Hat® OpenShift® Container Platform
    ${CPDM_OC_LOGIN}
    请记住: CPDM_OC_LOGIN 是一个别名,代表 命令 cpd-cli manage login-to-ocp
  2. 运行 cpd-cli manage show-minimum-rbac 该命令以生成 YAML 文件,您可利用这些文件为 NamespaceScope 操作员创建具有最小 RBAC 权限的角色:
    cpd-cli manage show-minimum-rbac \
    --cpd_operator_ns=${PROJECT_CPD_INST_OPERATORS} \
    --components=${COMPONENTS} \
    --release=${VERSION}
    该命令在 work 目录中生成以下YAML文件:
    • nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml
  3. 切换到 work 目录。
  4. 从 YAML nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml 文件创建 nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS} 角色:
    1. 操作员项目中为该实例创建角色 nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
      oc apply \
      -f nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml \
      --namespace=${PROJECT_CPD_INST_OPERATORS}
    2. 操作数项目中为实例创建角色 nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
      oc apply \
      -f nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml \
      --namespace=${PROJECT_CPD_INST_OPERANDS}
    3. 在实例的任何绑定项目中创建角色 nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
      oc apply \
      -f nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml \
      --namespace=${PROJECT_CPD_INSTANCE_TETHERED}
      对与该实例关联的每个绑定项目重复此步骤。 IBM Software Hub
      提示: 若设置 PROJECT_CPD_INSTANCE_TETHERED_LIST 环境变量,则将绑定项目的列表打印到终端:
      echo $PROJECT_CPD_INSTANCE_TETHERED_LIST

      在重新运行该命令之前,请使用此信息设置环境变量 PROJECT_CPD_INSTANCE_TETHERED

  5. 创建角色绑定:
    1. 操作员项目中为实例创建角色绑定:
      oc apply -f - << EOF
      kind: RoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        namespace: ${PROJECT_CPD_INST_OPERATORS}
        labels:
          managed-by: nss
      subjects:
      - kind: ServiceAccount
        name: ibm-namespace-scope-operator
        namespace: ${PROJECT_CPD_INST_OPERATORS}
      roleRef:
        kind: Role
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        apiGroup: rbac.authorization.k8s.io
      EOF
    2. 操作数项目中为实例创建角色绑定:
      oc apply -f - << EOF
      kind: RoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        namespace: ${PROJECT_CPD_INST_OPERANDS}
        labels:
          managed-by: nss
      subjects:
      - kind: ServiceAccount
        name: ibm-namespace-scope-operator
        namespace: ${PROJECT_CPD_INST_OPERATORS}
      roleRef:
        kind: Role
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        apiGroup: rbac.authorization.k8s.io
      EOF
    3. 在实例的任何关联项目中创建角色绑定:
      oc apply -f - << EOF
      kind: RoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        namespace: ${PROJECT_CPD_INSTANCE_TETHERED}
        labels:
          managed-by: nss
      subjects:
      - kind: ServiceAccount
        name: ibm-namespace-scope-operator
        namespace: ${PROJECT_CPD_INST_OPERATORS}
      roleRef:
        kind: Role
        name: nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}
        apiGroup: rbac.authorization.k8s.io
      EOF
      对与该实例关联的每个绑定项目重复此步骤。 IBM Software Hub
      提示: 若设置 PROJECT_CPD_INSTANCE_TETHERED_LIST 环境变量,则将绑定项目的列表打印到终端:
      echo $PROJECT_CPD_INSTANCE_TETHERED_LIST

      在重新运行该命令之前,请使用此信息设置环境变量 PROJECT_CPD_INSTANCE_TETHERED

下一步操作

现在您已更新了操作员 NamespaceScope 的权限,即可继续执行以下操作:使用最低RBAC重新授权实例管理员以升级组件(从版本 5.2 升级至版本 5.3 )。