Início rápido de OpenTelemetry

OpenTelemetry é um framework da Cloud Native Computing Foundation (CNCF) para observabilidade. Ele permite que seus microserviços forneçam métricas, logs e rastreamentos.

Os componentes de SUSE Security Admission Controller, usando o SDK OpenTelemetry, relatam dados a um coletor OpenTelemetry — chamado de agente.

Este guia explica como implantar o coletor OpenTelemetry em modo sidecar usando o gráfico Helm oficial do Kubernetes.

Este é um padrão de implantação simples usando OpenTelemetry. A configuração final fica assim:

  • Cada Pod da pilha Admission Controller (PolicyServer, Controlador) possui um sidecar OpenTelemetry.

  • O sidecar recebe informações de rastreamento e monitoramento do componente Admission Controller via o Protocolo OpenTelemetry (OTLP)

  • O coletor OpenTelemetry:

    • Envia os eventos de rastreamento para uma instância central do Jaeger

    • Expõe métricas do Prometheus em uma porta específica

O gráfico Helm Admission Controller não cobre todos os possíveis cenários de implantação do coletor OpenTelemetry. Também é possível configurar Admission Controller para enviar dados a um coletor OpenTelemetry. A documentação para esse cenário está no guia OpenTelemetry personalizado.

Primeiro, você implanta o OpenTelemetry em um cluster Kubernetes, para que possa usá-lo nas seções seguintes que abordam especificamente rastreamento e métricas.

Configurando um cluster Kubernetes

Esta seção contém instruções passo a passo para criar um cluster Kubernetes para os inícios rápidos de telemetria.

Sinta-se à vontade para pular esta seção se você já tiver um cluster Kubernetes disponível.

Você pode criar um cluster Kubernetes para testes usando minikube.

O Minikube possui muitos backends; para este caso, você pode usar o driver kvm2, que depende do libvirt.

Assumindo que libvirtd está rodando corretamente em sua máquina, execute o seguinte comando:

minikube start --driver=kvm2

O comando produz uma saída semelhante à seguinte:

$ 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

Depois que o cluster estiver pronto, você pode continuar com o restante do guia.

Instale o Traefik

Os seguintes guias de telemetria usam Traefik como o controlador Ingress ao expor a interface do usuário do Jaeger com os recursos do Kubernetes Ingress.

Instale o Traefik usando seu gráfico Helm:

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

Os seguintes guias criam um Kubernetes padrão Ingress com ingressClassName: traefik e roteiam a interface do usuário de consulta do Jaeger através do serviço Traefik.

Se você preferir não instalar o Traefik, os guias de rastreamento também mantêm kubectl port-forward como uma alternativa para acessar o Jaeger diretamente.

Instale o OpenTelemetry

Consulte a matriz de dependências para as versões mais recentes dos componentes suportados.

Você usa o Operador OpenTelemetry para gerenciar a injeção automática do sidecar do coletor OpenTelemetry no pod PolicyServer.

O Operador OpenTelemetry requer a instalação do cert-manager no cluster.

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

Uma vez que o cert-manager esteja em execução, você pode instalar o gráfico Helm do operador OpenTelemetry:

No momento da redação (2024-11-11), a versão mais recente do gráfico do operador OpenTelemetry é 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

Integração do OpenTelemetry

Agora você pode passar para os próximos capítulos para habilitar métricas de aplicativo (via integração com Prometheus) e rastreamento de aplicativo (via integração com Jaeger).