OpenTelemetry 快速入门
OpenTelemetry 是一个云原生计算基金会(CNCF)的可观测性框架。它使您的微服务能够提供指标、日志和追踪。
SUSE Security Admission Controller 的组件使用 OpenTelemetry SDK 向 OpenTelemetry 收集器(称为代理)报告数据。
本指南解释了如何使用官方 Kubernetes Helm 图表以 sidecar 模式部署 OpenTelemetry 收集器。
这是使用 OpenTelemetry 的简单部署模式。它的最终设置如下:
-
Admission Controller 堆栈(策略服务器、控制器)的每个 Pod 都有一个 OpenTelemetry 侧车。
-
侧车通过 OpenTelemetry 协议(OTLP)从 Admission Controller 组件接收追踪和监控信息。
-
OpenTelemetry 收集器:
-
将追踪事件发送到中央 Jaeger 实例
-
在特定端口上暴露 Prometheus 指标
-
Admission Controller Helm 图表未涵盖 OpenTelemetry 收集器的所有可能部署场景。也可以配置 Admission Controller 将数据发送到 OpenTelemetry 收集器。该场景的文档在自定义 OpenTelemetry 指南中。
您首先在 Kubernetes 集群中部署 OpenTelemetry,以便在接下来的部分中专门处理追踪和指标。
设置 Kubernetes 集群
|
本节提供了创建用于遥测快速入门的 Kubernetes 集群的逐步说明。 如果您已经有可用的 Kubernetes 集群,可以跳过本节。 |
您可以使用minikube创建一个用于测试的 Kubernetes 集群。
Minikube 有许多后端,在这种情况下,您可以使用kvm2驱动程序,该驱动程序依赖于 libvirt。
假设 libvirtd 在您的机器上正确运行,请输入以下命令:
minikube start --driver=kvm2
该命令产生的输出类似于以下内容:
$ minikube start --driver=kvm2
😄 minikube v1.23.2 on Opensuse-Leap 15.3
✨ Using the kvm2 driver based on user configuration
👍 Starting control plane node minikube in cluster minikube
🔥 Creating kvm2 VM (CPUs=2, Memory=6000MB, Disk=20000MB) ...
🐳 Preparing Kubernetes v1.22.2 on Docker 20.10.8 ...
▪ Generating certificates and keys ...
▪ Booting up control plane ...
▪ Configuring RBAC rules ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: storage-provisioner, default-storageclass
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
集群准备好后,您可以继续阅读指南的其余部分。
安装 Traefik
以下遥测指南在使用 Kubernetes Ingress 资源暴露 Jaeger UI 时,将Traefik用作 Ingress 控制器。
通过使用其 Helm 图表安装 Traefik:
helm registry login dp.apps.rancher.io \
--username <your-username> \
--password <your-token>
kubectl create namespace traefik
kubectl create secret docker-registry application-collection \
--namespace traefik \
--docker-server=dp.apps.rancher.io \
--docker-username=<your-username> \
--docker-password=<your-token>
helm install --wait \
--namespace traefik \
--version 41.7.1 \
--set fullnameOverride=traefik \
--set global.imagePullSecrets={application-collection} \
traefik oci://dp.apps.rancher.io/charts/traefik-proxy
以下指南创建一个标准 Kubernetes Ingress``ingressClassName: traefik,并通过 Traefik 服务路由 Jaeger 查询 UI。
如果您不想安装 Traefik,跟踪指南也保留 kubectl port-forward 作为直接访问 Jaeger 的后备方案。
安装 OpenTelemetry
|
请参阅依赖矩阵以获取最新支持的组件版本。 |
您使用OpenTelemetry Operator来管理OpenTelemetry Collector侧车的自动注入到PolicyServer pod中。
OpenTelemetry Operator 需要在集群中安装cert-manager。
kubectl create namespace cert-manager
kubectl create secret docker-registry application-collection \
--namespace cert-manager \
--docker-server=dp.apps.rancher.io \
--docker-username=<your-username> \
--docker-password=<your-token>
helm install --wait \
--namespace cert-manager \
--set crds.enabled=true \
--set global.imagePullSecrets={application-collection} \
--version 1.21.2 \
cert-manager oci://dp.apps.rancher.io/charts/cert-manager
一旦 cert-manager 运行,您可以安装 OpenTelemetry Operator Helm 图表:
|
截至撰写本文时(2024年11月11日),最新的 OpenTelemetry Operator Helm 图表版本为`0.65.0` |
kubectl create namespace open-telemetry
kubectl create secret docker-registry application-collection \
--namespace open-telemetry \
--docker-server=dp.apps.rancher.io \
--docker-username=<your-username> \
--docker-password=<your-token>
helm install --wait \
--namespace open-telemetry \
--version 0.124.1 \
--set global.imagePullSecrets={application-collection} \
--set manager.collectorImage.tag=0.160.0-contrib \
my-opentelemetry-operator oci://dp.apps.rancher.io/charts/opentelemetry-operator