Administration de l'agent « Instana » sur Kubernetes

Une fois l'agent installé, configurez-le et gérez-le selon vos besoins. Consultez les sections suivantes pour connaître toutes les options de configuration des agents disponibles sur Kubernetes.

Configuration de l'agent

Vous pouvez configurer l'agent sur Kubernetes soit à l'aide du fichier de configuration de l'agent, soit à l'aide de variables d'environnement.

Configuration de l'agent à l'aide du fichier de configuration

La procédure de configuration de l'agent varie selon que vous l'avez installé via l'opérateur ou à l'aide du tableau « Helm ».

Configuration de l'agent à l'aide du fichier de configuration dans une installation opérateur

Pour configurer l'agent installé à l'aide de l'opérateur, procédez comme suit :

  1. Ouvrez le fichier de ressource personnalisée instana-agent.customresource.yaml« YAML ».

  2. Enregistrez vos configurations sous " spec.agent.configuration_yaml. Voir l'exemple suivant :

    spec:
      agent:
        configuration_yaml: |
          # Example of configuration yaml template
          # Host
          com.instana.plugin.host:
            tags:
              - 'dev'
              - 'app1'
     
  3. Appliquez les modifications en exécutant la commande suivante :

    kubectl apply -f instana-agent.customresource.yaml
     

Pour un exemple détaillé du fichier « YAML », consultez instana_v1_extended_instanaagent.yaml.

Pour obtenir un aperçu complet des options de configuration disponibles dans le fichier de configuration, consultez la section « Configuration des agents hôtes à l'aide du fichier de configuration de l'agent ».

Configuration de l'agent à l'aide du fichier de configuration dans une installation de diagramme d' Helm

Pour configurer l'agent « Instana » installé via le tableau « Helm », procédez de l'une des manières suivantes :

Méthode 1 : À l'aide d'un values.yaml fichier

