使用 Operator 部署

要启用连续网络流量采集,你需要:

  1. 一个可访问的 ClickHouse 服务器,用于存储流量日志
  2. NetObserv Operator
  3. 一个 FlowCollector 实例

ClickHouse 后端可以通过以下任一方式准备:

  • 使用现有的 ClickHouse 服务器,并在 FlowCollector 配置中提供其连接信息
  • 使用 ClickHouse Operator 在集群中部署一个新的 ClickHouse 实例

选择 ClickHouse 部署选项

在创建 FlowCollector 实例之前,请从以下方法中选择一种:

  • 现有 ClickHouse 服务器:如果你已经有一个 FlowCollector 可以访问的 ClickHouse 部署,请使用此选项。
  • 集群内新建 ClickHouse 实例:如果你希望使用 ClickHouse Operator 在集群中部署 ClickHouse,请使用此选项。

如果你使用现有的 ClickHouse 服务器,请提前准备以下值:

  • host:port 格式的 ClickHouse 服务地址
  • 用于流量日志的数据库名称
  • ClickHouse 认证的用户名和密码
  • 将在 FlowCollector 的 .spec.namespace 中使用的命名空间

可选:使用 ClickHouse Operator 部署 ClickHouse

如果你已经为 NetObserv 准备了 ClickHouse 服务器,请跳过本节并转到 安装 NetObserv Operator

安装 ClickHouse Operator

  1. 导航到 Administrator > Marketplace > OperatorHub

  2. 搜索 "ClickHouse",并找到由 提供的 ClickHouse Operator。

  3. 如果 ClickHouse Operator 的状态为 Absent,请上传你从 Customer Portal 下载的 ClickHouse Operator 安装包。

  4. 单击 ClickHouse Operator 以打开详情页。

  5. 在 Operator 详情页中,单击 Install

  6. 根据需要填写配置参数。

  7. 单击 Install 开始安装。

  8. 在弹出的对话框中单击 Confirm 确认安装。

  9. 等待安装完成。

NOTE

如果由 提供的 ClickHouse Operator 已经安装,请跳过本节,直接创建用于 NetObserv 的 ClickHouse 集群。

创建 ClickHouseInstallation 实例

  1. 在 ClickHouse Operator 详情页中,导航到 All Instances 页面并单击 Create

  2. 在弹出的对话框中,在 ClickHouseInstallation 部分单击 Create

  3. Create ClickHouseInstallation 页面中,单击右上角的 YAML,切换到 YAML 编辑模式。

  4. 根据需要编辑 YAML 文件,然后单击 Create 创建 ClickHouseInstallation 实例。

ClickHouseInstallation YAML 示例:

apiVersion: clickhouse.altinity.com/v1
kind: ClickHouseInstallation
metadata:
  name: netobserv
  namespace: cpaas-system
spec:
  configuration:
    files:
      99-disable-system-logs.xml: |
        <clickhouse>
          <trace_log remove="1"/>
          <text_log remove="1"/>
          <query_log remove="1"/>
          <query_thread_log remove="1"/>
          <part_log remove="1"/>
          <metric_log remove="1"/>
          <asynchronous_metric_log remove="1"/>
          <processors_profile_log remove="1"/>
          <query_metric_log remove="1"/>
          <error_log remove="1"/>
          <crash_log remove="1"/>
          <opentelemetry_span_log remove="1"/>
          <session_log remove="1"/>
          <transactions_info_log remove="1"/>
          <backup_log remove="1"/>
        </clickhouse>
    clusters:
      - layout:
          replicasCount: 1
          shardsCount: 1
        name: replicated
    users:
      clickhouse_root/networks/ip:
        - 127.0.0.1
        - 0.0.0.0/0
        - ::/0
      clickhouse_root/password_sha256_hex: <SHA256_HEX_PASSWORD>
  defaults:
    templates:
      dataVolumeClaimTemplate: default
      logVolumeClaimTemplate: log-volume-template
      podTemplate: clickhouse:25.8
  templates:
    podTemplates:
      - name: clickhouse:25.8
        podDistribution:
          - type: ShardAntiAffinity
        spec:
          containers:
            - command:
                - clickhouse-server
                - --config-file=/etc/clickhouse-server/config.xml
              env:
                - name: CLICKHOUSE_DO_NOT_CHOWN
                  value: "1"
              image: build-harbor.alauda.cn/middleware/clickhouse-server:v25.8.16.34-61a7880e
              name: clickhouse-pod
              resources:
                limits:
                  cpu: "2"
                  memory: 4Gi
                requests:
                  cpu: "1"
                  memory: 2Gi
              securityContext:
                readOnlyRootFilesystem: true
          securityContext:
            fsGroup: 101
            runAsGroup: 101
            runAsNonRoot: true
            runAsUser: 101
    volumeClaimTemplates:
      - name: default
        spec:
          storageClassName: sc-topolvm
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 80Gi
      - name: log-volume-template
        spec:
          storageClassName: sc-topolvm
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 15Gi
  1. 用于禁用 NetObserv 不需要的系统日志的额外 ClickHouse 配置文件。99- 前缀会使该文件在默认配置之后加载,remove="1" 会删除对应的日志配置条目。
  2. ClickHouse 用户 clickhouse_root 的密码 SHA-256 哈希值。请从原始明文密码生成哈希,并将 <SHA256_HEX_PASSWORD> 替换为命令输出。

例如,如果要使用 NetObserv@123 作为 ClickHouse 密码,请运行:

printf '%s' 'NetObserv@123' | sha256sum | awk '{print $1}'

