Installation de l'opérateur Enterprise d' Instana

Installez l'opérateur « Instana Enterprise » à l'aide du plug-in « kubectl ». Vous devez configurer un ensemble de secrets pour installer l'opérateur Enterprise d' Instana.

Dans cet article, les termes « Kubernetes » et « Red Hat OpenShift » sont utilisés de manière interchangeable. Les références des objets Kubernetes sont également applicables à Red Hat OpenShift.

Création de secrets pour le téléchargement d'images

À moins que vous ne disposiez de votre propre registre Docker en miroir artifact-public.instana.io et que vous n'ayez pas besoin de secrets de récupération, vous devez créer un secret de récupération d'image pour l'espace de noms dans lequel l'opérateur Instana Enterprise sera installé. Suivez ces étapes :

  1. Créez un espace de noms dans lequel l'opérateur Enterprise d' Instana sera installé.

    kubectl create ns <namespace_name>
     

    Remplacez < nom_espace_nom> par le nom d'espace de nom de votre choix, par exemple instana-operator.

  2. Installez le secret dans l'espace de nom que vous avez créé à l'aide de l'une des méthodes suivantes:

    • Créez le secret directement.

      kubectl create secret docker-registry <secret-name> \
          --namespace=<namespace_name> \
          --docker-username=_ \
          --docker-password=<agent_key> \
          --docker-server=artifact-public.instana.io
       
      • Remplacez <namespace_name> par le nom de l'espace de noms dans lequel l'opérateur Enterprise d' Instana sera installé.
      • Remplacez < agent_key> par votre clé d'agent.
      • Remplacez < secret-name> par un nom de secret de votre choix.
    • Créez l' YAML pour le secret sans appliquer l' YAML. Le secret est imprimé sans création.

      kubectl create secret docker-registry <secret-name> \
          --namespace=<namespace_name> \
          --docker-username=_ \
          --docker-password=<agent_key> \
          --docker-server=artifact-public.instana.io \
          --dry-run=client \
          --output=yaml
       

      Ensuite, créez le secret.

      kubectl create -f <secret-file-name.yaml> --namespace <namespace>
       
    • Facultatif : créez un secret de récupération d'image si votre registre d'images interne nécessite une authentification.

      kubectl create secret docker-registry <secret_name> --namespace <namespace> \
      --docker-username=<registry_username> \
      --docker-password=<registry_password> \
      --docker-server=<internal-image-registry>:<internal-image-registry-port> \
      --docker-email=<registry_email>
       

Création de secrets d' TLS s pour le webhook d'admission

L'opérateur est livré avec un webhook d'admission pour la mise en défaut, la validation et la conversion de version. TLS est nécessaire pour un webhook d'admission; en d'autres termes, des certificats d' TLS doivent être mis en place.

Assurez-vous que le secret « TLSinstana-operator-webhook » de type kubernetes.io/tls est bien présent. Vous pouvez choisir d'utiliser soit des certificats « cert-manager », soit des certificats personnalisés.

Utilisation d' cert-manager

Par défaut, cert-manager est utilisé pour provisionner automatiquement le secret. Cela fonctionne immédiatement si cert-manager est installé sur le cluster. Dans ce cas, les objets « Issuer » et « Certificate » sont créés lors de l'installation, ce qui déclenche la procédure de provisionnement et d'injection des certificats par l' cert-manager.

Pour plus d'informations sur l'installation d' cert-manager, consultez la documentation disponible à l'adresse cert-manager.

Utilisation des certificats personnalisés

Nous vous recommandons d'utiliser cert-manager. Toutefois, si vous préférez mettre à disposition les certificats vous-même, vous pouvez le faire. Le secret doit contenir les entrées suivantes :

  • ca.crt
  • tls.crt
  • tls.key

Le certificat (tls.crt) doit contenir les noms de système de noms de domaine suivants :

  • instana-operator.<namespace>.svc
  • instana-operator.<namespace>.svc.<clusterDomain>
  • Remplacez <namespace> par le nom de l'espace de noms dans lequel l'opérateur Enterprise d' Instana sera installé.
  • Remplacez <clusterDomain> par le nom de domaine du cluster sur lequel l'opérateur Instana Enterprise sera installé.

Pour créer un secret instana-operator-webhook de type kubernetes.io/tls« TLS », procédez de l'une des manières suivantes :

  • Créez le secret directement.

    kubectl create secret generic instana-operator-webhook \
        --type=kubernetes.io/tls \
        --from-file=tls.key=path/to/tls.key \
        --from-file=tls.crt=path/to/tls.crt \
        --from-file=ca.crt=path/to/ca.crt
     
  • Créez l' YAML e du mot de passe sans l'appliquer. Le secret est imprimé sans création.

    kubectl create secret generic instana-operator-webhook \
        --type=kubernetes.io/tls \
        --from-file=tls.key=path/to/tls.key \
        --from-file=tls.crt=path/to/tls.crt \
        --from-file=ca.crt=path/to/ca.crt \
        --dry-run=client \
        --output=yaml
     

    Ensuite, créez le secret.

    kubectl create -f <secret-file-name.yaml>
     