Ajoutez la configuration au fichier de configuration du graphique values.yaml« Helm ». Transmettez le fichier aux commandes d'installation ` Helm ` (pendant l'installation) ou de mise à niveau ` Helm ` (après l'installation) à l'aide de -f values.yaml l'option `-f`.

  1. Créez ou modifiez le values.yaml fichier contenant la configuration de votre agent :
    agent:
      configuration_yaml: |
        # Example of configuration yaml template
        # Host
        com.instana.plugin.host:
          tags:
            - 'dev'
            - 'app1'
  2. Appliquez la configuration suivante lors de l'installation :
    helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --create-namespace \
      --set agent.key=<your_agent_key> \
      --set agent.endpointHost='<your_host_agent_endpoint>' \
      --set agent.endpointPort=443 \
      --set cluster.name='<your_cluster_name>' \
      --set zone.name='<zone_name>' \
      -f values.yaml \
      instana-agent
  3. Mettez à jour une installation existante avec la configuration suivante :
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      -f values.yaml \
      instana-agent
Méthode 2 : Utilisation d'un fichier configuration.yaml distinct

Créez un fichier configuration.yaml distinct contenant la configuration de votre agent et transmettez-le directement à l'aide de --set l'option avec substitution de commande.

  1. Créez un configuration.yaml fichier contenant la configuration de votre agent :
    # Example of configuration yaml template
    # Host
    com.instana.plugin.host:
      tags:
        - 'dev'
        - 'app1'
  2. Appliquez la configuration suivante lors de l'installation :
    helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --create-namespace \
      --set agent.key=<your_agent_key> \
      --set agent.endpointHost='<your_host_agent_endpoint>' \
      --set agent.endpointPort=443 \
      --set cluster.name='<your_cluster_name>' \
      --set zone.name='<zone_name>' \
      --set agent.configuration_yaml="$(cat configuration.yaml)" \
      instana-agent
  3. Mettez à jour une installation existante avec la configuration suivante :
    helm upgrade instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace instana-agent \
      --set agent.configuration_yaml="$(cat configuration.yaml)" \
      instana-agent

Pour plus d'informations sur la liste de tous les paramètres de configuration, consultez le tableau disponible à l'adresse InstanaHelm.

Configuration de l'agent à l'aide de variables d'environnement

La procédure de configuration de l'agent varie selon que vous l'avez installé via l'opérateur ou à l'aide du tableau « Helm ».

Pour obtenir la liste complète des variables d'environnement disponibles, consultez la section « Variables d'environnement pour l'agent hôte ».

Configuration de l'agent à l'aide de variables d'environnement dans une installation d'opérateur

Pour configurer les variables d'environnement de l'agent d' Instana, installé via l'opérateur, procédez comme suit :

  1. Ouvrez le fichier de ressource personnalisée instana-agent.customresource.yaml« YAML ».

  2. Enregistrez vos configurations sous " spec.agent.configuration_yaml. Voir l'exemple suivant :

    spec:
      agent:
        env:
          INSTANA_AGENT_TAGS: dev
          JAVA_OPTS: -Xms<value>
     
  3. Appliquez les modifications en exécutant la commande suivante :

    kubectl apply -f instana-agent.customresource.yaml
     

Pour un exemple détaillé du fichier « YAML », consultez instana_v1_extended_instanaagent.yaml.

Configuration de l'agent à l'aide de variables d'environnement dans une installation de Chart sur Helm

Pour configurer les variables d'environnement de l'agent « Instana » installé à l'aide du chart « Helm », procédez de l'une des manières suivantes :

  • Ajoutez les variables d'environnement au fichier de configuration du tableau values.yaml« Helm ». Transmettez le fichier aux commandes d'installation ` Helm ` (pendant l'installation) ou de mise à niveau ` Helm ` (après l'installation) à l'aide de -f values.yaml l'option `-f`.

Voici un exemple du fichier values.yaml : yaml {: codeblock} agent: env: INSTANA_AGENT_TAGS: dev JAVA_OPTS: -Xms<value>

  • Spécifiez la configuration directement sur la ligne de commande à l'aide de l'option --set agent.env.<KEY>=<VALUE> .

Personnalisation de la configuration de l'agent

Après l'installation de l'agent hôte, les fichiers de configuration suivants sont créés :

/opt/instana/agent/etc/mvn-settings.xml
/opt/instana/agent/etc/org.ops4j.pax.url.mvn.cfg
/opt/instana/agent/etc/instana/com.instana.agent.bootstrap.AgentBootstrap.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.Agent.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.config.UpdateManager.cfg
/opt/instana/agent/etc/instana/com.instana.agent.main.sender.Backend.cfg
/opt/instana/agent/etc/instana/configuration.yaml
 

Vous pouvez personnaliser la configuration de l'agent selon vos besoins. Par exemple, vous pouvez modifier le port et le nom d'hôte d' TCP du backend Instana et des services auxquels votre agent hôte se connecte, configurer l'agent pour qu'il envoie des rapports à plusieurs backends, ou configurer l'utilisation d'un proxy pour la communication indirecte entre l'agent hôte et le backend Instana.

Pour plus d'informations sur la personnalisation de la configuration de l'agent, voir les rubriques suivantes :

Mise à jour de l'installation de l'agent

Selon la méthode d'installation utilisée, vous pouvez mettre à jour l'agent « Instana » pour « Kubernetes » de plusieurs façons.

Mise à jour d'une installation d'opérateur

La mise à jour de l'installation de l'agent se fait en deux étapes :

  1. Mise à jour de l'opérateur
  2. Mise à jour des images

Pour mettre à jour l'opérateur, procédez comme suit :

  1. Sur la page d'accueil de l'interface utilisateur d' Instana, cliquez sur « Agents et collecteurs ». Dans l'onglet « Agents » de l' Instana, sélectionnez « Installer les agents ».

  2. Sur la page du catalogue de déploiement de l'agent, cliquez sur la tuile OpenShift - Operator.

  3. Copiez et exécutez la commande pour déployer le nouvel opérateur. Voir l'exemple de commande suivant :

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
     
    Remarque : pour mettre à jour l'opérateur vers une version spécifique, exécutez la commande suivante :
    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/download/<operator_version>/instana-agent-operator.yaml
    Pour consulter la liste des versions disponibles pour les opérateurs, reportez-vous aux notes de mise à jour de l'agent opérateur d' Instana.

Une fois l'opérateur mis à jour, passez à la mise à jour des images.

Mise à jour d'une installation d' Helm

La mise à jour de l'installation de l'agent se fait en deux étapes :

  1. Mise à jour du graphique Helm
  2. Mise à jour des images

Pour mettre à jour le graphique d' Helm s des agents, exécutez la commande suivante :

helm pull --repo https://agents.instana.io/helm --untar instana-agent && kubectl apply -f instana-agent/crds; helm upgrade --namespace instana-agent instana-agent \
--repo https://agents.instana.io/helm instana-agent \
--reuse-values
 
Remarque : les versions 2.0.0 et antérieures de l'agent Instana et des graphiques Helm ne disposent pas du instana-agent/crds dossier. Par conséquent, cette kubectl apply -f instana-agent/crds étape n'est pas nécessaire.

Une fois le tableau « Helm » mis à jour, passez à la mise à jour des images.

Mise à jour des images

Le DaemonSet 'instana-agent et le déploiement 'k8sensor sont configurés pour extraire la dernière image au démarrage du pod. Pour forcer la mise à jour, exécutez les commandes suivantes :

kubectl rollout restart ds instana-agent -n instana-agent
 
kubectl rollout restart deployment instana-agent-k8sensor -n instana-agent
 

Instana ne propose pas de mécanisme permettant de mettre à jour automatiquement ces images. Vous pouvez utiliser des solutions adaptées à vos besoins, telles que CronJobs celles offrant des privilèges suffisants pour restart les charges de travail, ou des outils plus avancés de gestion des identités et des accès ( Kubernetes ) GitOps, comme les automatisations de mise à jour des images proposées par la Fondation CNCF FluxCD.

Gérer les agents à l'aide du tableau de bord de gestion des agents

Vous pouvez effectuer les opérations suivantes à l'aide du tableau de bord de gestion des agents dans l'interface utilisateur d' Instana :

Pour ouvrir le tableau de bord de gestion des agents, procédez comme suit :

  1. Dans la barre latérale de l'interface utilisateur d' Instana, sélectionnez « Infrastructure ».
  2. Cliquez sur un hôte surveillé spécifique.
  3. Sur le tableau de bord de l'hôte, cliquez sur Ouvrir la gestion des agents.

Configuration de l'accès réseau pour les applications surveillées

Vous devez configurer l'accès réseau des types d'applications suivants pour qu'elles puissent communiquer avec l'agent :

  • Node.js
  • Go
  • Ruby
  • Python
  • .NET Core

Ces applications doivent connaître l'adresse IP sur laquelle l'agent est à l'écoute. L'agent hôte écoute automatiquement l'IP de l'hôte. Vous pouvez utiliser l'extrait de code d' API descendante suivant pour transmettre l'adresse IP de l'hôte, via une variable d'environnement, au pod de l'application :

spec:
  containers:
    env:
      - name: INSTANA_AGENT_HOST
        valueFrom:
          fieldRef:
            fieldPath: status.hostIP
 

Surveillance des nœuds du plan de contrôle (anciennement appelés nœuds maîtres)

Par défaut, l'agent hôte n'est pas planifié sur les nœuds du plan de contrôle d' Kubernetes (anciennement appelés nœuds maîtres), car le déploiement respecte le taint node-role.kubernetes.io/master:NoSchedule par défaut défini sur la plupart des nœuds du plan de contrôle. Pour surveiller les nœuds du plan de contrôle, vérifiez d'abord quel indicateur de contamination est défini sur ces nœuds en exécutant la commande suivante et en recherchant .spec.taints dans la réponse :

kubectl describe node <control-plane-node-name>
 

Ajoutez ensuite la tolérance à l'agent DaemonSet pour la contamination définie sur le nœud du plan de contrôle. Si le nœud du plan de contrôle présente la marque par défaut, la tolérance appropriée pour le Daemonset de l'agent est la suivante :

tolerations:
  - key: "node-role.kubernetes.io/master"
    effect: "NoSchedule"
    operator: "Exists"
 

Une fois que vous avez déterminé le seuil de tolérance requis pour la surveillance des nœuds du plan de contrôle, configurez ce seuil lors de l'installation de l'agent.

Si vous avez installé l'agent à l'aide du graphique « Helm », vous pouvez définir les tolérances de deux manières :

  • En utilisant l'indicateur --set agent.pod.tolerations

  • En créant un values.yaml fichier contenant le texte suivant, puis en transmettant ce fichier à la commande d'installation de Helm à l'aide de l'option -f values.yaml:

agent:
  pod:
    # agent.pod.tolerations are tolerations to influence agent pod assignment.
    #   https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
    tolerations:
      - key: "node-role.kubernetes.io/master"
        effect: "NoSchedule"
        operator: "Exists"
 

Si vous avez installé l'agent à l'aide de l'opérateur, ajoutez les tolérances dans la ressource personnalisée sous .spec.agent.pod.tolerations dans le instana-agent.customresource.yaml fichier. Voir l'exemple suivant :

spec:
  agent:
   pod:
    tolerations:
      - key: "node-role.kubernetes.io/master"
        effect: "NoSchedule"
        operator: "Exists"
 

Appliquez ensuite la nouvelle ressource personnalisée au cluster en exécutant la commande suivante :

kubectl apply -f instana-agent.customresource.yaml
 

Pour un contrôle plus direct, installez l'agent hôte séparément sur les nœuds du plan de contrôle.

Configuration des secrets de l'agent

Kubernetes dispose d'une prise en charge intégrée pour le stockage et la gestion des informations sensibles. Toutefois, si vous n'utilisez pas cette fonctionnalité intégrée mais que vous avez tout de même besoin de pouvoir masquer les données sensibles dans les ressources d' Kubernetes, vous pouvez configurer les secrets de l'agent.

Pour activer la masquage des données sensibles pour certaines ressources d' Kubernetes s (notamment les annotations et les variables d'environnement des conteneurs), procédez comme suit :

  1. Définissez la variable INSTANA_KUBERNETES_REDACT_SECRETS d'environnement comme true indiqué dans l'extrait de code suivant concernant l' YAML d'un agent :

    spec:
      containers:
          env:
            - name: INSTANA_KUBERNETES_REDACT_SECRETS
              value: "true"
     
  2. Configurez l'agent hôte avec la liste de secrets souhaitée, comme décrit dans la section consacrée à la configuration des secrets de l'agent.

