Installation de l'agent sur Red Hat OpenShift

Vous pouvez installer l'agent d' Instana ation sur un cluster d' Red Hat OpenShift s en utilisant différentes méthodes, en fonction de vos besoins. Consultez la liste suivante pour vérifier les conditions préalables, découvrir toutes les méthodes d'installation disponibles et installer l'agent sur Red Hat OpenShift :

Installation à l'aide de l'opérateur

Pour installer l'agent d' Instana ation sur Red Hat OpenShift à l'aide de l'opérateur, procédez comme suit :

  1. Complétez les étapes préalables avant de procéder à l'installation de l'opérateur.

  2. Installez l'opérateur en utilisant l'une des méthodes suivantes :

Remarque : avant d'installer l'agent à l'aide de l'opérateur, vous devez d'abord créer un projet pour l'agent « Instana » et configurer ses autorisations. Pour plus d'informations, consultez la section « Configuration des comptes de projet et de service ».

Installation de l'opérateur à l'aide d' OLM

Pour installer l'agent d' Instana sur Red Hat OpenShift à l'aide de OLM, procédez comme suit :

  1. Installez l'opérateur d'agent « Instana » à partir de OperatorHub.io ou du catalogue des applications conteneurisées disponible sur Red Hat OpenShift.

  2. Si vous ne disposez pas encore d'un espace de noms cible, créez-en un dans lequel l'agent d' Instana ation doit être installé. Par exemple, vous pouvez créer un espace de noms " instana-agent pour exécuter l'opérateur. Il n'est pas nécessaire d'exécuter l'agent dans le même espace de nom que l'opérateur.

  3. Suivez les étapes 2 à 6 de la section Installation manuelle de l'opérateur pour créer la ressource personnalisée pour l'agent et appliquer la ressource personnalisée. L'opérateur récupère la configuration à partir de la ressource personnalisée et déploie l'agent d' Instana.

Installation manuelle de l'opérateur

Pour installer l'opérateur manuellement sur Red Hat OpenShift, effectuez les étapes suivantes :

  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 de l'agent, cliquez sur la tuile OpenShift - Operator.

  3. Déployez la dernière version de l'opérateur en utilisant la commande suivante :

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

    Après avoir exécuté cette commande, l'opérateur est opérationnel dans l'espace de noms que vous avez créé et attend la création de la ressource personnalisée " instana-agent

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

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

    La zone d'agent (<nom_de_votre_zone>) sert à 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 ». Pour consulter un exemple du fichier « YAML », rendez-vous sur instana_v1_extended_instanaagent.yaml.

    1. 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 :

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

    agent:
      key: wPYpH7EGK0ucLaO0Nu7BYw
      downloadKey: m007YDoWNload6kE42yukg
      endpointHost: ...
    1. 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 :

      Utilisation d'un secret existant

      Vous pouvez utiliser un secret existant de ce type kubernetes.io/tls pour le chiffrement « TLS ». Mais cela agent.tls.secretName doit être défini dans le fichier de ressources personnalisées ` YAML `.

      Utiliser un certificat et une clé privée

      Au lieu d'un secret existant, un certificat et une clé privée peuvent être utilisés. Le certificat et la clé privée doivent être base64-encoded.

      Pour utiliser cette variante, ajoutez les deux 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.
    2. 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 connaître les autres valeurs d'environnement possibles, consultez 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 ».

    3. Si vous souhaitez déployer l'agent 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 statique de l'agent, 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
  7. Appliquez le fichier de ressource personnalisée « YAML » :

    kubectl apply -f instana-agent.customresource.yaml

    instana-agent.customresource.yaml correspond au 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 maintenant installé. Pour savoir ce que vous pouvez faire après l'installation, consultez la section Que faire ensuite ?

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

Installation à 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 pouvant être planifiés dans votre cluster à l'aide d'un « DaemonSet ».

Pour installer l'agent « Instana » à l'aide de l'image « Helm », vous devez d'abord installer ou mettre à niveau vers la version 3 d' Helm.

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