Création du fichier de valeurs

Ce values fichier contient les paramètres de configuration de l'opérateur Enterprise d' Instana. Le mécanisme est le même que celui utilisé par Helm.

Les options disponibles que vous pouvez configurer sont répertoriées dans le tableau des options de configuration de l'opérateur d' Instana Enterprise.

Outre les configurations par défaut du fichier values , vous devez mettre à jour la zone imagePullSecrets avec le secret d'extraction d'image que vous avez créé dans la section Création de secrets d'extraction d'image .

Créez un fichier values.yaml dans le répertoire de travail et ajoutez les lignes suivantes:

imagePullSecrets:
  - name: <image_pull_secret>
 
Remarque : Remplacez <image_pull_secret> par le secret de récupération d'image que vous avez créé dans la section « Création de secrets de récupération d'image ».

Consultez l'exemple de fichier values suivant:

operator:
  image:
    registry: my.registry.com
webhook:
  image:
    registry: my.registry.com

imagePullSecrets:
  - name: my-registry-secret
 

Mise à jour du fichier de valeurs pour IBM Z® et LinuxONE ( s390x )

Remarque : cette section s'applique uniquement à l'installation de la version personnalisée sur IBM Z® et LinuxONE ( s390x ).

Assurez-vous que la configuration système requise pour l'édition personnalisée auto-hébergée, telle que décrite sur IBM Z® et LinuxONE ( s390x ), est respectée. Pour plus d'informations, consultez la section « Configuration système requise pour Custom Edition » sur IBM Z® et LinuxONE ( s390x ).

Pour installer Custom Edition sur IBM Z® et LinuxONE ( s390x ), ajoutez les lignes suivantes dans le fichier values.yaml operator :

operator:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: node-role.kubernetes.io/monitor
            operator: In
            values:
            - "true"
  tolerations:
    - key: node.instana.io/monitor
      operator: "Exists"
      effect: "NoSchedule"
webhook:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: node-role.kubernetes.io/monitor
            operator: In
            values:
            - "true"
  tolerations:
    - key: node.instana.io/monitor
      operator: "Exists"
      effect: "NoSchedule"
 

Installation de l'opérateur Enterprise d' Instana

Vous pouvez désormais procéder à l'installation de l'opérateur Enterprise d' Instana. Pour ce faire, vous disposez des deux options suivantes.

Remarque : Instana utilise des images multi-architectures. Les images sont identiques sur toutes les plateformes.

Appliquer directement les manifestes

Cette option crée des définitions de ressources personnalisées et installe le déploiement de l'opérateur et des ressources associées sur le cluster Kubernetes.

Remarque : il convient d'être particulièrement vigilant si vous utilisez cert-manager en association avec un domaine de cluster personnalisé (c'est-à-dire autre que cluster.local) ou si vous avez généré vous-même les certificats.
  • Pour installer l'opérateur Enterprise d' Instana. dans un espace de noms spécifique, tel que instana-operator, exécutez la commande suivante :

    kubectl instana operator apply --values values.yaml --namespace=instana-operator
     
  • Pour installer l'opérateur Enterprise d' Instana dans un espace de noms spécifié à l'aide de certificats personnalisés, exécutez la commande suivante :

    kubectl instana operator apply --values values.yaml --ca-bundle-base64=<base64-encoded ca.crt file> --namespace=instana-operator
     

    Remplacez <base64-encoded ca.crt codé en base64 > par le nom du fichier de bundle de l'autorité de certification base64-encoded .

Générer les manifestes d'abord, puis les appliquer

Rendez les manifestes et écrivez-les d'abord dans la sortie standard (STDOUT) ou dans les fichiers d'un répertoire spécifique. Pour afficher les manifestes, procédez comme suit:

  • Pour générer les fichiers d' YAML s avec un espace de noms spécifié et les enregistrer dans un répertoire spécifié :

    kubectl instana operator template --values values.yaml --namespace=instana-operator --output-dir <dir>
     
  • Pour traiter des fichiers « YAML » avec un espace de noms spécifié et les enregistrer dans un répertoire spécifié à l'aide d'un domaine de cluster personnalisé :

    kubectl instana operator template --values values.yaml --cluster-domain=my-domain.local --namespace=instana-operator --output-dir <dir>
     
  • Pour générer des fichiers ` YAML ` avec un espace de noms spécifié et les enregistrer dans un répertoire donné à l'aide de certificats personnalisés :

    kubectl instana operator template --values values.yaml --ca-bundle-base64=<base64-encoded ca.crt file> --namespace=instana-operator --output-dir <dir>
     

    Remplacez <base64-encoded ca.crt codé en base64 > par le nom du fichier de bundle de l'autorité de certification base64-encoded .

