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

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

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

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 conectar su aplicación a Kubernetes, debe poder desplegar `MutatingWebhookConfiguration' en su clúster de Kubernetes.

Para verificar que tiene las licencias necesarias, ejecute este comando:

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

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

bash
$
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, el nodo maestro (o contenedor del servidor API , dependiendo de cómo esté configurado el clúster) debe permitir la salida del tráfico HTTPS en el puerto 443 hacia todos los demás nodos del clúster.

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

APM compatibilidad del agente

El siguiente agente New Relic recopila metadatos Kubernetes :

Configurar la inyección de metadatos

Cuando instalas nuestra integración usando Helm, incluye la inyección de metadatos. Al configurar el gráfico nri-bundle , cerciorar de habilitar el webhook de inyección de metadatos de la siguiente manera.

nri-metadata-injection:
enabled: true

Luego de desplegar el webhook, resetear el módulo de su aplicación. Necesitan recoger las variables de entorno requeridas.

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 configuraron las variables de entorno, se debe detener cualquier contenedor en ejecución e iniciar una nueva instancia. Consulte Validar la inyección de metadatos para obtener más información.

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 emplea 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 usarlo en su lugar, lo que puede hacer que desplegar sea mucho más fácil:

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
  • Si su certificado y par de claves están en otro formato, consulte la base de conocimientos de Digicert para obtener más ayuda.

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.

despliegue un nuevo pod y verifique las variables de entorno New Relic para verificar la correcta instalación del webhook responsable de inyectar los metadatos.

  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 desinstalar la inyección de metadatos, cambie su archivo values-newrelic.yaml de la siguiente manera:

webhook:
enabled: false

Luego de eso, 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.