L'auto-attachement APM Kubernetes , anciennement connu sous le nom d'opérateur d'agent Kubernetes , rationalise l'observabilité full-stack pour les environnements Kubernetes en automatisant instrumentation APM parallèlement au déploiement de l'agent Kubernetes . En activant l'auto-instrumentation, les développeurs n'ont plus besoin de gérer manuellement les agents APM. La connexion automatique de Kubernetes APM installera, mettra à niveau et supprimera automatiquement les agents APM.
Il prend actuellement en charge Java, .NET, Node.js, Python, Ruby et PHP.
Comment ça marche
Le
MutatingWebHook
, lors de l'installation, est impliqué dans l'interception requests API pour le pod Déplacer sur les nœuds.Reflétant la configuration spécifiée, il mute la spécification pod pour ajouter un conteneur d'initialisation NR et des variables d'environnement.
Une fois le pod créé, l'agent New Relic APM est parfaitement intégré à l'application qu'il héberge.

Avant de commencer
Avant d'installer l'opérateur, vérifiez les points suivants :
Helm: Vous devez l'installer pour utiliser les cartes. Consultez la documentation Helm si vous avez besoin d'aide pour démarrer.
Kubectl: Vous devez le configurer pour communiquer avec votre cluster.
installation
En fonction de vos besoins, vous pouvez choisir d'installer l'auto-attachement Kubernetes APM indépendamment ou avec notre intégration Kubernetes .
Nous vous recommandons fortement de l'installer avec l'intégration Kubernetes pour profiter de toute notre expérience full-stackd'observabilité .
Installation du bundle en plus de l'intégration Kubernetes (recommandé)
Le graphique d'attachement automatique Kubernetes APM fait partie du graphique nri-bundle
, qui gère l'installation de tous les composants nécessaires pour permettre une observabilité complète de Kubernetes.
Ajoutez le paramètre k8s-agents-operator.enabled=true
à votre commande helm ou incluez-le dans le fichier values.yaml
. Consultez la page Installer l’intégration Kubernetes pour plus d’informations sur l’utilisation de Helm ou consultez le graphique nri-bundle
.
Voir cet exemple de commandes Helm utilisant des paramètres :
$helm repo add newrelic https://helm-charts.newrelic.com$
$helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --set global.licenseKey=YOUR_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.enabled=true \> --set kubeEvents.enabled=true \> --set k8s-agents-operator.enabled=true \> --create-namespace
Installation autonome
Pour installer la connexion automatique Kubernetes APM avec la configuration par défaut, exécutez ces commandes :
$helm repo add k8s-agents-operator https://newrelic.github.io/k8s-agents-operator$helm upgrade --install k8s-agents-operator k8s-agents-operator/k8s-agents-operator \> --namespace newrelic \> --create-namespace \> --set licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY
Pour une liste complète des options de configuration, consultez le tableau README .
Configurer l'auto-instrumentation
Une fois la connexion automatique APM configurée dans votre cluster, l’étape suivante consiste simplement à déployer les configurations requises pour la rendre opérationnelle. Cela implique d’avoir au moins une ressource personnalisée d’instrumentation (CR) active dans le cluster.
Voici ce que l'instrumentation CR vous permet de cartographier :
- Nom de l'instrumentation CR
- Où appliquera l'instrumentation CR (merci à
podLabelSelector
etnamespaceLabelSelector
) - Agent APM (un par CR)
- Version de l'agent APM
- Paramètres de configuration APM (variables d'environnement)
- clé de licence (optionnel)
Le fichier manifeste doit être injecté dans le même espace de nommage (newrelic
par défaut) où vous avez installé APM auto-attach.
$kubectl apply -f ./values.yaml -n newrelic
Comment utiliser les sélecteurs
Pour savoir quand l'instrumentation CR va injecter des agents APM, nous devons utiliser des sélecteurs. Il existe 2 sélecteurs d'étiquettes disponibles que vous pouvez utiliser ensemble (ils agissent comme un opérateur logique AND (&&
)) ou séparément selon vos besoins.
PodLabelSelector
informe l'APM Auto-attach quel pod doit être instrumenté.Exemple utilisant
matchLabel
(sélectionner un pod contenant une tag et une valeur spécifiques) :...podLabelSelector:matchLabels:app.kubernetes.io/name: flask-hello-world...NameSpaceLabelSelector
définit au niveau de l'espace de nommage le pod auto-instrumenté.Exemple utilisant
matchExpressions
(sélectionnez un espace de nommage contenant une tag et une valeur spécifiques) :...namespaceLabelSelector:matchExpressions:- key: "kubernetes.io/metadata.name"operator: "In"values: ["backend"]...CONSEIL
Gardez à l'esprit qu'appliquer l'étiquette
kubernetes.io/metadata.name
revient à sélectionner en fonction du nom de l'espace de nommage.
Les deux sélecteurs prennent en charge matchLabel
et matchExpressions
.
Agent APM
Vous devez spécifier l'agent APM et sa version dans le CR d'instrumentation. Nous vous recommandons d'utiliser la dernière version pour profiter des dernières fonctionnalités disponibles.
Langue | Image | Versions disponibles |
---|---|---|
dotnet |
| |
Java |
| |
NodeJS |
| |
python |
| |
rubis |
| |
php |
|
Voir cet exemple :
...spec: agent: language: dotnet image: newrelic/newrelic-dotnet-init:latest...
Paramètres de configuration APM
L'instrumentation CR offre la possibilité d'injecter des variables d'environnement dans le pod pour rationaliser la configuration des agents APM. Voir cet exemple :
...spec: env: # Example overriding the appName configuration by using a label of the pod - name: NEW_RELIC_APP_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/name']...
Dans l'exemple ci-dessus, nous vous montrons comment configurer les paramètres de l'agent globalement à l'aide de variables d'environnement. Consultez la documentation de configuration de chaque agent pour connaître les options de configuration disponibles :
Important
Vous pouvez injecter ces variables d’environnement dans le manifeste de déploiement de l’application.
clé de licence (optionnel)
Lorsque vous l'installez, un est créé et c'est la licence par défaut. Suivez ces étapes si vous devez envoyer la télémétrie APM à un autre compte :
Pour créer un secret contenant une nouvelle clé de licence, exécutez cette commande :
bash$kubectl create secret generic newrelic-key-secret \>--namespace my-monitored-namespace \>--from-literal=new_relic_license_key=YOUR_NEW_RELIC_INGEST_LICENSE_KEYPour référencer le secret du CR d'instrumentation, exécutez cette commande :
...spec:licenseKeySecret: the-name-of-the-custom-secret...
Exemples d'instrumentation CR
Mettre à jour l'instrumentation APM dans les applications
Par défaut, la connexion automatique Kubernetes APM installe automatiquement la dernière version disponible de l' agent APM correspondant.
Une fois la monitoring d'une application démarrée, elle n'est pas automatiquement mise à jour vers une version plus récente, sauf si vous choisissez de la mettre à jour. Vous pouvez mettre à jour l'application en redéployant le pod ou en redémarrant votre déploiement.
Supprimer l'instrumentation APM dans les applications
Pour supprimer l'instrumentation APM d'une application, vous devez modifier le sélecteur d'étiquette correspondant à l'intérieur du podLabelSelector
ou namespaceLabelSelector
utilisé ou supprimer le CR d'instrumentation. Ensuite, redémarrez le déploiement. Le processus de suppression ne prend que quelques secondes.
Mettre à jour l'auto-attachement de Kubernetes APM
Installation du bundle
Exécutez une mise à jour du graphique nri-bundle
avec le paramètre suivant :
$k8s-agents-operator.enabled=true
Installation autonome
Exécutez la commande helm upgrade
pour mettre à jour vers une version plus récente de la connexion automatique Kubernetes APM.
$helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic
Désinstallation de l'auto-attachement Kubernetes APM
Installation du bundle
Désinstallez le graphique nri-bundle
ou, si vous souhaitez uniquement supprimer la connexion automatique de Kubernetes APM, exécutez une mise à niveau de Helm avec le paramètre suivant :
$k8s-agents-operator.enabled=false
Installation autonome
Pour désinstaller et supprimer la connexion automatique Kubernetes APM, exécutez cette commande :
$helm uninstall k8s-agents-operator -n newrelic
Rechercher et utiliser des données
Obtenez des informations détaillées sur vos applications et résolvez les incidents grâce à la page récapitulative de l'APM .
Consultez la page récapitulative de Kubernetes . Il fournit des informations Kubernetes détaillées dans le cadre de vos applications de monitoring.
Certificats
L'attachement automatique de Kubernetes APM peut prendre en charge cert-manager
si vous le préférez.
Exécutez cette commande pour installer la carte Helm
cert-manager
:bash$helm install cert-manager jetstack/cert-manager \>--namespace cert-manager \>--create-namespace \>--set crds.enabled=trueDans votre fichier
values.yaml
, définissezadmissionWebhooks.autoGenerateCert.enabled: false
etadmissionWebhooks.certManager.enabled: true
. Ensuite, installez la carte normalement.
Sortie de carte disponible
Exécutez cette commande pour voir les graphiques disponibles :
$helm search repo k8s-agents-operator
Questions fréquemment posées
Dépannage
Si vos applications ne sont pas instrumentées, vous devez vérifier les points suivants :
Assurez-vous de redéployer ou de déployer de nouvelles applications après avoir installé la connexion automatique de Kubernetes APM. Notez que seules les nouvelles applications auto-instrumentées sont déployées dans le cluster.
Exécutez cette commande pour vérifier que le secret est installé dans l'espace de nommage de l'application :
bash$kubectl get secrets -n NAMESPACEVérifiez que le pod possède les étiquettes requises qui permettent l'instrumentation automatique via CR lors de l'utilisation
podLabelSelector
. De même, vérifiez que l'espace de nommage possède les étiquettes requises lors de l'utilisationnamespaceLabelSelector
à l'intérieur du CR.bash$kubectl get pod POD_NAME -n NAMESPACE -o jsonpath='{.metadata.annotations}'Exécutez cette commande pour obtenir le log du pod de connexion automatique APM :
bash$kubectl logs AGENT_OPERATOR_POD -n newrelicExécutez cette commande pour vous assurer que le conteneur
init
a été injecté et exécuté avec succès dans le pod de l'application.bash$kubectl describe pod POD_NAME -n NAMESPACE
Comment migrer à partir de versions précédentes nécessitant des annotations
À partir de la version 0.14, les annotations dans le manifeste de déploiement de l'application ne sont plus nécessaires pour que les applications soient auto-instrumentées.
Il est conseillé de désinstaller toutes les versions antérieures à 0.14 et de procéder à l'installation de la dernière sortie. L'utilisation des sélecteurs d'étiquettes dans l'instrumentation CR permettra le déploiement précis des agents APM, éliminant ainsi le besoin d'annotations.
Soutien
La connexion automatique de Kubernetes APM prend en charge les langues suivantes et leurs versions minimales prises en charge conformément à notre politique de prise en charge standard de l'agent APM :
- Agent Java : 8.12
- Agent .NET : 10.25
- Agent Ruby : 9.10
- Agent Node.js : 11.9
- Python : 9.10
- PHP: 11.12
Pour tout problème :
Consultez la section Problèmes sur GitHub pour tout problème similaire ou envisagez d'ouvrir un nouveau problème.
Vous pouvez contacter l'équipe d'assistance New Relic pour obtenir de l'aide.