New Relic Agent Control avec Terraform offre une solution puissante et déclarative pour gérer des flottes d’agents à grande échelle. En utilisant conjointement Terraform et Agent Control, vous pouvez garantir une approche cohérente, reproductible, et évolutive pour déployer l’instrumentation New Relic sur toute votre infrastructure, en particulier lorsque vous gérez plusieurs clusters Kubernetes.
Prérequis
Avant de commencer, assurez-vous d’avoir les éléments suivants :
Outils requis :
- Terraform installé sur votre machine.
- Helm 3 installé sur votre machine. Pour les instructions d'installation, voir Installation de Helm.
- Fournisseur Terraform Helm inclus dans votre script de configuration Terraform pour que l'installation fonctionne.
Informations d'identification de New Relic :
- Clé de licence New Relic : Vous aurez besoin d'une clé de licence New Relic pour signaler la télémétrie à votre compte New Relic.
- Clé utilisateur New Relic : vous aurez besoin de votre clé utilisateur New Relic si vous n'avez pas déjà récupéré votre clé et votre secret
clientID.
Détails de configuration :
- ID d'organisation New Relic : Le New Relic
OrgIdidentifiera l'organisation auprès de laquelle vous obtenez votre clé d'identification client et votre secret. - Autorisations de l’utilisateur : votre utilisateur a besoin des autorisations appropriées pour créer une identité système. Cela nécessite généralement le rôle Gestionnaire de domaine d’authentification ou New Relic Control.
- Nom du cluster Kubernetes : préparez le nom de votre cluster Kubernetes, car il sera référencé pendant le processus d’installation.
- ID d'organisation New Relic : Le New Relic
Conseil
Lors de la configuration d’un nouveau cluster avec Terraform, assurez-vous d’utiliser le même nom de cluster lors de l’installation d’Agent Control.
Compatibilité Kubernetes
Pour savoir quelles versions de Kubernetes sont compatibles avec cette solution, reportez-vous à la section compatibilité dans l'aperçu.
Installation
Si vous n'avez pas vos clientId et clientSecret, utilisez l'appel d'API NerdGraph suivant pour les générer. Cela nécessite votre clé d'administrateur d'utilisateur New Relic et votre ID d'organisation.
$curl -X POST \> https://api.newrelic.com/graphql \> -H 'Content-Type: application/json' \> -H 'x-api-key: [INSERT_USER_API_KEY]' \> --data-raw '{"query": "mutation SICreate { systemIdentityCreate(name: \"User Key for Agent Control\" organizationId: \"[INSERT_YOUR_ORG_ID]\") { clientId clientSecret } }"}' \> --compressedDans la commande, remplacez les valeurs d'espace réservé par votre organizationId et votre clé utilisateur. Cela renvoie les informations d'identification requises que vous utiliserez dans votre fichier de configuration.
Étape 1 : Créez votre répertoire de projet
Créez un répertoire pour votre projet et placez votre fichier main.tf à l'intérieur. C'est ici que vous définirez vos ressources Terraform. Confirmez que vous avez ajouté le fournisseur Helm à votre fichier Terraform.
Étape 2 : Configurer Terraform avec la sortie Helm
Configurez votre script Terraform avec une sortie Helm qui utilise les graphiques de New Relic pour le contrôle des agents. L'exemple suivant montre une configuration de base :
provider "helm" { kubernetes { config_paths = [ "~/.kube/config" ] }}
resource "helm_release" "newrelic" { name = "agent-control" repository = "https://newrelic.github.io/helm-charts/" chart = "agent-control" namespace = "newrelic" create_namespace = "true"
values = [ file("./values-newrelic.yaml") ]}Notez que le script Terraform fait référence à un fichier values-newrelic.yaml . Il s'agit du fichier de configuration de contrôle de l'agent New Relic qui sera utilisé pour configurer le contrôle de l'agent. Il n’est pas nécessaire qu’il se trouve dans le même répertoire que le script Terraform. Vous pouvez le référencer à partir de n'importe quel emplacement en fournissant le chemin correct dans la fonction file() dans l'attribut values de la ressource helm_release .
Ou, si vous placez le fichier values-newrelic.yaml directement dans le répertoire du projet Terraform, le script main.tf le référencera automatiquement.
Voici un exemple de fichier values-newrelic.yaml de base sans configuration supplémentaire incluse :
global: cluster: [YOUR_CLUSTER_NAME] licenseKey: [YOUR_INGEST_LICENSE_KEY]
agentControlDeployment: chartValues: systemIdentity: organizationId: [ORG_ID] parentIdentity: clientId: [YOUR_IDENTITY_CLIENT_ID] clientSecret: [YOUR_IDENTITY_CLIENT_SECRET] config: fleet_control: # optional fleet_id: [YOUR_FLEET_ENTITY_GUID] log: level: tracePour explorer tous les paramètres de configuration disponibles, reportez-vous à values-newrelic.yaml.
Étape 3 : Exécuter les commandes Terraform
Initialisez Terraform, examinez le plan et appliquez les modifications.
$# Initialize Terraform$terraform init$# Review the changes before applying$terraform plan$# Apply the changes to your cluster$terraform applyÉtape 5 : Vérifier l’installation
Vérifiez que le module de contrôle de l'agent et tous les agents configurés fonctionnent correctement dans leur espace de nommage respectif.
$# Check Agent Control pods$kubectl get pods -n newrelic$# Check pods in the agent namespace, e.g., 'newrelic-agents'$kubectl get pods -n newrelic-agentsConfiguration
Dans le fichier values-newrelic.yaml , vous pouvez configurer Agent Control pour déployer plusieurs agents de monitoring. Voici un exemple montrant le déploiement de plusieurs agents, notamment :
- Infrastructure : agent infrastructure de New Relic
- Logs : agent de logs de Fluent Bit
- OpenTelemetry: la distribution New Relic du Collector OpenTelemetry
- Gateway : agent de gateway New Relic Contrôle de pipeline
agentControlDeployment: chartValues: systemIdentity: organizationId: "****" parentIdentity: clientId: [YOUR_IDENTITY_CLIENT_ID] clientSecret: [YOUR_IDENTITY_CLIENT_SECRET] config: agents: infrastructure: agent_type: newrelic/com.newrelic.infrastructure:0.1.0 logs: agent_type: newrelic/io.fluentbit:0.1.0 agent-operator: agent_type: com.newrelic.k8s_agent_operator:0.1.0 open-telemetry: agent_type: newrelic/com.newrelic.opentelemetry.collector:0.1.0 gateway: agent_type: newrelic/com.newrelic.pipeline_control_gateway:0.1.0 agentsConfig: infrastructure: chart_version: "*" chart_values: newrelic-infrastructure: enableProcessMetrics: true logs: # Ref: `https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-logging` # Recommended: check and define an explicit chart version (latest stable) chart_version: "*" chart_values: newrelic-logging: sendMetrics: true agent-operator: chart_version: "*" open-telemetry: # Ref: `https://github.com/newrelic/helm-charts/blob/master/charts/nr-k8s-otel-collector/values.yaml` # Recommended: check and define an explicit chart version (latest stable) chart_version: "*" chart_values: nr-k8s-otel-collector: receivers.filelog.enabled: false gateway: chart_version: "*" chart_values: gateway: autoscaling: minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 70Important
Important : pour l'environnement de production, nous recommandons fortement d'utiliser un chart_version spécifique et épinglé au lieu d'un caractère générique (*). Cela garantit des mises à jour cohérentes et prévisibles, évitant ainsi tout comportement inattendu ou toute modification radicale.
Désinstaller
Important
Supprimer une ressource de sortie Helm de votre configuration Terraform est une action destructrice. Lorsque vous exécutez terraform apply après cette modification, Terraform désinstallera le graphique et détruira toutes les ressources associées, ce qui peut entraîner une perte de données. Avant de procéder, assurez-vous de bien comprendre l’impact potentiel sur votre environnement :
- Passez en revue toutes les dépendances et tous les services qui pourraient être touchés.
- Pensez à sauvegarder toutes les données persistantes ou la configuration liée à la sortie.
- Confirmez que la suppression de cette sortie est nécessaire et correspond à votre stratégie de gestion infrastructure . Soyez toujours prudent lorsque vous apportez des modifications importantes à votre infrastructure et assurez-vous de disposer de procédures de restauration appropriées en cas de problème.
Pour désinstaller Agent Control :
- Supprimez le bloc de ressources
helm_releasepournewrelic_agent_controlde votre fichiermain.tf. - Exécutez
terraform planpour examiner les modifications. Examinez attentivement la sortie du plan pour vous assurer que seules les ressources prévues sont marquées pour suppression. - Exécutez
terraform applyet confirmez l'exécution pour désinstaller la sortie. Cela mettra en œuvre les modifications prévues, supprimant ainsi efficacement la sortie Helm spécifiée de votre environnement.
Confirmez l'exécution lorsque vous êtes invité à terminer le processus de désinstallation.