6.4. 安装后的任务

如果计划使用 Kibana,必须 手动创建 Kibana 索引模式和视觉化,以便在 Kibana 中探索和视觉化数据。

如果您的集群网络供应商强制实施网络隔离,允许包含日志记录子系统 Operator 的项目之间的网络流量

6.4.1. 定义 Kibana 索引模式

索引模式定义了您要视觉化的 Elasticsearch 索引。要在 Kibana 中探索和视觉化数据,您必须创建索引模式。

先决条件

  • 用户必须具有 cluster-admin 角色、cluster-reader 角色或这两个角色,才能在 Kibana 中查看 infraaudit 索引。默认 kubeadmin 用户具有查看这些索引的权限。

    如果可以查看 defaultkube-openshift- 项目中的 pod 和日志,则应该可以访问这些索引。您可以使用以下命令检查当前用户是否有适当的权限:

    $ oc auth can-i get pods/log -n <project>

    输出示例

    yes

    注意

    默认情况下,审计日志不会存储在 OpenShift Container Platform 内部 Elasticsearch 实例中。要在 Kibana 中查看审计日志,您必须使用 Log Forward API 配置使用审计日志的 default 输出的管道。

  • 在创建索引模式前,Elasticsearch 文档必须被索引。这会自动完成,但在一个新的或更新的集群中可能需要几分钟。

流程

在 Kibana 中定义索引模式并创建视觉化:

  1. 在 OpenShift Container Platform 控制台中点 Application Launcher app launcher 并选择 Logging
  2. ManagementIndex PatternsCreate index pattern 创建 Kibana 索引模式:

    • 首次登录 Kibana 时,每个用户必须手动创建索引模式才能查看其项目的日志。用户必须创建一个名为 app 的索引模式,并使用 @timestamp 时间字段查看其容器日志。
    • 每个 admin 用户在首次登录 Kibana 时,必须使用 @timestamp 时间字段为 appinfraaudit 索引创建索引模式。
  3. 从新的索引模式创建 Kibana 视觉化。

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

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

网络隔离会阻止位于不同项目中的 pod 或服务之间的网络流量。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 项目的入站流量到 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