3.4.2. 启用网络隔离时允许项目间的流量

集群网络供应商可能会强制实施网络隔离。如果是这样,您必须允许包含 OpenShift Logging 部署的 Operator 的项目间的网络流量。

网络隔离会阻止位于不同项目中的 pod 或服务之间的网络流量。OpenShift Logging 在 openshift-operators-redhat 项目中安装 OpenShift Elasticsearch Operator,在 openshift-logging 项目中安装 Red Hat OpenShift Logging Operator。因此,您必须允许这两个项目之间的流量。

OpenShift Container Platform 为默认 Container Network Interface(CNI)网络供应商(OpenShift SDN 和 OVN-Kubernetes)提供两个支持的选择。这两个提供程序实施各种网络隔离策略。

OpenShift SDN 有三种模式:

网络策略
这是默认的模式。如果没有定义策略,它将允许所有流量。但是,如果用户定义了策略,它们通常先拒绝所有流量,然后再添加例外。此过程可能会破坏在不同项目中运行的应用。因此,显式配置策略以允许从一个与日志记录相关的项目出口到另一个项目的流量。
多租户
这个模式强制实施网络隔离。您必须加入两个与日志记录相关的项目,以允许它们之间的流量。
subnet
此模式允许所有流量。它不强制实施网络隔离。不需要操作。

OVN-Kubernetes 始终使用网络策略。因此,与 OpenShift SDN 一样,您必须配置策略,以允许流量从一个与日志相关的项目出口到另一个项目。

流程

  • 如果您以多租户(multitenant)模式使用 OpenShift SDN,请加入这两个项目。例如:

    $ oc adm pod-network join-projects --to=openshift-operators-redhat openshift-logging
  • 否则,对于网络策略模式的 OpenShift SDN 以及 OVN-Kubernetes,请执行以下操作:

    1. openshift-operators-redhat 命名空间中设置标签。例如:

      $ oc label namespace openshift-operators-redhat project=openshift-operators-redhat
    2. openshift-logging 命名空间中创建一个网络策略对象,允许从 openshift-operators-redhatopenshift-monitoringopenshift-ingress 项目中的 ingress 到 openshift-logging 项目。例如:

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: allow-from-openshift-monitoring-ingress-operators-redhat
      spec:
        ingress:
        - from:
          - podSelector: {}
        - from:
          - namespaceSelector:
              matchLabels:
                project: "openshift-operators-redhat"
        - from:
          - namespaceSelector:
              matchLabels:
                name: "openshift-monitoring"
        - from:
          - namespaceSelector:
              matchLabels:
                network.openshift.io/policy-group: ingress
        podSelector: {}
        policyTypes:
        - Ingress