Kubernetes 部署

我们提供了一个 OpenTelemetry Demo Helm chart 来帮助将演示部署到现有的 Kubernetes 集群。

使用此 chart 必须安装 Helm。请参考 Helm 的 文档开始。

先决条件

  • Kubernetes 1.24+
  • 6 GB 可用内存用于应用程序
  • Helm 3.14+ (仅适用于 Helm 安装方法)

添加 OpenTelemetry Helm 仓库

helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts

要使用 my-otel-demo 作为 release 名称安装 chart,请运行以下命令

helm install my-otel-demo open-telemetry/opentelemetry-demo

使用 kubectl 安装

以下命令会将演示应用程序安装到你的 Kubernetes 集群。

kubectl create --namespace otel-demo -f https://raw.githubusercontent.com/open-telemetry/opentelemetry-demo/main/kubernetes/opentelemetry-demo.yaml

使用演示

为了使用演示应用程序,需要将其服务暴露到 Kubernetes 集群外部。你可以使用 kubectl port-forward 命令将服务暴露到本地系统,或者通过配置服务类型(例如:LoadBalancer)并可选部署 Ingress 资源来暴露。

使用 kubectl port-forward 暴露服务

要暴露 frontend-proxy 服务,请使用以下命令(将 default 替换为你的 Helm chart release 命名空间)

kubectl --namespace default port-forward svc/frontend-proxy 8080:8080

设置了 frontend-proxy 端口转发后,你可以访问

使用服务或 Ingress 配置暴露演示组件

配置 Ingress 资源

每个演示组件(例如:frontend-proxy)都提供了一种配置其 Kubernetes 服务类型的方式。默认情况下,这些不会被创建,但你可以通过每个组件的 ingress 属性来启用和配置它们。

要将 frontend-proxy 组件配置为使用 Ingress 资源,你可以在 values 文件中指定以下内容

components:
  frontend-proxy:
    ingress:
      enabled: true
      annotations: {}
      hosts:
        - host: otel-demo.my-domain.com
          paths:
            - path: /
              pathType: Prefix
              port: 8080

某些 Ingress 控制器需要特殊的注解或服务类型。有关更多信息,请参阅你的 Ingress 控制器文档。

配置服务类型

每个演示组件(例如:frontend-proxy)都提供了一种配置其 Kubernetes 服务类型的方式。默认情况下,它们将是 ClusterIP,但你可以使用每个组件的 service.type 属性来更改它们。

要将 frontend-proxy 组件配置为使用 LoadBalancer 服务类型,你可以在 values 文件中指定以下内容

components:
  frontend-proxy:
    service:
      type: LoadBalancer

配置浏览器遥测

为了正确收集来自浏览器的 span,你还需要指定 OpenTelemetry Collector 的暴露位置。frontend-proxy 定义了一个 collector 路由,其路径前缀为 /otlp-http。你可以通过在 frontend 组件上设置以下环境变量来配置 collector 端点

components:
  frontend:
    envOverrides:
      - name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
        value: http://otel-demo.my-domain.com/otlp-http/v1/traces

自带后端

你很可能想将 web store 作为演示应用程序,用于你已有的可观察性后端(例如:现有的 Jaeger、Zipkin 实例,或你选择的 供应商之一)。

OpenTelemetry Collector 的配置在 Helm chart 中公开。你进行的任何添加都将合并到默认配置中。你可以使用它来添加自己的 exporter,并将它们添加到所需的 pipeline 中。

opentelemetry-collector:
  config:
    exporters:
      otlphttp/example:
        endpoint: <your-endpoint-url>

    service:
      pipelines:
        traces:
          exporters: [spanmetrics, otlphttp/example]

供应商后端可能要求你添加额外的认证参数,请检查他们的文档。某些后端需要不同的 exporter,你可以在 opentelemetry-collector-contrib/exporter 中找到它们及其文档。

要使用自定义 my-values-file.yaml values 文件安装 Helm chart,请使用

helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml

最后修改于 2025 年 6 月 11 日: 警报清理 (#7090) (c392c714)