7.7. 使用网络策略配置多租户模式
作为集群管理员,您可以配置网络策略以为多租户网络提供隔离功能。
7.7.1. 使用网络策略配置多租户隔离 复制链接链接已复制到粘贴板!
您可以配置项目,使其与其他项目命名空间中的 pod 和服务分离。
先决条件
-
集群使用支持
NetworkPolicy对象的默认 CNI 网络供应商,如设置了mode: NetworkPolicy的 OpenShift SDN 网络供应商。此模式是 OpenShift SDN 的默认模式。 -
已安装 OpenShift CLI(
oc)。 -
使用具有
cluster-admin权限的用户登陆到集群。
流程
创建以下
NetworkPolicy对象:名为
allow-from-openshift-ingress的策略:$ cat << EOF| oc create -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-openshift-ingress spec: ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: ingress podSelector: {} policyTypes: - Ingress EOF名为
allow-from-openshift-monitoring的策略:$ cat << EOF| oc create -f - apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-openshift-monitoring spec: ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: monitoring podSelector: {} policyTypes: - Ingress EOF名为
allow-same-namespace的策略:$ cat << EOF| oc create -f - kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: allow-same-namespace spec: podSelector: ingress: - from: - podSelector: {} EOF
如果
defaultIngress Controller 配置设置了spec.endpointPublishingStrategy: HostNetwork值,您需要为defaultOpenShift Container Platform 命名空间添加一个标记来允许 Ingress Controller 和项目间的网络流量:确定您的
defaultIngress Controller 是否使用了HostNetwork端点发布策略:$ oc get --namespace openshift-ingress-operator ingresscontrollers/default \ --output jsonpath='{.status.endpointPublishingStrategy.type}'如果上个命令报告了端点发布策略为
HostNetwork,在default命名空间中设置一个标记:$ oc label namespace default 'network.openshift.io/policy-group=ingress'
运行以下命令确认当前项目中存在
NetworkPolicy对象:$ oc get networkpolicy <policy-name> -o yaml在以下示例中会显示
allow-from-openshift-ingressNetworkPolicy对象:$ oc get -n project1 networkpolicy allow-from-openshift-ingress -o yaml输出示例
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-from-openshift-ingress namespace: project1 spec: ingress: - from: - namespaceSelector: matchLabels: network.openshift.io/policy-group: ingress podSelector: {} policyTypes: - Ingress