开始之前
最佳实践: 您可以直接使用安装环境变量,按此任务中命令的原样执行。 请确保您已添加来自
更新环境变量脚本中的新环境变量。
此外,请确保在本任务中执行命令之前已设置环境变量。
要确认操作员 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 操作员的角色,以确保操作员拥有足够的权限。
过程
- 登录
cpd-cli 到集群 Red Hat®
OpenShift® Container Platform :
请记住: CPDM_OC_LOGIN 是一个别名,代表 命令 cpd-cli
manage
login-to-ocp 。
- 运行
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
- 切换到
work 目录。
- 从 YAML
nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS}.yaml 文件创建 nss-managed-role-from-${PROJECT_CPD_INST_OPERATORS} 角色:
- 在操作员项目中为该实例创建角色
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}
- 在操作数项目中为实例创建角色
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}
- 在实例的任何绑定项目中创建角色
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 。
- 创建角色绑定:
- 在操作员项目中为实例创建角色绑定:
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
- 在操作数项目中为实例创建角色绑定:
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
- 在实例的任何关联项目中创建角色绑定:
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 )。