Kubernetes部署

我们提供了一个OpenTelemetry演示Helm图表,以帮助将演示部署到现有的Kubernetes集群中。

要使用这些图表,必须安装Helm。请参考Helm的文档进行起步。

先决条件

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

使用Helm进行安装(推荐)

添加OpenTelemetry Helm仓库:

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

要使用发布名称my-otel-demo安装图表,请运行以下命令:

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

注意 要执行下面提到的所有用法方法,需要使用OpenTelemetry演示Helm图表的0.11.0或更高版本。

使用kubectl进行安装

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

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

注意 这些清单是从Helm图表生成的,仅供方便使用。建议使用Helm图表进行安装。

使用演示

为了使用演示应用程序,需要将服务暴露到Kubernetes集群之外。可以使用kubectl port-forward命令或根据需要部署的入口资源配置服务类型(例如:LoadBalancer)来将服务暴露给本地系统。

使用kubectl port-forward暴露服务

要暴露frontendproxy服务,请使用以下命令(将my-otel-demo替换为您的Helm图表发布名称):

kubectl port-forward svc/my-otel-demo-frontendproxy 8080:8080

注意 kubectl port-forward将代理端口直到进程终止。您可能需要为每个kubectl port-forward使用单独的终端会话,并在完成后使用Ctrl-C终止该进程。

使用设置好的frontendproxy端口转发,可以访问以下内容:

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

配置入口资源

注意 Kubernetes集群可能没有正确的基础设施组件来启用LoadBalancer服务类型或入口资源。在使用这些配置选项之前,请验证您的集群是否具有适当的支持。

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

要配置frontendproxy组件使用入口资源来使用入口资源,您将在值文件中指定以下内容:

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

某些入口控制器可能需要特殊注释或服务类型。有关更多信息,请参阅入口控制器的文档。

配置服务类型

每个演示组件(例如:frontendproxy)都提供了一种配置其Kubernetes服务类型的方法。默认情况下,这些设置将为ClusterIP,但您可以使用每个组件的service.type属性更改它们。

要配置frontendproxy组件使用LoadBalancer服务类型,请在您的值文件中指定以下内容:

components:
  frontendProxy:
    service:
      type: LoadBalancer

配置浏览器遥测

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

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

使用值文件进行安装

要使用自定义的my-values-file.yaml值文件安装Helm图表,请使用以下命令:

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

通过暴露frontendproxy和Collector,您可以通过前端代理的基本路径访问演示UI。其他演示组件可以通过以下子路径访问:

  • Web商店:/(基本路径)
  • Grafana: /grafana
  • 功能标志UI: /feature
  • 负载生成器UI: /loadgen/(必须包含尾随斜杠)
  • Jaeger用户界面: /jaeger/ui

使用自己的后端

您可能希望将Web商店作为一个演示应用程序,用于现有的可观测性后端(例如:Jaeger、Zipkin或您选择的供应商的现有实例)。

OpenTelemetry Collector的配置在Helm图表中是可访问的。您所做的任何补充都将与默认配置合并。您可以使用此功能添加自己的导出器,并将其添加到所需的管道中。

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

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

供应商后端可能要求您添加其他参数进行身份验证,请查阅其文档。某些后端可能需要不同的导出器,您可以在opentelemetry-collector-contrib/exporter上找到它们及其文档。

要使用自定义的my-values-file.yaml值文件安装Helm图表,请使用以下命令:

helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml
最后修改 December 10, 2023: translate (a4350d6e)