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端口转发,可以访问以下内容:
- Web商店: http://localhost:8080/
- Grafana: http://localhost:8080/grafana/
- 功能标志UI: http://localhost:8080/feature/
- 负载生成器UI: http://localhost:8080/loadgen/
- Jaeger用户界面: http://localhost:8080/jaeger/ui/
使用服务或入口配置暴露演示组件
注意
我们建议您在安装Helm图表时使用值文件来指定其他配置选项。配置入口资源
注意 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]
注意
在使用Helm合并YAML值时,对象会被合并,而数组则会被替换。如果重写了traces
管道的导出器,那么spanmetrics
导出器必须包含在导出器数组中,否则将导致错误。
供应商后端可能要求您添加其他参数进行身份验证,请查阅其文档。某些后端可能需要不同的导出器,您可以在opentelemetry-collector-contrib/exporter上找到它们及其文档。
要使用自定义的my-values-file.yaml
值文件安装Helm图表,请使用以下命令:
helm install my-otel-demo open-telemetry/opentelemetry-demo --values my-values-file.yaml