Installation de l'agent sur Kubernetes

Vous pouvez installer l'agent d' Instana ation dans un environnement en ligne ou hors ligne (isolé physiquement) au sein d'un cluster Kubernetes. Consultez la liste ci-dessous pour vérifier les conditions préalables, découvrir toutes les méthodes d'installation disponibles et installer l'agent sur Kubernetes.

Choisir le mode d'installation de l'agent

L'agent hôte peut être installé à l'aide du gestionnaire de paquets Kubernetes Helm ou par un opérateur. Les deux options d'installation sont disponibles pour les environnements hors ligne (isolés physiquement) et en ligne :

Pour les environnements hors ligne (isolés physiquement) dans lesquels l'hôte peut communiquer avec vos référentiels d'agents auto-hébergés :

Pour connaître toutes les options de configuration disponibles pour le graphique « Helm », consultez la référence de configuration. Ces options de configuration s'appliquent de la même manière au CRD de l'opérateur.

Installation de l'agent dans un environnement isolé physiquement

Vous pouvez installer l'agent dans un environnement à air comprimé en utilisant deux méthodes :

Installation à l'aide d'un tableau « Helm » dans un environnement isolé

Pour installer l'agent dans un environnement à air comprimé, procédez comme suit :

Remarque : dans les étapes d'installation suivantes, nous utilisons la distribution CentOS Linux, mais ces étapes s'appliquent à toutes les autres distributions prises en charge.
  1. Installez Docker en exécutant les commandes suivantes :

    sudo yum install -y yum-utils
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    sudo systemctl start docker
  2. Installez Helm en exécutant les commandes suivantes :

    sudo su
    yum install -y epel-release
    yum install -y snapd
    systemctl enable --now snapd.socket
    ln -s /var/lib/snapd/snap /snap
    snap install helm --classic
    PATH="$PATH:/snap/bin/"
    helm version
  3. Installez Minikube en suivant les étapes suivantes :

    Remarque : ces étapes sont données à titre d'exemple pour illustrer l'environnement cible.
    1. Ajouter le dépôt Kubernetes:

      cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
      [kubernetes]
      name=Kubernetes
      baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
      enabled=1
      gpgcheck=1
      gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
      exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
      EOF
    2. Installez l'outil en ligne de commande « kubectl » :

      sudo yum install -y kubectl
    3. Téléchargez le paquetage RPM Minikube :

      curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
    4. Installez le paquetage RPM Minikube :

      sudo rpm -Uvh minikube-latest.x86_64.rpm
    5. Démarrez un cluster Kubernetes en utilisant Docker:

      minikube start --force --driver=docker
    6. Configurer l'environnement Docker pour qu'il puisse être utilisé avec Minikube :

      eval $(minikube docker-env)
    7. Vérifiez le cluster Kubernetes:

      kubectl cluster-info
  4. Extraire les images Docker nécessaires pour les transférer dans un environnement à air comprimé :

    1. Connectez-vous à l'interface de gestion Instana Container Registry à l'aide de votre clé d'agent :

      docker login https://containers.instana.io/v2 -u _ -p <agentKey>
    2. Téléchargez la dernière version de l'agent depuis le site Instana Container Registry :

      docker pull containers.instana.io/instana/release/agent/static:latest
    3. Téléchargez la dernière image de l'agent d' Instana :

      docker pull icr.io/instana/instana-agent-operator:latest
    4. Téléchargez la dernière version du capteur « Instana » Kubernetes :

      docker pull icr.io/instana/k8sensor:latest
    5. Déconnectez-vous du registre Docker:

      docker logout
    6. Convertir les images Docker en fichiers '.tar

      docker images
      docker tag <instanaAgentImageID> instana/agent
      docker save instana/agent > instana-agent.tar
      docker tag <operatorImagerId> instana/instana-agent-operator
      docker save instana/instana-agent-operator > instana-agent-operator.tar
      docker tag <k8SensorID> instana/k8sensor
      docker save instana/k8sensor > instana-k8sensor.tar
    7. Copiez les fichiers (instana-agent.tar, instana-agent-operator.tar, et instana-k8sensor.tar) sur l'hôte isolé du réseau où vous souhaitez installer l'agent.

    8. Supprimer les images actuelles de l'hôte à air comprimé :

      docker rmi -f <instanaAgentImageID> <operatorImagerId> <k8SensorID>
    9. Importer des images à partir de .tar fichiers (instana-agent.tar, instana-agent-operator.tar, et instana-k8sensor.tar) :

    docker load --input instana-agent.tar
    docker load --input instana-agent-operator.tar
    docker load --input instana-k8sensor.tar
  5. Exécuter le serveur de registre Docker et pousser les images :

    docker run -d -p 5000:5000 --restart=always --name registry registry:2
    docker tag instana/agent:latest localhost:5000/instana-agent
    docker push localhost:5000/instana-agent
    docker tag instana/instana-agent-operator:latest localhost:5000/instana-agent-operator
    docker push localhost:5000/instana-agent-operator
    docker tag instana/k8sensor:latest localhost:5000/instana-k8sensor
    docker push localhost:5000/instana-k8sensor
    #Delete all images related to the agent:
    docker rmi -f <instanaAgentImageID> <k8SensorID> <operatorImagerId>
  6. Récupérez les graphiques « Pull Instana » et « Helm » à partir du dépôt suivant :

    helm pull instana-agent --repo https://agents.instana.io/helm --untar instana-agent
    Remarque : vérifiez si le fichier de tableau « Helm » de l'agent Instana est présent dans votre répertoire actuel.
  7. Déployez l'agent « Instana » dans le cluster « Kubernetes ».

    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.
    kubectl apply -f instana-agent/crds && helm upgrade --install --create-namespace \
       --namespace instana-agent \
       --set agent.key=<agentKey> \
       --set agent.endpointHost=ingress-red-saas.instana.io \
       --set agent.endpointPort=443 \
       --set cluster.name='mip-back-test' \
       --set zone.name='mip-gke-zone' \
       --set k8s_sensor.deployment.enabled=true \
       --set k8s_sensor.image.name=localhost:5000/instana-k8sensor \
       --set k8s_sensor.image.tag=latest \
       --set k8s_sensor.image.pullPolicy=IfNotPresent  \
       --set agent.image.name=localhost:5000/instana-agent \
       --set agent.image.tag=latest \
       --set agent.image.pullPolicy=IfNotPresent  \
       --set controllerManager.image.name=localhost:5000/instana-agent-operator \
       --set controllerManager.image.tag=latest \
       instana-agent instana-agent/

    Saisissez <agentKey>, puis modifiez les paramètres <agent.endpointHost>, <agent.endpointPort>, <k8_senosr.image.name> et < agent.image.name >. Remplacez également instana-agent-1.2.61.tgz par le dernier fichier de diagramme de l'agent Instana Helm présent dans votre répertoire.

  8. Vérifiez vos pods avec la commande suivante :

    kubectl get all -n instana-agent

