New Relic Agent Control avec Terraform rend la monitoring à grande échelle avec New Relic encore plus facile, en particulier lorsqu'il s'agit de plusieurs clusters Kubernetes. Avec Terraform et Helm, vous pouvez configurer New Relic Agent Control de manière spécifiée, répétable et évolutive sur l'ensemble de votre infrastructure Kubernetes.
Prérequis
Avant d’utiliser cette intégration dans Terraform, assurez-vous de disposer des éléments suivants :
- Helm 3 : Helm version 3 doit être installé sur votre machine. Pour les instructions d'installation, voir Installation de Helm.
- 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
. - Autorisations de l'utilisateur : votre utilisateur New Relic dispose des rôles de gestionnaire de domaine d'authentification et d'administrateur de produit de l'organisation.
- New Relic OrgId : New Relic
OrgId
identifiera l'organisation auprès de laquelle vous obtenez votre clé d'identification client et votre secret. - Nom du cluster Kubernetes : préparez le nom de votre cluster Kubernetes, car il sera référencé pendant le processus d’installation.
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 du contrôle de l’agent.
- Fournisseur Helm pour Terraform : incluez le fournisseur Helm dans votre script Terraform pour que l'installation fonctionne.
- Terraform : assurez-vous que Terraform est installé sur votre machine.
Compatibilité
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
, récupérez-les à l'aide de l'API NerdGraph suivante :
$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 } }"}' \> --compressed
Dans 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 un répertoire pour votre projet et placez votre fichier main.tf
à l'intérieur. Confirmez que vous avez ajouté le fournisseur Helm à votre fichier Terraform.
Étape 2
Configurez votre script Terraform avec une sortie Helm qui utilise les graphiques de New Relic pour le contrôle des agents. Voir l'exemple de script ci-dessous :
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]
agent-control-deployment: identityClientId: [YOUR_IDENTITY_CLIENT_ID] identityClientSecret: [YOUR_IDENTITY_CLIENT_SECRET] config: fleet_control: # optional fleet_id: [YOUR_FLEET_ENTITY_GUID] auth: organizationId: [ORG_ID] agentControl: content: log: level: trace
Pour explorer tous les paramètres de configuration disponibles, reportez-vous à values-newrelic.yaml
.
Étape 3
Initialisez et révisez le script Terraform :
$terraform init
$terraform plan
Étape 4
Appliquez vos modifications :
$terraform apply
Étape 5
Vérifiez que le pod de l'agent est correctement construit à l'aide de Kube Control :
$kubectl get pods -n newrelic
Configuration
Dans values-newrelic.yaml
, vous pouvez configurer l'installation de plusieurs agents de monitoring. Cet exemple montre les options disponibles, y compris l'agent infrastructure de New Relic, l'agent de logs Fluent Bit, l'agent collecteur OpenTelemetry et l'agent de gateway New Relic Contrôle de pipeline :
agent-control-deployment: identityClientId: [YOUR_IDENTITY_CLIENT_ID] identityClientSecret: [YOUR_IDENTITY_CLIENT_SECRET] config: subAgents: infrastructure: type: newrelic/com.newrelic.infrastructure:0.1.0 content: chart_version: "*" chart_values: newrelic-infrastructure: enableProcessMetrics: true logs: type: newrelic/io.fluentbit:0.1.0 content: # 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: type: com.newrelic.k8s_agent_operator:0.1.0 content: chart_version: "*" open-telemetry: type: newrelic/io.opentelemetry.collector:0.1.0 content: # 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: type: newrelic/com.newrelic.pipeline_control_gateway:0.1.0 content: chart_version: "*" chart_values: gateway: autoscaling: minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 70
Désinstaller
Important
Supprimer une ressource de sortie Helm de votre configuration Terraform est une action destructrice. Après avoir exécuté terraform apply
suite à cette modification, Terraform désinstallera et détruira les ressources associées dans votre cluster Kubernetes. Cela peut entraîner la perte de données et de configuration liées aux ressources gérées par cette sortie Helm . 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.
- Exécutez
terraform plan
: après avoir supprimé le bloc de ressources Helm sortie de votre configuration, exécutez la commandeterraform plan
. Cela vous permet de consulter les modifications que Terraform prévoit d’apporter à votre infrastructure. Examinez attentivement la sortie du plan pour vous assurer que seules les ressources prévues sont marquées pour suppression. Cette étape est essentielle pour vérifier qu’aucune suppression ou modification involontaire ne se produira. - Exécutez
terraform apply
: si les résultats du plan Terraform correspondent à vos attentes, continuez en exécutant la commandeterraform apply
. 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.