Skip to content

关于本页

本页介绍更夫所基于的开源内核 Keep 的通用能力。更夫在其上提供国内化增强:钉钉/企业微信/飞书通知、国产大模型接入、LDAP 认证与值班管理。部署与上手请看快速上手。

认证 ​

此提供商需要身份验证。

  • cilium_base_endpoint: cilium hubble relay 的基础端点(必需:True,敏感:False)

在工作流中 ​

此提供商不能用作工作流中的"步骤"或"操作"。如果您想使用它,请通过在 GitHub 仓库 创建问题告诉我们。

拓扑 ​

此提供商向 Keep 拉取拓扑。可用于关联和映射,并作为警报和事件的上下文。

概述 ​

TIP

Cilium provider 处于 Beta 阶段,尚未支持身份验证。

目前从您的 kubernetes 集群拉取拓扑数据的方法是运行:

bash
# hubble-relay 通常安装在 kube-system 中,但取决于您的集群。
kubectl port-forward -n kube-system svc/hubble-relay 4245:80

然后使用 localhost:4245 拉取拓扑数据。

如果您需要帮助连接 Cilium provider,请联系我们。

Cilium provider 利用 Hubble 的网络流数据自动发现服务依赖关系并构建 Kubernetes 应用程序的拓扑图。

身份验证参数 ​

参数描述示例
cilium_base_endpointCilium Hubble relay 的基础端点localhost:4245

输出 ​

Provider 返回拓扑信息,包括:

  • 服务名称及其依赖关系
  • 命名空间信息
  • Pod 标签和集群元数据
  • 服务之间的基于网络的关系

服务发现逻辑 ​

Provider 使用以下层级识别服务:

  1. 工作负载名称(如果可用)
  2. Kubernetes 标签(k8s:app= 或 k8s:app.kubernetes.io/name=)
  3. Pod 名称(去除部署后缀)

要求 ​

  • 运行中安装了 Cilium 的 Kubernetes 集群
  • Hubble 已启用并可通过 gRPC 访问
  • 在 Cilium 中启用了网络可见性(流日志)

限制 ​

  • 仅捕获 Pod 之间的活跃网络流
  • 服务发现仅限于具有适当 Kubernetes 标签的 Pod
  • 需要直接访问 Hubble relay 端点

相关链接 ​

Google Kubernetes Engine 特定说明 ​

如果您使用的是 GKE 集群,则无法将 Keep 直接连接到 Google 托管的 hubble-relay,因为:

  • hubble-relay 仅在安全模式下运行。
  • hubble-relay 需要客户端证书身份验证。

但是,Keep 目前不支持这些功能。

作为一种变通方法,您可以添加一个 NGINX Pod,监听明文 HTTP 端口并使用 hubble-relay 证书将请求代理到 hubble-relay 安全端口。

TIP

您需要一个带有 dataplane v2 的 GKE 集群。

必须启用 Dataplane v2 可观测性。

以下是运行明文 NGINX 代理的示例:

yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: hubble-relay-insecure-nginx
  namespace: gke-managed-dpv2-observability
data:
  nginx.conf: |
    user  nginx;
    worker_processes  auto;

    error_log  /dev/stdout notice;
    pid        /var/run/nginx.pid;

    events {
      worker_connections  1024;
    }

    http {
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
      '$status $body_bytes_sent "$http_referer" '
      '"$http_user_agent" "$http_x_forwarded_for"';

      access_log /dev/stdout main;

      server {
        listen       80;

        http2 on;

        location / {
          grpc_pass grpcs://hubble-relay.gke-managed-dpv2-observability.svc.cluster.local:443;

          grpc_ssl_certificate /etc/nginx/certs/client.crt;
          grpc_ssl_certificate_key /etc/nginx/certs/client.key;
          grpc_ssl_trusted_certificate /etc/nginx/certs/hubble-relay-ca.crt;
        }
      }
    }
---
kind: Deployment
apiVersion: apps/v1
metadata:
  name: hubble-relay-insecure
  namespace: gke-managed-dpv2-observability
  labels:
    k8s-app: hubble-relay-insecure
    app.kubernetes.io/name: hubble-relay-insecure
    app.kubernetes.io/part-of: cilium
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: hubble-relay-insecure
  template:
    metadata:
      labels:
        k8s-app: hubble-relay-insecure
        app.kubernetes.io/name: hubble-relay-insecure
        app.kubernetes.io/part-of: cilium
    spec:
      securityContext:
        fsGroup: 1000
        seccompProfile:
          type: RuntimeDefault
      containers:
        - name: frontend
          image: nginx:alpine
          ports:
            - name: http
              containerPort: 80
          volumeMounts:
            - name: hubble-relay-insecure-nginx-conf
              mountPath: /etc/nginx/
              readOnly: true
            - name: hubble-relay-client-certs
              mountPath: /etc/nginx/certs/
              readOnly: true
      volumes:
        - configMap:
            name: hubble-relay-insecure-nginx
          name: hubble-relay-insecure-nginx-conf
        - name: hubble-relay-client-certs
          projected:
            defaultMode: 0400
            sources:
              - secret:
                  name: hubble-relay-client-certs
                  items:
                    - key: ca.crt
                      path: hubble-relay-ca.crt
                    - key: tls.crt
                      path: client.crt
                    - key: tls.key
                      path: client.key
---
kind: Service
apiVersion: v1
metadata:
  name: hubble-relay-insecure
  namespace: gke-managed-dpv2-observability
  labels:
    k8s-app: hubble-relay-insecure
    app.kubernetes.io/name: hubble-relay-insecure
    app.kubernetes.io/part-of: cilium
spec:
  type: ClusterIP
  selector:
    k8s-app: hubble-relay-insecure
  ports:
    - name: http
      port: 80
      targetPort: 80

现在您可以使用 hubble-relay-insecure.gke-managed-dpv2-observability:80 地址添加 Cilium provider 来连接带有 Google 托管 hubble-relay 的 Keep。

基于 MIT 协议开源的 Keep · 由更夫社区维护