将生成的哈希值用于 clickhouse_root/password_sha256_hex。 稍后创建 ck-auth secret 时,请使用 clickhouse_root 作为用户名,并使用原始明文密码作为密码。

如果你想使用不同的 ClickHouse 用户名,请同时替换 clickhouse_root/networks/ipclickhouse_root/password_sha256_hex 中的 clickhouse_root。 例如,对于名为 netobserv_user 的用户,请使用 netobserv_user/networks/ipnetobserv_user/password_sha256_hex。 然后在 ck-auth secret 中使用相同的用户名。

当 ClickHouse 实例就绪后,请通过检查 ClickHouseInstallation 实例的 .status.endpoint 字段获取服务端点。 你也可以运行以下命令获取端点:

kubectl -n cpaas-system get chi netobserv -o jsonpath="{.status.endpoint}"

命令中的 cpaas-systemnetobserv 必须分别与 ClickHouseInstallation 实例的命名空间和名称一致。 如果你使用不同的命名空间或名称,请相应替换命令中的 cpaas-systemnetobserv

记录 ClickHouse 端点地址和凭据以供后续使用。 在创建 FlowCollector 实例时,你将需要这些信息。

安装 NetObserv Operator

  1. 导航到 Administrator > Marketplace > OperatorHub

  2. 搜索 "Alauda Container Platform Network Observability Operator"。

  3. 单击 Install 打开安装配置页面。

  4. 根据需要填写配置参数。

  5. 单击 Install 开始安装。

  6. 在弹出的对话框中单击 Confirm 确认安装。

  7. 等待安装完成。

创建 ClickHouse Authentication Secret

在创建 FlowCollector 实例之前,先为 ClickHouse 认证创建一个 Kubernetes secret。

该 secret 会在 FlowCollector 配置中通过 .spec.clickhouse.authSecret.name 引用。

  1. 创建一个名为 ck-auth.env 的本地文件,并写入以下内容:

    username=clickhouse_root
    password=<PLAINTEXT_PASSWORD>

    如果你使用本节中的 ClickHouseInstallation 示例,请将 password 设置为用于生成 <SHA256_HEX_PASSWORD> 的原始明文密码。 如果你使用不同的 ClickHouse 用户名,请将 username 设置为该值。

  2. 创建 Kubernetes secret:

    # Create namespace if it does not exist
    test ! -n "$(kubectl get ns netobserv --ignore-not-found -o name)" && kubectl create ns netobserv
    # Create the secret from the environment file
    kubectl -n netobserv create secret generic ck-auth --from-env-file=./ck-auth.env

在此命令中,netobserv 必须与 FlowCollector 配置中的 .spec.namespace 值一致。

如果你在 FlowCollector 配置中使用不同的命名空间,请相应替换命令中的 netobserv

创建 FlowCollector 实例

在创建 FlowCollector 实例之前,请确认:

  • ClickHouse 服务器可从集群访问
  • ck-auth secret 存在于 .spec.namespace 指定的命名空间中
  • ClickHouse 地址、数据库和凭据均正确

然后创建 FlowCollector 实例:

  1. 导航到 All Instances 页面并单击 Create

  2. 在弹出的对话框中,在 FlowCollector 部分单击 Create

  3. Create FlowCollector 页面中,单击右上角的 YAML,切换到 YAML 编辑模式。

  4. 根据需要编辑 YAML 文件,然后单击 Create 创建 FlowCollector 实例。

FlowCollector YAML 示例:

apiVersion: flows.netobserv.io/v1beta2
kind: FlowCollector
metadata:
  name: cluster
spec:
  agent:
    ebpf:
      features:
        - DNSTracking
        - FlowRTT
        - PacketTranslation
        - TLSTracking
      metrics:
        enable: false
      sampling: 50
    type: eBPF
  clickhouse:
    addresses:
      - clickhouse-netobserv.cpaas-system.svc.cluster.local:9000
    authSecret:
      name: ck-auth
    database: netobserv
    enable: true
    protocol: native
    readTimeout: 30s
    retention: 24h
    writeBatchSize: 128
    writeBatchWait: 1s
    writeTimeout: 10s
  deploymentModel: Service
  namespace: netobserv
  processor:
    consumerReplicas: 1
    logTypes: Flows
    service:
      tlsType: Disabled
  1. eBPF agent 的启用功能。
  2. eBPF probe 的采样间隔。值为 100 表示每 100 个数据包采样 1 个。值为 0 或 1 表示对所有数据包采样。
  3. ClickHouse 服务器地址。使用 host:port 格式。这些地址可以指向集群中创建的 ClickHouse 实例,也可以指向现有的外部 ClickHouse 服务器。
  4. ClickHouse 认证 secret。该 secret 必须包含两个键:usernamepassword。该 secret 必须创建在与 .spec.namespace 相同的命名空间中。
  5. ClickHouse 中用于存储流量日志的数据库名称。如果数据库不存在,将自动创建。
  6. ClickHouse 中的数据保留期。使用数字加时间单位,例如 24h。此设置仅在创建 ClickHouse 表时生效。
  7. 部署 eBPF agents 和流量日志 pipeline 的命名空间。
  8. 流量日志 pipeline 的副本数。

如果你使用的是现有的 ClickHouse 服务器,请确保 FlowCollector 可以访问该服务器地址,并且所引用的 secret 包含有效凭据。

当 FlowCollector 实例创建完成后,eBPF agents 和流量日志 pipeline 将部署到 .spec.namespace 指定的命名空间。