L'agent est installé. Pour plus d'informations sur les étapes suivantes, consultez la section « Que faire ensuite? ».

Installer à l'aide d'un opérateur dans un environnement isolé physiquement

Pour installer l'agent dans un environnement fermé par air à l'aide d'un opérateur, procédez comme suit :

  1. Tirez les images suivantes.

    docker pull containers.instana.io/instana/release/agent/static:latest
    docker pull icr.io/instana/k8sensor:latest
    docker pull icr.io/instana/instana-agent-operator:latest
  2. Réindexer les images extraites dans un registre d'images local.

    docker tag <public-image> <local-registry-image>
  3. Transférer les images réétiquetées dans le registre d'images local.

    docker push <local-registry-image>
  4. Créez un secret d'extraction d'image (secretDocker ) dans votre espace de noms cible 'Kubernetes

    kubectl create secret -n instana-agent docker-registry local-registry-image-pull-secret \
         --docker-server=<your_local_image_registry> \
         --docker-username= # Replace with ARTIFACTORY_USERNAME \
         --docker-password= # Replace with ARTIFACTORY_PASSWORD
  5. Récupérez le fichier « YAML » à l'adresse GitHub:

    curl -L -o instana-agent-operator.yaml https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml
  6. Remplacer la référence de l'image par le registre privé. Par exemple, " icr.io/instana/instana-agent-operator:2.1.8 avec une image d'opérateur de registre privé.

  7. Appliquer la configuration pour déployer l'opérateur.

    kubectl apply -f instana-agent-operator.yaml
  8. Si vous n'avez pas encore installé l'interface de ligne de commande (ocCLI) d' OpenShift, vous pouvez la télécharger à partir de la page « Getting started with the OpenShift CLI » et modifier le compte de service afin qu'il ait accès au secret de récupération d'image que vous avez créé dans la section précédente :

    oc patch serviceaccount instana-agent-operator -p '{"imagePullSecrets": [{"name": "local-registry-image-pull-secret"}]}' -n instana-agent
  9. Créez un fichier agent.yaml et mettez à jour la ressource personnalisée de l'agent en fonction des versions d'images spécifiques :

    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: # (optional) name of the zone of the host
      cluster:
        name: # cluster name.
      agent:
        image:
          name: # private registry static agent image.
          tag: # agent tag
          pullSecrets:
            - name: local-registry-image-pull-secret
        key: # fetch the download key from the Instana UI > Agents > Install Agent > Kubernetes Operator
        endpointHost: <your-ingress-endpoint>
        endpointPort: "443"
        env: {}
        configuration_yaml: |
          # You can leave this empty, or use this to configure your instana agent.
          # See https://docs.instana.io/setup_and_manage/host_agent/on/kubernetes/
      k8s_sensor:
        image:
          name: # private registry k8 sensor image.
          tag: # k8 sensor tag
  10. Déployer la ressource personnalisée :

    $ kubectl apply -f agent.yaml
  11. Veillez à ce que toutes les gousses démarrent correctement.

