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 de l'opérateur dans un environnement isolé physiquement

Dans un environnement entièrement isolé physiquement, les nœuds du cluster ne peuvent pas récupérer d'images directement depuis icr.io ou containers.instana.io. Utilisez un serveur relais (bastion) disposant d'un accès à Internet pour copier toutes les images nécessaires dans un référentiel privé accessible par le cluster. Ensuite, déployez l'opérateur à partir des images en miroir.

Les étapes décrites dans cette section utilisent un espace de noms privé dans « IBM Cloud Container Registry » (ICR) comme registre cible. Tout registre compatible OCI accessible depuis l'hôte de relais et depuis le cluster cible convient tout aussi bien, par exemple JFrog Artifactory, Red Hat, Quay, Harbor ou un registre de distribution auto-hébergé. Si vous utilisez un registre autre que l'ICR, ignorez les étapes spécifiques à l'ICR et remplacez les informations relatives à l' URL et aux identifiants d'authentification de votre propre registre partout où icr.io elles apparaissent.

Le déroulement général est le suivant :
[internet] ──pull──▶ jump host ──push──▶ <private-registry>/instana-airgap-mirror ◀──pull── OCP cluster
                      (skopeo)

Le scripts/mirror-instana-images.sh script permet de mettre en miroir les trois composants en une seule exécution :

Tableau 1. Éléments et images sources
Composant Image source
Opérateur icr.io/instana/instana-agent-operator:latest
Agent (statique) containers.instana.io/instana/release/agent/static:latest
Kubernetes capteur icr.io/instana/k8sensor:latest
Remarque : le script copie l'image statique de l'agent. N'utilisez l'image dynamique de l'agent que si vous souhaitez que les mises à jour de l'agent s'effectuent automatiquement.

Conditions préalables à l'installation d'un opérateur en mode « air-gap »

Avant de continuer, installez les outils suivants sur l 'hôte intermédiaire :

Tableau 2. Outils nécessaires pour le « jump host »
Outil Fonction Guide d'installation
skopeo Copier des images de conteneurs entre des registres sans utiliser le démon « Docker » dnf install skopeo et brew install skopeo
jq Analyser les métadonnées de l'image JSON renvoyées par skopeo inspect dnf install jq et brew install jq
oc Interface de ligne de commande OpenShift Distribué avec OpenShift
ibmcloud CLI + module d'extension « Container Registry » Créer et s'authentifier avec l'espace de noms ICR ibmcloud plugin install container-registry
Remarque : l'interface ibmcloud CLI n'est requise que lorsque l'ICR est utilisé comme registre cible. Ignorez cette étape si vous utilisez un autre registre, tel que Artifactory, Quay ou Harbor.
Vérifiez que vous disposez des outils nécessaires :
skopeo --version
jq --version
oc version --client

Installation

