avance
Todavía estamos trabajando en esta característica, ¡pero nos encantaría que la probaras!
El operador de agente Kubernetes agiliza la observabilidad de todo el stack para entornos Kubernetes al automatizar la instrumentación APM junto con el despliegue del agente Kubernetes . Al habilitar la instrumentación automática APM , los desarrolladores ya no necesitan gestionar manualmente el agente APM. El operador del agente Kubernetes instalará, actualizará y eliminará automáticamente el agente APM.
Actualmente es compatible con Java, .NET, Node.js, Python y Ruby con lenguajes adicionales (PHP y Go) en camino. Se probó en EKS y en un clúster local que ejecuta nodos AMD.
Antes de que empieces
Antes de instalar el operador, verifique lo siguiente:
- Helm: Debes instalarlo para emplear los gráficos. Consulte la documentación de Helm si necesita ayuda para comenzar.
- Kubectl: Tienes que configurarlo para comunicar con tu clúster.
- Administrador de certificados: debe instalarlo en el clúster.
instalación de la cert-manager
dependencia
Para instalar la dependencia del administrador de certificados, ejecute estos comandos:
$helm repo add jetstack https://charts.jetstack.io$helm install cert-manager jetstack/cert-manager \> --namespace cert-manager \> --create-namespace \> --set crds.enabled=true
instalación del operador agente Kubernetes
Dependiendo de lo que necesites, puedes optar por instalar el agente operador de forma independiente o junto con nuestra integración K8s.
Recomendamos encarecidamente instalarlo junto con la integración Kubernetes para aprovechar toda nuestra experiencia de observabilidad de todo el stack .
Instalación del paquete además de la integración Kubernetes (recomendado)
El gráfico del operador del agente de Kubernetes está integrado como parte del gráfico nri-bundle , que gestiona la instalación de todos los componentes necesarios para permitir una observabilidad completa de Kubernetes.
Agregue el parámetro k8s-agents-operator.enabled=true
a su comando de timón o inclúyalo en un archivo values.yaml
.
Consulte la página Instalar la integración de Kubernetes para obtener más información sobre el uso de Helm o consulte el gráfico de nri-bundle .
Vea este ejemplo del comando Helm usando el parámetro:
$helm repo add newrelic https://helm-charts.newrelic.com$
$helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --set global.licenseKey=<NEW RELIC INGEST LICENSE KEY> \> --set global.cluster=<CLUSTER_NAME> \> --namespace=newrelic \> --set newrelic-infrastructure.privileged=true \> --set global.lowDataMode=true \> --set kube-state-metrics.image.tag=${KSM_IMAGE_VERSION} \> --set kube-state-metrics.enabled=true \> --set kubeEvents.enabled=true \> --set k8s-agents-operator.enabled=true \> --create-namespace
Instalación independiente
Para instalar el operador del agente de Kubernetes con la configuración predeterminada, ejecute estos comandos:
$helm repo add newrelic-k8s https://newrelic.github.io/k8s-agents-operator$helm upgrade --install k8s-agents-operator newrelic-k8s/k8s-agents-operator \> --namespace newrelic \> --create-namespace \> --set licenseKey=<YOUR_NEW_RELIC_INGEST_LICENSE_KEY>
Para obtener una lista completa de opciones de configuración, consulte el cuadro LÉAME .
Configurar un namespace para habilitar al operador
Cada namespace requiere un proceso de dos pasos para permitir la instrumentación automática de la aplicación desplegar dentro de él.
Cree un secreto que contenga una clave de licencia de ingesta de New Relic válida para cada namespace que desee que el operador instrumente.
bash$kubectl create secret generic newrelic-key-secret \>--namespace <NAMESPACE_TO_MONITOR> \>--from-literal=new_relic_license_key=<YOUR_NEW_RELIC_INGEST_LICENSE_KEY>Cerciorar de reemplazar
<YOUR_NEW_RELIC_INGEST_LICENSE_KEY>
con su clave de licencia válida de New Relic.Aplique el siguiente CRD a cada namespace que desee autoinstrumento. Ejecute este comando:
bash$kubectl apply -f <YOUR_YAML_FILE> -n <NAMESPACE_TO_MONITOR>Archivo YAML para aplicar:
apiVersion: newrelic.com/v1alpha1kind: Instrumentationmetadata:labels:app.kubernetes.io/name: instrumentationapp.kubernetes.io/created-by: k8s-agents-operatorname: newrelic-instrumentationspec:java:image: newrelic/newrelic-java-init:latest# env:# Example New Relic agent supported environment variables# - name: NEW_RELIC_LABELS# value: "environment:auto-injection"# Example overriding the appName configuration# - name: NEW_RELIC_POD_NAME# valueFrom:# fieldRef:# fieldPath: metadata.name# - name: NEW_RELIC_APP_NAME# value: "$(NEW_RELIC_LABELS)-$(NEW_RELIC_POD_NAME)"nodejs:image: newrelic/newrelic-node-init:latestpython:image: newrelic/newrelic-python-init:latestdotnet:image: newrelic/newrelic-dotnet-init:latestruby:image: newrelic/newrelic-ruby-init:latest
Habilitar instrumentación APM automática en la aplicación
El operador agente Kubernetes busca anotaciones específicas del idioma al programar su pod para saber qué aplicación monitor.
Vea las anotaciones actualmente admitidas:
$instrumentation.newrelic.com/inject-java: "true"$instrumentation.newrelic.com/inject-nodejs: "true"$instrumentation.newrelic.com/inject-python: "true"$instrumentation.newrelic.com/inject-dotnet: "true"$instrumentation.newrelic.com/inject-ruby: "true"
Vea este ejemplo de implementación con anotación para instrumento el agente de Java:
apiVersion: apps/v1 kind: Deployment metadata: name: spring-petclinic spec: selector: matchLabels: app: spring-petclinic replicas: 1 template: metadata: labels: app: spring-petclinic annotations: instrumentation.newrelic.com/inject-java: "true" spec: containers: - name: spring-petclinic image: ghcr.io/pavolloffay/spring-petclinic:latest ports: - containerPort: 8080 env: - name: NEW_RELIC_APP_NAME value: spring-petclinic-demo
Actualizar instrumentación APM en la aplicación
De forma predeterminada, el operador del agente de Kubernetes instala automáticamente las últimas versiones disponibles del agente APM correspondiente.
Una vez que se monitorea una aplicación, no se actualiza automáticamente a una versión más nueva a menos que el usuario elija actualizar. Puede actualizar la aplicación sin problemas a una versión más nueva simplemente volviendo a implementar el pod o resetear su despliegue.
Eliminar instrumentación APM en la aplicación
Para eliminar la instrumentación de APM en una aplicación, debe eliminar las anotaciones empleadas por el operador del agente de Kubernetes. En unos segundos verás que el agente APM se eliminó automáticamente.
Actualización del operador del agente de Kubernetes
instalación del paquete
Ejecute una actualización del gráfico nri-bundle con el siguiente parámetro:
$k8s-agents-operator.enabled=true
Instalación independiente
Ejecute el comando helm upgrade
para actualizar a una versión más reciente del operador del agente de Kubernetes.
$helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic
Desinstalación del operador del agente de Kubernetes
instalación del paquete
Desinstale el gráfico nri-bundle o, si solo desea eliminar el operador, ejecute una actualización de helm con el siguiente parámetro:
$k8s-agents-operator.enabled=false
Instalación independiente
Para desinstalar y eliminar el operador del agente de Kubernetes, ejecute este comando:
$helm uninstall k8s-agents-operator -n newrelic
Buscar y utilizar datos
- Obtenga información valiosa de su aplicación y resuelva el incidente empleando la página de resumen APM.
- Consulte la página de resumen de Kubernetes . Proporciona Kubernetes información valiosa en el contexto de su aplicación de monitor.
Preguntas frecuentes
Resolución de problemas
Si tu aplicación no está instrumentada, debes verificar lo siguiente:
Cerciorar de volver a implementar o implementar una nueva aplicación después de que se instaló el operador. Tenga en cuenta que el operador solo auto-instrumentado nueva aplicación desplegará en el clúster.
Comprueba que el secreto y la instrumentación CRD estén instalados en el namespace de la aplicación.
bash$kubectl get secrets -n <NAMESPACE>$kubectl get instrumentation -n <NAMESPACE>Compruebe que el pod tenga las anotaciones que permitan la instrumentación automática.
bash$kubectl get pod <POD> -n <NAMESPACE> -o jsonpath='{.metadata.annotations}'Obtenga el registro del pod del operador agente.
bash$kubectl logs <AGENT_OPERATOR_POD> -n newrelicCerciorar de que el contenedor
init
se inyectó y ejecutado correctamente dentro del pod de la aplicación.bash$kubectl describe pod <POD> -n <NAMESPACE>
Apoyo
El operador agente Kubernetes actualmente admite la última versión de estos agentes APM: Java, .NET, Node.js, Pitón y Ruby.
Una vez que el operador esté en disponibilidad general, se admitirán las 3 versiones más recientes de cada uno de los agentes APM .
Para problemas con el operador del agente de Kubernetes:
- Revise la sección de problemas en GitHub para detectar problemas similares o considere abrir un nuevo problema.
- Puede comunicar con el equipo de soporte de New Relic para obtener ayuda.