L'agent est installé. Pour plus d'informations sur les étapes suivantes, consultez la section « Que faire ensuite? ».

Installation de l'agent dans un environnement en ligne

Il est recommandé d'utiliser les méthodes suivantes pour installer l'agent Instana sur un cluster Kubernetes :

Si vous réinstallez l'agent, assurez-vous qu'il a été désinstallé proprement, notamment en supprimant tous les objets de niveau cluster de l'agent. Pour plus d'informations, consultez la section « Désinstallation de l'agent d' Instana » sur Kubernetes.

De nouvelles versions de l'Operator et du graphique « Helm » sont publiées assez régulièrement. Pour rester informé des dernières mises à jour concernant les corrections, les améliorations et les nouvelles fonctionnalités, assurez-vous d'utiliser la version actuelle de la carte « Operator » ou « Helm ».

Pour connaître la version actuelle de l'Operator ou du tableau « Helm », consultez les rubriques suivantes :

Installez-le à l'aide de l'opérateur

Vous pouvez utiliser l'opérateur « Kubernetes » fourni par Instana pour installer l'agent. Suivez ces étapes :

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

  2. Sur la page du catalogue de déploiement des agents, cliquez sur la tuile Kubernetes - Operator.

  3. Déployez l'opérateur comme suit. La commande installe le dernier opérateur.

    kubectl apply -f https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml

    Une fois cette commande exécutée, l'opérateur est opérationnel dans l'espace de noms instana-agentet attend que la ressource instana-agent personnalisée soit créée.

    La latest balise associée à l'image de l'agent Operator d' Instana, disponible sur DockerHub et dans le registre Red Hat, n'est pas prise en charge.

    Pour obtenir une nouvelle version de l'Agent Operator d' Instana, effectuez la mise à jour vers la dernière version d' YAML, disponible sur la page « Versions d' GitHub » de l'Operator, comme indiqué précédemment.

  4. Saisissez le nom du cluster et la zone d'agents (facultatif) dont vous voulez que le cluster fasse partie.

    Le nom du cluster (<your_cluster_name>) est le nom personnalisé du cluster surveillé par ce daemonset.

    La zone d'agent (<your_zone_name>) permet de personnaliser le regroupement des zones qui s'affiche sur la carte de l'infrastructure.

  5. Créez un fichier d' YAML s de ressource personnalisé en copiant le modèle « YAML » fourni dans l'interface utilisateur de Instana.

    Le modèle « YAML » est prérempli avec votre clé d'agent, le point de terminaison de l'agent hôte, le nom du cluster et la zone de l'agent.

  6. Modifiez le fichier de ressource personnalisée « YAML » :

    • La ressource personnalisée de l'agent Instana prend en charge exactement la même configuration que le graphique Instana Helm. Pour obtenir la liste détaillée de tous les paramètres de configuration et des exemples, consultez le tableau disponible à l'adresse InstanaHelm.

      Voir également les rubriques suivantes :

    • Si vous souhaitez installer l'agent dans un environnement auto-hébergé et que la clé de l'agent ne dispose pas des droits nécessaires pour télécharger depuis l'Artifactory public Instana, ajoutez la clé de téléchargement comme downloadKey: <your_download_key>suit : Voir l'exemple suivant :

      agent:
        key: wPYpH7EGK0ucLaO0Nu7BYw
        downloadKey: m007YDoWNload6kE42yukg
        endpointHost: ...
    • Si vous souhaitez activer le chiffrement par le protocole TLS pour le point de terminaison de l'agent, utilisez un secret existant ou un certificat et une clé privée :

      • Utiliser un secret existant

        Vous pouvez utiliser un secret existant de ce type kubernetes.io/tls pour le chiffrement « TLS ». Mais vous devez fournir ces informations agent.tls.secretName dans le fichier de ressource personnalisée ` YAML `.

      • Utiliser un certificat et une clé privée

        Le certificat et la clé privée doivent être base64-encoded. Pour utiliser cette variante, ajoutez les paramètres suivants au fichier de ressource personnalisée ` YAML ` :

        • agent.tls.certificate
        • agent.tls.key
        Remarque : si agent.tls.secretName est défini, alors agent.tls.certificate et agent.tls.key sont ignorés.
    • Si vous souhaitez déployer l'agent hôte statique, configurez le fichier de ressource personnalisée YAML en y indiquant l'image de l'agent statique. Pour dresser la liste de l'image de l'agent hôte statique, remplacez " agent.image.name par " containers.instana.io/instana/release/agent/static. Voir l'exemple suivant :

      spec:
         agent:
           image:
             name: containers.instana.io/instana/release/agent/static
    • Facultatif : vous pouvez remplacer les valeurs suivantes :

      • agent.env: Utilisez ce champ pour spécifier des variables d'environnement pour l'agent, telles que la configuration du proxy pour l'agent. Pour plus d'informations sur les valeurs possibles de l'environnement, voir la configuration de l'agent. Voir l'exemple suivant :

        spec:
            agent:
              env:
               INSTANA_AGENT_TAGS: staging
      • agent.configuration_yaml: Utilisez ce champ pour spécifier un fichier de configuration de l'agent 'configuration.yaml. Voir l'exemple suivant :

        spec:
            agent:
              configuration_yaml: |
                # Example of configuration yaml template
                # Host
                com.instana.plugin.host:
                  tags:
                    - 'dev'
                    - 'app1'

        Pour plus d'informations, consultez la section « Configuration des agents hôtes à l'aide du fichier de configuration de l'agent ».

    • Facultatif : vous pouvez modifier manuellement le instana-agent.customresource.yaml fichier pour ajouter des tolérances aux pods du gestionnaire de contrôleurs. Pour plus d'informations sur les options de configuration disponibles, consultez le fichier de configuration Canonical.
  7. Appliquez le fichier de ressource personnalisée « YAML » :

    kubectl apply -f instana-agent.customresource.yaml

    instana-agent.customresource.yaml est le nom de votre fichier de ressources personnalisées YAML.

    L'opérateur récupère la configuration dans le fichier de ressource personnalisée « YAML » et déploie l'agent « Instana ».

