2.3. 将网络策略从 Service Mesh 2 迁移到 Service Mesh 3


在 Red Hat OpenShift Service Mesh 2 中,当 ServiceMeshControlPlane 资源中 spec.security.manageNetworkPolicy 字段设置为 true 时,网络策略会被默认创建。在迁移到 OpenShift Service Mesh 3 的过程中,这些策略会被删除。

建议您在迁移部署和工作负载后重新创建网络策略。但是,如果您的安全策略需要保留网络策略,您必须首先重新创建它们,然后将 spec.security.manageNetworkPolicy 字段设置为 false,如迁移清单中所述。

2.3.1. 设置在迁移过程中使用的网络策略

您可以设置在迁移过程中使用的网络策略。

重要
  • 在从 OpenShift Service Mesh 2 重新创建网络策略到 OpenShift Service Mesh 3 的过程中,两个 control plane 都必须有权访问所有工作负载,所有工作负载都必须有权访问 control plane。
  • maistra.io/member-of: 标签在迁移过程中从命名空间中删除。

先决条件

  • 您已部署了 OpenShift Container Platform 4.14 或更高版本。
  • 以具有 cluster-admin 角色的用户身份登录到 OpenShift Container Platform Web 控制台。
  • 已安装 OpenShift Service Mesh 2.6.9 Operator。
  • 已安装 ServiceMeshControlPlane 2.6 资源。
  • 在 OpenShift Service Mesh 2 中,已在 ServiceMeshControlPlane 资源中设置了 spec.security.manageNetworkPolicy=true
  • 您已部署了 infobookinfo2 应用程序。

流程

  1. 运行以下命令标记命名空间:

    $ oc label namespace <app_namespace> service-mesh=enabled
    注意

    使用特定于网格的标签,您可以重复使用发现选择器。

  2. 使用以下 NetworkPolicy 示例配置创建网络策略:

    mesh 命名空间中的 Istiod 网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istiod-basic
      namespace: istio-system
    spec:
      ingress:
        - {}
      podSelector:
        matchLabels:
          app: istiod
          istio.io/rev: basic
      policyTypes:
        - Ingress

    mesh 命名空间中的公开路由策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: expose-route-basic
      namespace: istio-system
    spec:
      podSelector:
        matchLabels:
          maistra.io/expose-route: "true"
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  network.openshift.io/policy-group: ingress
      policyTypes:
        - Ingress

    mesh 命名空间中的默认网格网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-mesh
      namespace: istio-system
    spec:
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  service-mesh: enabled
      podSelector: {}
      policyTypes:
        - Ingress

    info 命名空间中的公开路由网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-expose-route
      namespace: info
    spec:
      podSelector:
        matchLabels:
          maistra.io/expose-route: "true"
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  network.openshift.io/policy-group: ingress
      policyTypes:
        - Ingress

    info 命名空间中的网格网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-mesh
      namespace: info
    spec:
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  service-mesh: enabled
      podSelector: {}
      policyTypes:
        - Ingress

    info2 命名空间中的公开路由网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-expose-route
      namespace: info2
    spec:
      podSelector:
        matchLabels:
          maistra.io/expose-route: "true"
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  network.openshift.io/policy-group: ingress
      policyTypes:

    info2 命名空间中的网格网络策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-mesh
      namespace: info2
    spec:
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  service-mesh: enabled
      podSelector: {}
      policyTypes:
        - Ingress

  3. 通过在 ServiceMeshControlPlane 资源中将 spec.security.manageNetworkPolicy 字段设置为 false 来禁用 OpenShift Service Mesh 2 中的网络策略。

    注意

    ServiceMeshControlPlane 资源中将 spec.security.manageNetworkPolicy 字段设置为 false 会删除 OpenShift Service Mesh 2 中默认创建的网络策略。

  4. 运行以下命令查找您当前的活跃修订版本:

    $ oc get istios <istio_name>

    输出示例

    NAME             REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
    istio-tenant-a   1           1       0        istio-tenant-a    Healthy   v1.24.3   30s

  5. 在 OpenShift Service Mesh 3 的第二个 Istiod 网络策略中复制输出中的活跃修订名称,以用于 istio.io/rev 标签。
  6. 使用以下 NetworkPolicy 示例配置,为 OpenShift Service Mesh 3 创建第二个 Istiod 网络策略:

    示例策略示例

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: istio-istiod-v3
      namespace: istio-system
    spec:
      ingress:
        - {}
      podSelector:
        matchLabels:
          app: istiod
          istio.io/rev: istio-tenant-a 
    1
    
      policyTypes:
        - Ingress

    1
    必须与您当前的活跃修订名称匹配。

后续步骤

  • 在 OpenShift Service Mesh 2 中,在 ServiceMeshControlPlane 资源中将 spec.security.manageNetworkPolicy 字段设置为 false,并继续迁移清单。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部