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。
-
已安装
ServiceMeshControlPlane2.6 资源。 -
在 OpenShift Service Mesh 2 中,已在
ServiceMeshControlPlane资源中设置了spec.security.manageNetworkPolicy=true。 -
您已部署了
info和bookinfo2应用程序。
流程
运行以下命令标记命名空间:
$ oc label namespace <app_namespace> service-mesh=enabled注意使用特定于网格的标签,您可以重复使用发现选择器。
使用以下
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: - Ingressmesh 命名空间中的公开路由策略示例
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: - Ingressmesh 命名空间中的默认网格网络策略示例
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: istio-mesh namespace: istio-system spec: ingress: - from: - namespaceSelector: matchLabels: service-mesh: enabled podSelector: {} policyTypes: - Ingressinfo命名空间中的公开路由网络策略示例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: - Ingressinfo命名空间中的网格网络策略示例apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: istio-mesh namespace: info spec: ingress: - from: - namespaceSelector: matchLabels: service-mesh: enabled podSelector: {} policyTypes: - Ingressinfo2命名空间中的公开路由网络策略示例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通过在
ServiceMeshControlPlane资源中将spec.security.manageNetworkPolicy字段设置为false来禁用 OpenShift Service Mesh 2 中的网络策略。注意在
ServiceMeshControlPlane资源中将spec.security.manageNetworkPolicy字段设置为false会删除 OpenShift Service Mesh 2 中默认创建的网络策略。运行以下命令查找您当前的活跃修订版本:
$ 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-
在 OpenShift Service Mesh 3 的第二个 Istiod 网络策略中复制输出中的活跃修订名称,以用于
istio.io/rev标签。 使用以下
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-a1 policyTypes: - Ingress- 1
- 必须与您当前的活跃修订名称匹配。
后续步骤
-
在 OpenShift Service Mesh 2 中,在
ServiceMeshControlPlane资源中将spec.security.manageNetworkPolicy字段设置为false,并继续迁移清单。