Pour installer l'agent Instana sur Red Hat OpenShift à l'aide du tableau Helm, 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 - Helm chart.

  3. Saisissez le nom du cluster et (facultativement) la zone d'agents 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 affiché 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 :

    INSTANA_AGENT_NAMESPACE=instana-agent
    oc login -u system:admin
    oc new-project ${INSTANA_AGENT_NAMESPACE}
    oc adm policy add-scc-to-user privileged -z instana-agent -n "${INSTANA_AGENT_NAMESPACE}"
    oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n "${INSTANA_AGENT_NAMESPACE}"
    helm install instana-agent \
    --repo https://agents.instana.io/helm \
    --namespace ${INSTANA_AGENT_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
  4. Lorsque vous installez l'agent Instana sur IBM Z ou LinuxONE,, configurez des zones distinctes au cours du processus d'installation. Cette distinction est importante car l'agent d' Instana, tout comme les charges de travail des applications qu'il surveille, se trouvent au sein du même cluster.

    Contrairement à d'autres environnements où l' Instana e et les applications surveillées sont déployées séparément, les configurations de type IBM Z ou LinuxONE partagent le même cluster. Cela rend indispensable la mise en place de zones d'isolement. Pour isoler les zones, assurez-vous que les nœuds sur lesquels « Instana » est installé sont correctement étiquetés et marqués.

    Si l'étiquette utilisée est node-role.kubernetes.io/monitor=true. Pour vérifier que les nœuds de l' Instana t correctement identifiés, exécutez la commande suivante :

    kubectl get nodes -l node-role.kubernetes.io/monitor=true

    Pour vérifier que les nœuds de l' Instana sont bien marqués comme prévu avec l'étiquette d'exemple node.instana.io/monitor=true, exécutez la commande suivante :

    kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{range .spec.taints[*]}{.key}{"="}{.value}{"\t"}{end}{"\n"}{end}' | grep 'node\.instana\.io/monitor'

    Après avoir vérifié que les nœuds d' Instana s sont étiquetés et marqués, vous pouvez suivre les étapes suivantes :

    1. Étiqueter les nœuds exécutant des charges de travail d'application : assurez-vous que les nœuds exécutant des charges de travail d'application sont correctement étiquetés afin de les distinguer des nœuds d'infrastructure.

      NODE=<your node name>
      CLUSTER=<your cluster name>
      oc label node worker${NODE}.${CLUSTER_NAME} workload="true"
    2. Définir deux zones

      • Configurez les nœuds « Instana » sur le INFRASTRUCTURE mode.
      • Configurez les nœuds de charge de travail de l'application en mode APM .
      • Créez un fichier « YAMLagent_values.yaml » et indiquez-y les zones ainsi que leurs affinités et leurs tolérances.
      zones:
        - name: workloads
          mode: APM
          affinity:
             nodeAffinity:
             requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: workload
                        operator: Exists
        - name: instana-nodes
          mode: INFRASTRUCTURE
          tolerations:
            - key: node.instana.io/monitor
              operator: Equal
              effect: NoSchedule
              value: "true"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                  - matchExpressions:
                      - key: node-role.kubernetes.io/monitor
                        operator: In
                        values:
                          - "true"

      Dans cet exemple de fichier ` YAML `, on part du principe que les nœuds de l' Instana sont étiquetés avec node-role.kubernetes.io/monitor=true et marqués avec la clé : node.instana.io/monitor=true. Mettez ces valeurs à jour en fonction de vos propres conventions d'étiquetage et de marquage des nœuds.

      Ajoutez votre fichier YAML personnalisé à la fin du code de déploiement de l'agent, comme indiqué dans l'exemple suivant :

      INSTANA_AGENT_NAMESPACE=instana-agent
      oc login -u system:admin
      oc new-project ${INSTANA_AGENT_NAMESPACE}
      oc adm policy add-scc-to-user privileged -z instana-agent -n "${INSTANA_AGENT_NAMESPACE}"
      oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n "${INSTANA_AGENT_NAMESPACE}"
      helm install instana-agent \
      --repo https://agents.instana.io/helm \
      --namespace ${INSTANA_AGENT_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 -f agent_values.yaml
  5. 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 :

    • Facultatif : Pour déployer l'agent statique, activez le drapeau " --set agent.image.name=containers.instana.io/instana/release/agent/static.

    • Le service Kubernetes créé par défaut expose les éléments suivants au cluster :

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

      • Utilisation d'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 la commande ` helm ` 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 l'option « agent.tls.secretName » est activée, les options « agent.tls.certificate » et « agent.tls.key » sont ignorées.
  6. Copiez et exécutez le code de déploiement de l'agent.

L'agent est maintenant installé. Pour savoir ce que vous pouvez faire après l'installation, consultez la section Que faire ensuite ?

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

Installation à l'aide d'un tableau d' Helm s dans un environnement isolé physiquement

Red Hat OpenShift fournit un registre de conteneurs interne que vous pouvez utiliser dans des environnements isolés physiquement pour stocker des images permettant d'exécuter des charges de travail au sein du cluster.

Assurez-vous d'installer les logiciels suivants avant d'installer l'agent :

  • Interface de ligne de commande OpenShift (oc)
  • jq
  • Skopeo
Remarque : les étapes suivantes ont été testées sur Red Hat Enterprise Linux 9.4 et s'appliquent à la plupart des distributions Linux.

Pour installer l'agent d' Instana ation à l'aide d'un tableau de configuration « Helm » dans un environnement isolé, procédez comme suit :

  1. Connectez-vous au cluster « Red Hat OpenShift » en tant qu'administrateur en exécutant la commande suivante :

    oc login --server=https://api.myopenshiftcluster.com:6443 -u kubeadmin -p $OPENSHIFT_PASSWORD
  2. Rendez le registre de conteneurs interne accessible depuis votre hôte de saut :

    oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{"spec":{"defaultRoute":true}}'
  3. Récupérer le nom d'hôte utilisé pour accéder au registre depuis l'extérieur :

    HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
  4. Créez un projet « instana » (s'il n'a pas déjà été créé) dans le cluster Red Hat OpenShift, afin de permettre le transfert d'images vers l'espace de noms spécifié :

    oc get project instana || oc new-project instana
  5. Afficher les informations relatives à l'hôte du registre :

    echo "${HOST}" # default-route-openshift-image-registry.apps.myopenshiftcluster.com
  6. Récupérez le certificat de l'opérateur d'Ingress de confiance et ajoutez-le dans le répertoire de l'autorité de certification (CA) du système :

    oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm

    Si cette étape n'est pas respectée, des avertissements relatifs au certificat (par exemple, tls: failed to verify certificate: x509: certificate signed by unknown authority) peuvent s'afficher lorsque vous essayez de pousser l'image vers le registre cible.

  7. Importez l'autorité de certification dans le magasin des autorités de certification de confiance du système à l'aide des commandes suivantes :

    sudo mv tls.crt /etc/pki/ca-trust/source/anchors/
    sudo update-ca-trust
  8. Connectez-vous aux registres source et de destination à l'aide de l'adresse Skopeo :

    skopeo login -u kubeadmin -p $(oc whoami -t) $HOST
    skopeo login -u _ -p $AGENT_DOWNLOAD_KEY containers.instana.io
  9. Déterminez les dernières versions disponibles pour chaque composant :

    LATEST_OPERATOR_VERSION=$(skopeo inspect docker://icr.io/instana/instana-agent-operator:latest | jq -r ".Labels.version")
    LATEST_AGENT_VERSION=$(skopeo inspect docker://containers.instana.io/instana/release/agent/static:latest | jq -r ".Labels.version")
    LATEST_K8S_SENSOR_VERSION=$(skopeo inspect docker://icr.io/instana/k8sensor:latest | jq -r '.Labels["com.instana.commit.id"]')
  10. Copiez les composants requis dans le registre local :

    skopeo copy docker://icr.io/instana/instana-agent-operator:latest "docker://${HOST}/instana/instana-agent-operator:${LATEST_OPERATOR_VERSION}"
    skopeo copy docker://containers.instana.io/instana/release/agent/static:latest "docker://${HOST}/instana/instana-agent-static:${LATEST_AGENT_VERSION}"
    skopeo copy docker://icr.io/instana/k8sensor:latest "docker://${HOST}/instana/k8sensor:${LATEST_K8S_SENSOR_VERSION}"

Déploiement du graphique d' Helm de l'agent

Pour récupérer le graphique « Helm », procédez comme suit :

  1. Créer un nouvel espace de noms pour le déploiement de l'agent :

    INSTANA_AGENT_NAMESPACE=instana-agent
    oc new-project ${INSTANA_AGENT_NAMESPACE}
  2. Récupérez le graphique « Helm » sur l'hôte de saut :

    helm pull instana-agent --repo https://agents.instana.io/helm --untar

    Si vous effectuez une mise à niveau plutôt qu'une installation initiale, appliquez manuellement les CRD (définitions de ressources personnalisées) à partir du crds dossier situé dans le répertoire extrait « Helm » :

    oc apply -f instana-agent/crds/
  3. Créez un nouveau fichier custom-values.yaml pour remplacer les références d'images par défaut par celles spécifiques à votre environnement isolé :

    Remarque : Lorsque vous déployez le graphique « Helm » sur le cluster OCP, vous pouvez utiliser les URL du registre interne. image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator:${LATEST_OPERATOR_VERSION} image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static:${LATEST_AGENT_VERSION} image-registry.openshift-image-registry.svc:5000/instana/k8sensor:${LATEST_K8S_SENSOR_VERSION}

    Consultez le fichier custom-values.yaml d'exemple suivant :

    cluster:
      name: demo-cluster
    
    zone:
      name: airgapped-demo
    
    agent:
      endpointHost: ingress-red-saas.instana.io
      endpointPort: 443
      key: xxx
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static
        tag: 1.290.20
    
      configuration_yaml: |
        # Manual a-priori configuration. Configuration will be only used when the sensor
        # is actually installed by the agent.
        # Host
        #com.instana.plugin.host:
        #  tags:
        #    - 'dev'
        #    - 'app1'
    
    k8s_sensor:
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/k8sensor
        tag: b4eac7d
    
    controllerManager:
      image:
        name: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator
        tag: v2.1.20
  4. Accordez les autorisations nécessaires à l'utilisateur ou au groupe « instana-agent » pour exécuter l' DaemonSet ation de l'agent et le déploiement de l'agent distant :

    oc adm policy add-scc-to-user privileged -z instana-agent -n ${INSTANA_AGENT_NAMESPACE}
    oc adm policy add-scc-to-user anyuid -z instana-agent-remote -n ${INSTANA_AGENT_NAMESPACE}
  5. Modifiez la politique de récupération afin de permettre à tous les comptes de service de l'espace de noms « instana-agent » d'accéder aux images de l'espace de noms « instana » :

    oc policy add-role-to-group system:image-puller system:serviceaccounts:instana-agent -n instana
  6. Déployez le diagramme « Helm », qui se trouve dans le répertoire «./instana-agent », dans l'espace de noms « instana-agent » nouvellement créé à l'aide des commandes suivantes :

    helm install instana-agent \
       --namespace ${INSTANA_AGENT_NAMESPACE} \
       -f custom-values.yaml \
       ./instana-agent

Validation du déploiement

Pour valider les images privées déployées sur le cluster, procédez comme suit :

  1. Pour répertorier tous les pods de l'espace instana-agent de noms, exécutez la commande suivante :

    oc get pods -n instana-agent

    Voici un exemple de réponse :

    NAME                                                READY   STATUS    RESTARTS   AGE
    instana-agent-6275r                                 1/1     Running   0          2m52s
    instana-agent-controller-manager-5c9bd89b7c-697mf   1/1     Running   0          3m
    instana-agent-k8sensor-5466f8cb4d-9j7p2             1/1     Running   0          2m52s
    instana-agent-k8sensor-5466f8cb4d-fdwsj             1/1     Running   0          2m52s
    instana-agent-k8sensor-5466f8cb4d-jstc4             1/1     Running   0          2m52s
    instana-agent-sjmtc                                 1/1     Running   0          2m52s
    instana-agent-z5plx                                 1/1     Running   0          2m52s

    Assurez-vous que trois k8sensor pods, un instana-agent-controller-manager pod et un instana-agent pod par nœud de travail sont en cours d'exécution.

  2. Vérifiez les images en exécutant la commande suivante :

    oc get ds,deployment -o yaml | grep "image:"

    Voici un exemple de réponse :

    image: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-static:1.290.20
           image: image-registry.openshift-image-registry.svc:5000/instana/instana-agent-operator:v2.1.20
           image: image-registry.openshift-image-registry.svc:5000/instana/k8sensor:b4eac7d

L'agent est maintenant installé. Pour savoir ce que vous pouvez faire après l'installation, consultez la section « Étapes suivantes ».

Pour plus d'informations sur les points de terminaison de l'agent, consultez la section « Configuration de l'agent hôte ».