Ensuite, vous pouvez appliquer les manifestes à l'aide des commandes de la rubrique Application directe des manifestes.

Mise à jour de la version du backend

Le backend Instana est déployé avec une version de publication par défaut. Dans l'idéal, utilisez le dernier correctif disponible ou passez à une version plus récente du backend d' Instana.

Vous pouvez utiliser les instana-kubectlversions commandes pour mettre à jour le backend Instana. Pour plus d'informations, voir procédure de mise à niveau.

Vérification du statut d'opérateur d' Instana Enterprise

Pour rechercher des problèmes sur les pods, vérifiez les événements sur les pods.

Pour rechercher tous les événements, exécutez l'une des commandes suivantes:

   oc/kubectl get events -n instana-core
 
    oc/kubectl get events -n instana-units
 

Si vous voyez des erreurs, consultez les journaux de l'opérateur.

Pour vérifier les journaux de l'opérateur, procédez comme suit:

  1. Vérifiez les noms et le statut de l'opérateur:

        oc get pods -n instana-operator
     
  2. Vérifiez les journaux de l'opérateur

        oc logs -f -n instana-operator <Pod name>
     

Facultatif : Utilisation de la configuration avancée des opérateurs

Après avoir installé l'opérateur Instana Instana, vous pouvez le configurer en mettant à jour les values Le fichier YAML que vous avez créé dans la section « Création du fichier de valeurs ».

Pour connaître les options disponibles que vous pouvez configurer, consultez la section « Options de configuration de l'opérateur » de la documentation d' Instana Enterprise.

Une fois le values fichier ` YAML ` mis à jour, appliquez les modifications dans un espace de noms spécifique comme suit :

kubectl instana operator apply --values values.yaml --namespace=instana-operator
 

Instana Options de configuration pour les opérateurs d'entreprise

Les options disponibles que vous pouvez configurer sont répertoriées dans le tableau des options de configuration de l'opérateur d' Instana Enterprise.

Tableau 1. Configuration de l'opérateur d'entreprise
Clé Type Par défaut Description
fullnameOverride chaîne "" Remplace le nom complet du graphique (instana-enterprise-operator).
imagePullPolicy chaîne "IfNotPresent" Stratégie d'extraction d'image.
imagePullSecrets liste [{"name":"instana-registry"}] Liste des secrets d'extraction d'image.
installCRDs booléen true Indique si les définitions de ressources personnalisées sont installées.
nameOverride chaîne "" Remplace le nom du graphique (instana-enterprise-operator).
operator.affinity objet {} Affinité pour le pod de l'opérateur.
operator.clusterDomain chaîne "" Indique un domaine de clusters personnalisé.
operator.enabled booléen true Si la valeur est true, le déploiement de l'opérateur est installé.
operator.extraArgs liste [] Arguments CLI supplémentaires pour le processus opérateur.
operator.extraEnv liste [] Variables d'environnement supplémentaires pour le processus opérateur.
operator.image.registry chaîne "artifact-public.instana.io" Registre d'images à utiliser.
operator.image.repository chaîne "infrastructure/instana-enterprise-operator" Référentiel d'images à utiliser.
operator.image.tag chaîne "" Balise d'image à utiliser. Par défaut, il s'agit de l' appVersion du graphique.
operator.nodeSelector objet {} Sélecteur de noeud pour le pod d'opérateur.
operator.replicas int 1 Nombre de répliques à créer.
operator.resources objet {} Demandes de ressources et limites pour le pod de l'opérateur.
operator.securityContext objet {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true} Contexte de sécurité pour le conteneur d'opérateur.
operator.tolerations liste [] Tolérances pour le pod de l'opérateur.
webhook.affinity objet {} Affinité pour le pod de l'opérateur.
webhook.caBundleBase64 chaîne "" Bundle d'autorité de certification Base64-encoded pour le webhook.
webhook.enabled booléen true Si la valeur est true, le déploiement de webhook est installé.
webhook.extraArgs liste [] Arguments CLI supplémentaires pour le processus opérateur.
webhook.extraEnv liste [] Variables d'environnement supplémentaires pour le processus opérateur.
webhook.image.registry chaîne "artifact-public.instana.io" Registre d'images à utiliser.
webhook.image.repository chaîne "infrastructure/instana-enterprise-operator-webhook" Référentiel d'images à utiliser.
webhook.image.tag chaîne "" Balise d'image à utiliser. Par défaut, il s'agit de l' appVersion du graphique.
webhook.nodeSelector objet {} Sélecteur de noeud pour le pod d'opérateur.
webhook.replicas int 1 Nombre de répliques à créer.
webhook.resources objet {} Demandes de ressources et limites pour le pod de l'opérateur.
webhook.securityContext objet {"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true,"runAsNonRoot":true} Contexte de sécurité pour le conteneur d'opérateur.
webhook.tolerations liste [] Tolérances pour le pod de l'opérateur.