Pour installer l'agent à l'aide de l'opérateur dans un environnement isolé physiquement, procédez comme suit :

  1. Préparez votre registre privé et authentifiez Skopeo auprès de celui-ci.
    Remarque : si vous utilisez ICR, suivez les étapes suivantes. Si vous utilisez un autre registre ( Artifactory, Quay, Harbor ou Distribution), créez le référentiel cible correspondant, authentifiez Skopeo à l'aide des identifiants de votre registre, puis passez à l'étape 2.
    1. Connectez-vous à IBM Cloud et créez un espace de noms dédié aux images en miroir :
      ibmcloud login --sso
      ibmcloud cr region-set global
      ibmcloud cr namespace-add instana-airgap-mirror
    2. Créez une clé d' API IAM dédiée pour l'accès non interactif au registre :
      ibmcloud iam api-key-create instana-mirror-key -d "skopeo mirror key"
    3. Exportez la clé sans l'afficher sur le terminal, puis vérifiez que la connexion fonctionne :
      read -rs ICR_API_KEY
      skopeo login --username iamapikey --password "$ICR_API_KEY" icr.io
      skopeo loginRemarque : si un fichier précédent ibmcloud cr login a écrit une identitytoken entrée dans un ~/.docker/config.json champ que skopeo ne peut pas écraser, ouvrez le fichier, supprimez cette icr.io entrée, enregistrez-le, puis réessayez.
  2. Obtenir une clé de téléchargement pour l'agent d' Instana.

    containers.instana.ioL'image statique de l'agent est toujours disponible, ce qui nécessite une clé de téléchargement de l'agent. Vous pouvez le récupérer depuis l'interface utilisateur d' Instana, dans Paramètres → Agents → Installer l'agent, ou en faire la demande auprès de votre équipe de gestion de compte Instana. Enregistrez-le sans l'afficher à l'écran :

    read -rs INSTANA_AGENT_DOWNLOAD_KEY
  3. Synchronisez les images avec le registre privé en exécutant le script de synchronisation depuis l'hôte de saut. Le script détermine la version actuelle :latest de chaque image, copie à la fois la :latest balise et la balise versionnée vers la destination, puis génère un fichier de propriétés contenant toutes les coordonnées déterminées.
    ./scripts/mirror-instana-images.sh \
      --registry      icr.io \
      --namespace     instana-airgap-mirror \
      --dest-creds    "iamapikey:$ICR_API_KEY" \
      --dest-tls-verify true \
      --agent-download-key "$INSTANA_AGENT_DOWNLOAD_KEY"

    Le script génère un mirror-instana-images.properties fichier contenant les coordonnées exactes de l'image déterminées lors de la mise en miroir. Par exemple :

    operator_version=2.2.14
    operator_destination=icr.io/instana-airgap-mirror/instana-agent-operator
    agent_version=1.320.3
    agent_destination=icr.io/instana-airgap-mirror/agent
    k8sensor_version=1.4.16
    k8sensor_destination=icr.io/instana-airgap-mirror/k8sensor
    Remarque : enregistrez ce fichier avec vos manifestes de déploiement. Les coordonnées d'image qu'il contient servent à configurer la InstanaAgent ressource personnalisée lors d'une étape ultérieure.
  4. Vérifiez que les trois dépôts figurent bien dans le registre et qu'ils comportent les balises attendues. Pour ICR, exécutez la commande suivante :
    ibmcloud cr images --restrict instana-airgap-mirror
  5. Créez l'espace de noms cible et attribuez aux comptes de service les contraintes de contexte de sécurité (SCC) requises. Le pod de l'agent s'exécute avec des privilèges (réseau de l'hôte et PID de l'hôte), et le compte de service de l'agent distant doit être utilisé anyuid pour son conteneur init.
    INSTANA_AGENT_NAMESPACE=instana-agent
    
    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}"
  6. Créez un secret « pull » de type « Kubernetes » avec les identifiants du registre, puis pré-créez le compte de service de l'opérateur et associez-lui ce secret avant le déploiement. Créez au préalable le compte de service. Si ce n'est pas le cas, le manifeste de l'opérateur le crée à l'étape suivante, ce qui provoque une ImagePullBackOff erreur lors du premier démarrage.
    oc create secret docker-registry icr-pull-secret \
      --docker-server=icr.io \
      --docker-username=iamapikey \
      --docker-password="$ICR_API_KEY" \
      -n instana-agent
    
    oc create serviceaccount instana-agent-operator -n instana-agent
    oc secrets link instana-agent-operator icr-pull-secret --for=pull -n instana-agent
  7. Téléchargez le dernier manifeste de version et remplacez la référence à l'image de l'opérateur en amont par celle du miroir :
    curl -fsSL \
      https://github.com/instana/instana-agent-operator/releases/latest/download/instana-agent-operator.yaml \
      -o instana-agent-operator.yaml
    
    sed 's|image: icr.io/instana/instana-agent-operator:|image: icr.io/instana-airgap-mirror/instana-agent-operator:|g' \
      instana-agent-operator.yaml > instana-agent-operator-mirrored.yaml
    Remarque : seule la ligne contenant l'image de l'opérateur est remplacée ici. La InstanaAgent ressource personnalisée qui fait référence aux images de l'agent et d' k8sensor s est configurée séparément lors d'une étape ultérieure.
  8. Appliquez le manifeste corrigé et attendez que le déploiement soit terminé :
    oc apply -f instana-agent-operator-mirrored.yaml
    oc rollout status deployment/instana-agent-controller-manager \
      -n instana-agent --timeout=120s
  9. Créez au préalable les comptes de service des agents et associez le secret « pull » à chacun d'entre eux. L'opérateur crée instana-agent et instana-agent-k8sensor lors de la première application de la InstanaAgent ressource personnalisée, mais « OpenShift » ne propage pas les secrets de récupération du compte default de service vers les pods s'exécutant sous ces comptes gérés par l'opérateur. Si vous les créez au préalable, vous éviterez une ErrImagePull erreur lors de la première planification du pod.
    oc create serviceaccount instana-agent -n instana-agent
    oc create serviceaccount instana-agent-k8sensor -n instana-agent
    
    oc secrets link instana-agent icr-pull-secret --for=pull -n instana-agent
    oc secrets link instana-agent-k8sensor icr-pull-secret --for=pull -n instana-agent
    ErrImagePullRemarque : si vous avez déjà déployé la ressource personnalisée et que les pods sont en cours d'exécution, les comptes de service existent, mais le secret n'est pas encore associé. Exécutez les deux oc secrets link commandes précédentes, puis supprimez les pods défaillants afin qu'ils soient replanifiés.
  10. Créez le InstanaAgent manifeste de ressources personnalisées. Remplacez les valeurs par défaut par votre configuration réelle :
    • Remplacez <INSTANA_AGENT_KEY> et <INSTANA_AGENT_DOWNLOAD_KEY> par les clés disponibles dans l'interface utilisateur d' Instana, sous Agents et collecteurs → Installer des agents → Opérateur « OpenShift ».
    • Remplacez les balises d'image par celles provenant de mirror-instana-images.properties.
    • Mettez à jour les champs relatifs au proxy en fonction de votre environnement.
    • Définissez proxyUser et proxyPassword sur des chaînes vides si aucune authentification par proxy n'est requise.
    apiVersion: instana.io/v1
    kind: InstanaAgent
    metadata:
      name: instana-agent
      namespace: instana-agent
    spec:
      zone:
        name: <your_zone_name>
      cluster:
        name: <your_cluster_name>
      agent:
        key: <INSTANA_AGENT_KEY>
        downloadKey: <INSTANA_AGENT_DOWNLOAD_KEY>
        endpointHost: <your-ingress-endpoint>
        endpointPort: "443"
        proxyHost: <proxy-host>
        proxyPort: "3128"
        proxyProtocol: http
        proxyUser: ""
        proxyPassword: ""
        image:
          name: icr.io/instana-airgap-mirror/agent
          tag: "<agent_version>"       # value of agent_version in mirror-instana-images.properties
        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: icr.io/instana-airgap-mirror/k8sensor
          tag: "<k8sensor_version>"    # value of k8sensor_version in mirror-instana-images.properties
    Remarque : aucun pullSecrets champ n'est obligatoire dans la ressource personnalisée, car vous avez fourni les identifiants de récupération d'images en les associant icr-pull-secret aux comptes de service lors de l'étape précédente.
  11. Appliquez la ressource personnalisée :
    oc apply -f instana-agent-cr.yaml
  12. Vérifiez le déploiement en affichant la liste des pods dans l'espace instana-agent de noms :
    oc get pods -n instana-agent

    Une fois le déploiement terminé, vous verrez un instana-agent-controller-manager pod, un instana-agent pod « DaemonSet » par nœud et trois instana-agent-k8sensor pods, tous en Running état « ». Une fois la connexion au backend établie via le proxy configuré, le cluster apparaît dans l'interface utilisateur d' Instana, sous la zone et le nom de cluster configurés.

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

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["org.opencontainers.image.revision"]')
  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 ».