×

创建 Red Hat OpenShift 服务网格成员

ServiceMeshMember 资源为 Red Hat OpenShift 服务网格管理员提供了一种委派权限的方法,允许他们将项目添加到服务网格,即使相应的用户没有直接访问服务网格项目或成员角色。虽然项目管理员会自动获得在他们的项目中创建 ServiceMeshMember 资源的权限,但除非服务网格管理员明确授予对服务网格的访问权限,否则他们无法将其指向任何 ServiceMeshControlPlane。管理员可以通过授予他们 mesh-user 用户角色来授予用户访问网格的权限。在此示例中,istio-system 是服务网格控制平面项目的名称。

$ oc policy add-role-to-user -n istio-system --role-namespace istio-system mesh-user <user_name>

管理员可以修改服务网格控制平面项目中的 mesh-user 角色绑定以指定被授予访问权限的用户和组。ServiceMeshMember 将项目添加到它引用的服务网格控制平面项目中的 ServiceMeshMemberRoll

apiVersion: maistra.io/v1
kind: ServiceMeshMember
metadata:
  name: default
spec:
  controlPlaneRef:
    namespace: istio-system
    name: basic

在管理员创建 ServiceMeshControlPlane 资源后,会自动创建 mesh-users 角色绑定。管理员可以使用以下命令将角色添加到用户。

$ 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

创建服务网格控制平面配置文件

您可以使用 ServiceMeshControlPlane 配置文件创建可重用的配置。各个用户可以使用他们自己的配置扩展他们创建的配置文件。配置文件还可以从其他配置文件继承配置信息。例如,您可以为会计团队创建一个会计控制平面,为营销团队创建一个营销控制平面。如果您创建了一个开发模板和一个生产模板,那么营销团队和会计团队的成员可以使用团队特定的自定义项扩展开发和生产配置文件。

当您配置服务网格控制平面配置文件(遵循与 ServiceMeshControlPlane 相同的语法)时,用户会以分层方式继承设置。操作符附带一个具有 Red Hat OpenShift 服务网格默认设置的 default 配置文件。

创建 ConfigMap

要添加自定义配置文件,您必须在 `openshift-operators` 项目中创建一个名为 `smcp-templates` 的 `ConfigMap`。Operator 容器会自动挂载此 `ConfigMap`。

前提条件
  • 已安装并验证的 Service Mesh Operator。

  • 具有 `cluster-admin` 角色的帐户。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有 `dedicated-admin` 角色的帐户。

  • Operator 部署位置。

  • 访问 OpenShift CLI (`oc`)。

步骤
  1. 以 `cluster-admin` 用户身份登录 OpenShift Dedicated CLI。如果您使用 Red Hat OpenShift Dedicated,则必须拥有具有 `dedicated-admin` 角色的帐户。

  2. 从 CLI 运行以下命令,在 `openshift-operators` 项目中创建名为 `smcp-templates` 的 ConfigMap,并将 `` 替换为本地磁盘上 `ServiceMeshControlPlane` 文件的位置

    $ oc create configmap --from-file=<profiles-directory> smcp-templates -n openshift-operators
  3. 您可以在 `ServiceMeshControlPlane` 中使用 `profiles` 参数指定一个或多个模板。

      apiVersion: maistra.io/v2
      kind: ServiceMeshControlPlane
      metadata:
        name: basic
      spec:
        profiles:
        - default

设置正确的网络策略

Service Mesh 在 Service Mesh 控制平面和成员命名空间中创建网络策略,以允许它们之间进行流量交互。在部署之前,请考虑以下条件,以确保您服务网格中以前通过 OpenShift Dedicated 路由公开的服务能够正常工作。

  • 为了 Istio 能够正常工作,进入服务网格的流量必须始终通过 ingress-gateway。

  • 将服务网格外部的服务部署到任何服务网格中都不包含的单独命名空间中。

  • 需要部署在已注册服务网格命名空间内的非网格服务,应为其部署添加标签 `maistra.io/expose-route: "true"`,以确保这些服务的 OpenShift Dedicated 路由仍然有效。