1.12. 管理用户和配置集
1.12.1. 创建 Red Hat OpenShift Service Mesh 成员
ServiceMeshMember
资源为 Red Hat OpenShift Service Mesh 管理员提供了一种将项目添加到服务网格(即使对应用户没有服务网格项目或 member roll)的权限。虽然项目管理员被自动授予在其项目中创建 ServiceMeshMember
资源的权限,但它们不能将其指向任何 ServiceMeshControlPlane
,直到服务网格管理员显式授予服务网格访问权限。管理员可以通过授予 mesh-user
用户角色来授予用户访问网格的权限。在本例中,istio-system
是 Service Mesh control plane 项目的名称。
$ oc policy add-role-to-user -n istio-system --role-namespace istio-system mesh-user <user_name>
管理员可以修改 Service Mesh control plane 项目中的 mesh-user
角色绑定,以指定授予访问权限的用户和组。ServiceMeshMember
会将项目添加到它引用的 Service Mesh control plane 项目中的 ServiceMeshMemberRoll
。
apiVersion: maistra.io/v1 kind: ServiceMeshMember metadata: name: default spec: controlPlaneRef: namespace: istio-system name: basic
mesh-users
角色绑定在管理员创建 ServiceMeshControlPlane
资源后自动创建。管理员可使用以下命令为用户添加角色。
$ oc policy add-role-to-user
管理员也可以在创建 ServiceMeshControlPlane
资源前创建 mesh-user
角色绑定。例如,管理员可以在与 ServiceMeshControlPlane
资源相同的 oc apply
操作中创建它。
本例为 alice
添加一个角色绑定:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: istio-system name: mesh-users roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: mesh-user subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: alice
1.12.2. 创建 Service Mesh control plane 配置集
您可以使用 ServiceMeshControlPlane
配置集创建可重复使用的配置。个人用户可以根据自己的配置扩展他们创建的配置集。配置集也可以从其他配置集继承配置信息。例如,您可以为财务团队创建一个财务 control plane,为市场团队创建一个市场 control plane。如果您创建了一个开发模板和一个产品模板,则市场团队成员和财务团队成员就可以根据自己团队的情况对开发模板和生成环境配置集进行扩展。
当您配置 Service Mesh control plane 配置集时,它遵循与 ServiceMeshControlPlane
相同的语法,用户以分级方式继承设置。Operator 附带一个 默认
配置集,带有 Red Hat OpenShift Service Mesh 的默认设置。
1.12.2.1. 创建 ConfigMap
要添加自定义配置集,您必须在 openshift-operators
项目中创建一个名为 smcp-templates
的 ConfigMap
。Operator 容器会自动挂载 ConfigMap
。
先决条件
- 已安装并验证的 Service Mesh Operator。
-
具有
cluster-admin
角色的帐户。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。 - Operator 部署的位置。
-
访问 OpenShift CLI(
oc
)。
流程
-
以
cluster-admin
用户身份登录 OpenShift Container Platform CLI。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有dedicated-admin
角色的帐户。 在 CLI 中运行这个命令,在
openshift-operators
项目中创建名为smcp-templates
的 ConfigMap,并将<profiles-directory>
替换成本地磁盘上的ServiceMeshControlPlane
文件的位置:$ oc create configmap --from-file=<profiles-directory> smcp-templates -n openshift-operators
您可以使用
ServiceMeshControlPlane
中的profile
参数指定一个或多个模板。apiVersion: maistra.io/v2 kind: ServiceMeshControlPlane metadata: name: basic spec: profiles: - default
1.12.2.2. 设置正确的网络策略
Service Mesh 在 Service Mesh control plane 和成员命名空间中创建网络策略,以允许它们之间的流量。在部署前,请考虑以下条件,以确保之前通过 OpenShift Container Platform 路由公开的服务网格中的服务。
- 进入服务网格的流量必须总是经过 ingress-gateway 才能使 Istio 正常工作。
- 在不在任何服务网格中的独立命名空间中为服务网格部署服务。
-
需要在服务网格列出的命名空间中部署的非 mesh 服务应该标记其
maistra.io/expose-route: "true"
,这可以确保 OpenShift Container Platform 路由到这些服务仍可以正常工作。