• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Lier les applications instrumentées APM à Kubernetes

Vous pouvez faire apparaître les métadonnées Kubernetes et les lier à vos agents APM sous forme de traces distribuées pour explorer les problèmes de performances et résoudre les erreurs de transaction. Pour plus d'informations, consultez cet article de blog sur le monitoring des performances des applications via Kubernetes.

Le produit injection métadonnée utilise un MutatingAdmissionWebhook pour ajouter les variables d'environnement suivantes au 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

Conseil

Notre projet d'injection de métadonnées Kubernetes est open source. Voici le code pour lier les données APM et d'infrastructure.

Compatibilité et exigences

Pour connecter vos applications à Kubernetes, vous devez pouvoir déployer « MutatingWebhookConfiguration » sur votre cluster Kubernetes.

Pour vérifier que vous disposez des autorisations requises, exécutez cette commande :

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

Le résultat de la commande ci-dessus devrait ressembler à :

bash
$
yes

Si vous voyez un résultat différent, suivez la documentation Kubernetes pour activer le contrôle d'admission dans votre cluster.

Exigences réseau

Pour que Kubernetes puisse communiquer avec notre MutatingAdmissionWebhook, le nœud control plane (ou le conteneur du serveur API, selon la configuration du cluster ) doit autoriser la sortie du trafic HTTPS sur le port 443 vers le pod de tous les autres nœuds du cluster.

Cela peut nécessiter une configuration spécifique en fonction de la configuration de votre infrastructure (sur site, AWS, Google Cloud, etc.).

Compatibilité de l'agent APM

Les agents New Relic suivants collectent les métadonnées Kubernetes :

Configurer l'injection de métadonnées

Lorsque vous installez notre intégration à l’aide de Helm, elle inclut l’injection de métadonnées. Lors de la configuration du graphique nri-bundle , assurez-vous d'activer le webhook d'injection de métadonnées comme suit.

nri-metadata-injection:
enabled: true

Important : votre pod d'application devra être redémarré après le déploiement de nri-metadata-injection, afin qu'il puisse récupérer les variables d'environnement nécessaires.

Par défaut, tous les pods que vous créez qui incluent des agents APM ont les variables d'environnement correctes définies et l' injection de métadonnées s'applique à l'ensemble cluster. Pour vérifier que les variables d'environnement ont été définies, tout conteneur en cours d'exécution doit être arrêté et une nouvelle instance démarrée. Voir Valider l'injection de métadonnées pour plus d'informations.

Cette configuration par défaut utilise également l' API des certificats Kubernetes pour gérer automatiquement les certificats requis pour l'injection. Si besoin, vous pouvez limiter l' injection de métadonnées à un espace de nommage spécifique de votre cluster ou autogérer vos certificats.

Configuration personnalisée

Limiter l'espace de nommage soumis à injection

Vous pouvez limiter l' injection de métadonnées uniquement à un espace de nommage spécifique en utilisant des étiquettes.

Pour activer cette fonctionnalité, ajoutez ce qui suit au fichier values-newrelic.yaml :

nri-metadata-injection:
injectOnlyLabeledNamespaces: true

Avec cette option, injection est uniquement appliquée aux espaces de nommage dont l'étiquette newrelic-metadata-injection est définie sur enabled:

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

Utilisez cert-manager pour générer des certificats

Par défaut, notre graphique utilise kube-webhook-certgen pour générer automatiquement les certificats requis pour l'exécution du webhook.

Cependant, si vous avez installé cert-manager , vous pouvez configurer notre graphique pour l'utiliser à la place, ce qui peut rendre le déploiement beaucoup plus facile :

nri-metadata-injection:
certManager:
enabled: true

Gérer les certificats personnalisés

Conseil

La gestion manuelle des certificats webhook est recommandée uniquement aux utilisateurs avancés. L'équipe d'assistance de New Relic ne pourra peut-être pas vous aider à résoudre ce configuration.

Pour utiliser des certificats personnalisés, vous devez désactiver l'installation automatique des certificats lorsque vous effectuez l'installation à l'aide de Helm.

Pour désactiver l'installation des certificats, modifiez simplement nri-bundle Helm values.yaml comme ceci :

nri-metadata-injection:
customTLSCertificate: true

Vous pouvez maintenant procéder à l’option de gestion des certificats personnalisés. Vous avez besoin de votre certificat, de votre clé de serveur et de votre ensemble d'autorité de certification (CA) codés au format PEM.

  • Si vous les avez au format de certificat standard (X.509), installez openssl et exécutez ce qui suit :

    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 votre certificat et votre paire de clés sont dans un autre format, consultez la base de connaissances Digicert pour obtenir de l'aide.

Créez le secret TLS avec la paire certificat/clé signée et corrigez la configuration du webhook en mutation avec l'autorité de certification à l'aide des commandes suivantes :

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}'}]"

Important

Les certificats signés par Kubernetes ont une durée d'expiration d'un an. Pour plus d'informations, consultez le code source de Kubernetes sur GitHub.

Valider l'injection de métadonnées

lancer un nouveau pod et vérifier les variables d'environnement New Relic pour vérifier la bonne installation du webhook responsable de l'injection du fichier méta.

  1. Créez un pod nginx factice en exécutant :

    bash
    $
    kubectl run test-nginx --image nginx -n newrelic
  2. Vérifiez si les variables d’environnement New Relic ont été injectées :

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

Le résultat attendu serait quelque chose comme ce qui suit :

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

Désactiver l'injection de métadonnées

Pour désinstaller l'injection de métadonnées, modifiez votre fichier values-newrelic.yaml comme suit :

webhook:
enabled: false

Après cela, exécutez à nouveau la commande d’installation.

Dépannage

Suivez ces conseils de dépannage si nécessaire.

Droits d'auteur © 2025 New Relic Inc.

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