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-templatesConfigMap。Operator 容器会自动挂载 ConfigMap

先决条件

  • 已安装并验证的 Service Mesh Operator。
  • 具有 cluster-admin 角色的帐户。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有 dedicated-admin 角色的帐户。
  • Operator 部署的位置。
  • 访问 OpenShift CLI(oc)。

流程

  1. cluster-admin 用户身份登录 OpenShift Container Platform CLI。如果使用 Red Hat OpenShift Dedicated,则必须有一个具有 dedicated-admin 角色的帐户。
  2. 在 CLI 中运行这个命令,在 openshift-operators 项目中创建名为 smcp-templates 的 ConfigMap,并将 <profiles-directory> 替换成本地磁盘上的 ServiceMeshControlPlane 文件的位置:

    $ oc create configmap --from-file=<profiles-directory> smcp-templates -n openshift-operators
  3. 您可以使用 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 路由到这些服务仍可以正常工作。