• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Crea una propuesta

Vincular la aplicación instrumentada APMa Kubernetes

Puede mostrar los metadatos Kubernetes y vincularlos a su agente APM como rastreo distribuido para explorar problemas de rendimiento y solucionar errores de transacción. Para obtener más información, consulte esta publicación de blog sobre monitoreo del rendimiento de aplicaciones a través de Kubernetes.

El producto de inyección de metadatos utiliza un MutatingAdmissionWebhook para agregar las siguientes variables de entorno al pod:

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME
NEW_RELIC_METADATA_KUBERNETES_DEPLOYMENT_NAME
NEW_RELIC_METADATA_KUBERNETES_POD_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_IMAGE_NAME

Sugerencia

Nuestro proyecto de inyección de metadatos de Kubernetes es de código abierto. Aquí está el código para vincular APM y datos de infraestructura.

Compatibilidad y requisitos

Para vincular su aplicación y Kubernetes, debe poder desplegar MutatingWebhookConfigurations en su clúster de Kubernetes.

Para verificar que tiene los permisos requeridos, puede ejecutar el siguiente comando:

bash
$
kubectl auth can-i create mutatingwebhookconfigurations.admissionregistration.k8s.io -A

El resultado del comando anterior debería ser algo similar a:

yes

Si ve un resultado diferente, siga la documentación de Kubernetes para habilitar el control de admisión en su clúster.

Requisitos de red

Para que Kubernetes se comunique con nuestro MutatingAdmissionWebhook, se debe permitir la salida del nodo maestro (o el contenedor del servidor API , dependiendo de cómo esté configurado el clúster) para que el tráfico HTTPS en el puerto 443 llegue a todos los demás nodos del clúster. .

Esto puede requerir una configuración específica dependiendo de cómo esté configurada la infraestructura (local, AWS, Google Cloud, etc.).

APM compatibilidad del agente

El siguiente agente New Relic recopila metadatos Kubernetes :

Configurar la inyección de metadatos

La inyección de metadatos se incluye cuando instala nuestra integración usando Helm. Solo asegúrese de que, cuando esté configurando el gráfico nri-bundle , el webhook que inyecta los metadatos esté habilitado:

nri-metadata-injection:
enabled: true

Será necesario reiniciar el pod de su aplicación después de desplegar el webhook, para que puedan recoger las variables de entorno necesarias.

De forma predeterminada, todos los pods que cree que incluyan el agente APM tienen configuradas las variables de entorno correctas y la inyección de metadatos se aplica a todo el clúster. Para comprobar que se han configurado las variables de entorno, se debe detener cualquier contenedor que se esté ejecutando e iniciar una nueva instancia (consulte Validar la inyección de metadatos).

Esta configuración predeterminada también utiliza la API de certificados de Kubernetes para administrar automáticamente los certificados necesarios para la inyección. Si es necesario, puedes limitar la inyección de metadatos a espacios de nombres específicos en tu clúster o autogestionar tus certificados.

Configuración personalizada

Limitar el espacio de nombres sujeto a inyección

Puede limitar la inyección de metadatos solo a un espacio de nombres específico mediante el uso de etiquetas.

Para habilitar esta característica, agregue lo siguiente al archivo values-newrelic.yaml :

nri-metadata-injection:
injectOnlyLabeledNamespaces: true

Con esta opción, la inyección solo se aplica a aquellos espacios de nombres que tienen la etiqueta newrelic-metadata-injection establecida en enabled:

bash
$
kubectl label namespace YOUR_NAMESPACE newrelic-metadata-injection=enabled

Utilice cert-manager para generar certificados

De forma predeterminada, nuestro gráfico utiliza kube-webhook-certgen para generar automáticamente los certificados necesarios para que se ejecute el webhook.

Sin embargo, si tiene instalado cert-manager , puede configurar nuestro gráfico para usar cert-manager en su lugar, lo que puede simplificar significativamente el proceso de implementación:

nri-metadata-injection:
certManager:
enabled: true

Administrar certificados personalizados

Sugerencia

Se recomienda administrar manualmente los certificados de webhook solo para usuarios avanzados. Es posible que el equipo de soporte New Relic no pueda ayudar a resolver los problemas de esta configuración.

Para utilizar certificados personalizados, debe desactivar la instalación automática de certificados cuando realiza la instalación mediante Helm.

Para deshabilitar la instalación de certificados, simplemente modifique nri-bundle Helm values.yaml de esta manera:

nri-metadata-injection:
customTLSCertificate: true

Ahora puede continuar con la opción de gestión de certificados personalizados.

Necesita su certificado, clave de servidor y paquete de autoridad de certificación (CA) codificados en formato PEM.

  • Si los tiene en el formato de certificado estándar (X.509), instale openssl y ejecute lo siguiente:
bash
$
openssl x509 -in YOUR_CERTIFICATE_FILENAME -outform PEM -out YOUR_CERTIFICATE_FILENAME.pem
$
openssl x509 -in YOUR_SERVER_KEY_FILENAME -outform PEM -out YOUR_SERVER_KEY_FILENAME.pem
$
openssl x509 -in YOUR_CA_BUNDLE_FILENAME -outform PEM -out YOUR_BUNDLE_FILENAME.pem

Cree el secreto TLS con el par de claves/certificado firmado y parchee la configuración del webhook mutante con la CA mediante los siguientes comandos:

bash
$
kubectl create secret tls YOUR_NEWRELIC_METADATA_INJECTION_ADMISSION \
>
--key=YOUR_PEM_ENCODED_SERVER_KEY \
>
--cert=YOUR_PEM_ENCODED_CERTIFICATE \
>
--dry-run -o yaml |
$
kubectl -n newrelic apply -f -
$
$
caBundle=$(cat YOUR_PEM_ENCODED_CA_BUNDLE | base64 | td -d $'\n')
$
kubectl patch mutatingwebhookconfiguration newrelic-metadata-injection-cfg --type='json' -p "[{'op': 'replace', 'path': '/webhooks/0/clientConfig/caBundle', 'value':'${caBundle}'}]"

Importante

Los certificados firmados por Kubernetes tienen una caducidad de un año. Para obtener más información, consulte el código fuente de Kubernetes en GitHub.

Validar la inyección de metadatos.

Para validar que el webhook (responsable de inyectar los metadatos) se instaló correctamente, despliegue un nuevo pod y verifique las variables de entorno New Relic .

  1. Cree un pod nginx ficticio ejecutando:

    bash
    $
    kubectl run test-nginx --image nginx -n newrelic
  2. Compruebe si se inyectaron variables de entorno de New Relic:

    bash
    $
    kubectl exec -n newrelic test-nginx -- env | grep NEW_RELIC_METADATA_KUBERNETES

El resultado esperado sería algo como lo siguiente:

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME=THE_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME=nodea
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME=newrelic
NEW_RELIC_METADATA_KUBERNETES_POD_NAME=test-nginx
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME=nginx

Deshabilitar la inyección de metadatos

Para deshabilitar/desinstalar la inyección de metadatos, cambie su archivo values-newrelic.yaml de la siguiente manera:

webhook:
enabled: false

Y vuelva a ejecutar el comando de instalación.

Resolución de problemas

Siga estos consejos de resolución de problemas según sea necesario.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.