L'agent est installé. Pour plus d'informations sur les étapes suivantes, consultez la section « Que faire ensuite? ».

Pour mettre à jour l'agent, voir Mise à jour de l'installation d'un opérateur.

Installez-le à l'aide du tableau « Helm »

Vous pouvez utiliser le tableau Helm pour installer l'agent. Le tableau « Helm » ajoute l'agent « Instana » à tous les nœuds de travail pouvant être utilisés pour planifier la charge de travail dans votre cluster à l'aide d'un « DaemonSet ».

Pour installer l'agent d' Instana s à l'aide d'un tableau « Helm », vous devez d'abord installer ou mettre à jour votre interface CLI helm locale vers la version 3.

Le graphique de l'agent Instana Helm prend en charge Red Hat OpenShift 4.x.

Pour installer l'agent à l'aide de la carte Helm, suivez les étapes suivantes :

  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 des agents, cliquez sur la tuile Kubernetes - Helm chart.

  3. Saisissez le nom du cluster et (facultativement) la zone d'agents dont vous voulez que le cluster fasse partie.

    Le nom de la grappe (<your_cluster_name>) est le nom personnalisé de la grappe surveillée par ce daemonset.

    La zone d'agent (<your_zone_name>) permet de personnaliser le regroupement des zones qui s'affiche sur la carte de l'infrastructure.

    Le code de déploiement de l'agent est mis à jour avec les valeurs que vous avez fournies. Tous les autres paramètres requis sont pré-remplis dans le code de déploiement de l'agent, qui ressemble à l'exemple suivant :

    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='<your_zone_name>' \
    instana-agent

    Vous pouvez également enregistrer l' values.yaml ation localement et veiller à remplir manuellement les champs obligatoires. Exécutez ensuite la commande suivante :

    helm install instana-agent
    --repo https://agents.instana.io/helm \
    --namespace instana-agent \
    --create-namespace \
    -f values.yaml
    instana-agent
  4. Modifiez le code de déploiement de l'agent :

    • Pour configurer l'installation, vous pouvez spécifier les valeurs sur la ligne de commande à l'aide du --set drapeau ou fournir un fichier de YAML s contenant vos valeurs à l'aide du -f drapeau. Pour obtenir la liste détaillée de tous les paramètres de configuration et des exemples, consultez le tableau disponible à l'adresse InstanaHelm. Consultez également les rubriques suivantes :

    • Si vous souhaitez déployer l'agent hôte statique, définissez l'indicateur " --set agent.image.name=containers.instana.io/instana/release/agent/static.

    • Si vous souhaitez configurer le chiffrement de type « TLS » pour le point de terminaison de l'agent, utilisez un secret existant ou un certificat et une clé privée :

      • Utiliser un secret existant de type " kubernetes.io/tls

        Vous pouvez utiliser un secret existant de ce type kubernetes.io/tls pour le chiffrement « TLS ». Mais vous devez spécifier le 'secretName avec le '--set 'agent.tls.secretName=<YOUR_SECRET_NAME>' pendant l'installation. Les fichiers du secret fourni sont alors inclus dans l'agent.

      • Utiliser un certificat et une clé privée

        Le certificat et la clé privée doivent être base64-encoded. Pour utiliser cette variante, exécutez " helm install avec les paramètres supplémentaires suivants :

        --set 'agent.tls.certificate=<YOUR_CERTIFICATE_BASE64_ENCODED>'
        --set 'agent.tls.key=<YOUR_PRIVATE_KEY_BASE64_ENCODED>'
        Remarque : si agent.tls.secretName est défini, alors agent.tls.certificate et agent.tls.key sont ignorés.
    • Si votre environnement Kubernetes nécessite des proxys différents pour accéder au référentiel Helm et pour se connecter au backend Instana, vous pouvez configurer des paramètres de proxy distincts lors de l'installation. Pour plus d'informations sur les options de configuration, consultez la section « Proxys distincts pour le référentiel et le backend Instana ».

  5. Copiez et exécutez le code de déploiement de l'agent.

L'agent est installé. Pour plus d'informations sur les étapes suivantes, consultez la section « Que faire ensuite? ».

Pour mettre à jour l'agent, voir Mise à jour de l'installation d'un opérateur.