Remarque : vous pourriez constater une baisse des performances du capteur « Kubernetes » lorsque vous activez cette fonctionnalité.

Rapports vers plusieurs systèmes backend

Pour l'agent hôte installé à l'aide de l'Operator ou du tableau « Helm », vous pouvez ajouter des backends supplémentaires en exécutant la commande suivante :

  • Pour l'agent hôte installé à l'aide de la carte Helm:

       helm install instana-agent \
       --repo https://agents.instana.io/helm \
       --namespace instana-agent \
       --create-namespace \
       --set agent.key=my-key \
       --set agent.endpointHost='<your_host_agent_endpoint>' \
       --set agent.endpointPort=443 \
       --set cluster.name='<your_cluster_name>' \
       --set zone.name='zone-name' \
       --set "agent.additionalBackends[0].endpointHost=<your_host_agent_endpoint>" \
       --set "agent.additionalBackends[0].key=<your_agent_key>" \
       --set "agent.additionalBackends[0].endpointPort=443" \
       --set "agent.additionalBackends[1].endpointHost=<your_other_host_agent_endpoint>" \
       --set "agent.additionalBackends[1].key=<your_other_agent_key>" \
       --set "agent.additionalBackends[1].endpointPort=443" \
       instana-agent
     
  • Pour l'agent hôte installé à l'aide d'Operator :

    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: edited-zone # (optional) name of the zone of the host
      cluster:
        name: my-cluster
      agent:
        endpointHost: <your_host_agent_endpoint>
        endpointPort: "443"
        env: {}
        key: <your_agent_key>
        additionalBackends:
        - endpointHost: <your_host_agent_endpoint>
          endpointPort: "443"
          key: <your_agent_key>
        configuration_yaml: |
          # You can leave this empty, or use this to configure your instana agent.
          # See https://github.com/instana/instana-agent-operator/blob/main/config/samples/instana_v1_extended_instanaagent.yaml for the extended version.
     

Pour plus d'informations sur la transmission de rapports vers plusieurs backends à partir d'un agent d' Kubernetes, consultez la section « Configuration d'un backend d' Instana ».