Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

8.10.2. NetworkPolicy 和路由器

使用 ovs-multitenant 插件时,所有命名空间中会自动允许来自路由器的流量。这是因为路由器通常位于 default 命名空间中,所有命名空间都允许来自该命名空间中的 pod 的连接。使用 ovs-networkpolicy 插件时,这不会自动发生。因此,如果您有一个默认隔离命名空间的策略,则需要执行额外的步骤来允许路由器访问命名空间。

一种选择是为每个服务创建一个策略,允许从所有来源访问。例如:

kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-to-database-service
spec:
  podSelector:
    matchLabels:
      role: database
  ingress:
  - ports:
    - protocol: TCP
      port: 5432

这允许路由器访问该服务,但也允许其他用户命名空间中的容器集访问该服务。这不应造成任何问题,因为这些容器集通常可以使用公共路由器访问服务。

另外,您可以创建一个允许从默认命名空间中完全访问的策略,如 ovs-multitenant 插件中所示:

  1. 向 default 命名空间添加标签。

    重要

    如果您使用上一步中的默认标签标记了 default 项目,则跳过这一步。集群管理员角色需要向命名空间添加标签。

    $ oc label namespace default name=default
  2. 创建允许从该命名空间进行连接的策略。

    注意

    对您要允许连接的每个命名空间执行此步骤。具有 Project Administrator 角色的用户可以创建策略。

    kind: NetworkPolicy
    apiVersion: networking.k8s.io/v1
    metadata:
      name: allow-from-default-namespace
    spec:
      podSelector:
      ingress:
      - from:
        - namespaceSelector:
            matchLabels:
              name: default