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 :
Prérequis
Avant d'installer l'agent, assurez-vous que les conditions préalables sont remplies.
Choisir le mode d'installation de l'agent
Vous pouvez installer l'agent d' Instana ation sur un cluster Red Hat OpenShift en utilisant les méthodes suivantes :
Pour installer l'agent sur Red Hat OpenShift sur la plateforme IBM Z ou LinuxONE, utilisez le graphique disponible à l'adresse Helm (en ligne).
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 :
Complétez les étapes préalables avant de procéder à l'installation de l'opérateur.
Installez l'opérateur en utilisant l'une des méthodes suivantes :
Installez l'opérateur en utilisant Operator Lifecycle Manager (OLM) (de préférence pour Red Hat OpenShift).
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 :
Installez l'opérateur d'agent « Instana » à partir de OperatorHub.io ou du catalogue des applications conteneurisées disponible sur Red Hat OpenShift.
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-agentpour 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.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 :
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 ».
Sur la page du catalogue de déploiement de l'agent, cliquez sur la tuile OpenShift - Operator.
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.yamlAprè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-agentSaisissez 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.
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.
Modifiez le fichier de ressource personnalisée « YAML ». Pour consulter un exemple du fichier « YAML », rendez-vous sur instana_v1_extended_instanaagent.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 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: ...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/tlspour le chiffrement « TLS ». Mais celaagent.tls.secretNamedoit ê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.certificateagent.tls.key
Remarque : siagent.tls.secretNameest défini, alorsagent.tls.certificateetagent.tls.keysont ignorés.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: stagingagent.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 ».
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.namepar 'containers.instana.io/instana/release/agent/static. Voir l'exemple suivant :spec: agent: image: name: containers.instana.io/instana/release/agent/static
Appliquez le fichier de ressource personnalisée « YAML » :
kubectl apply -f instana-agent.customresource.yamloù
instana-agent.customresource.yamlcorrespond 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 :
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 ».
Sur la page du catalogue de déploiement de l'agent, cliquez sur la tuile OpenShift - Helm chart.
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-agentLorsque 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=truePour 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 :
É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"Définir deux zones
- Configurez les nœuds « Instana » sur le
INFRASTRUCTUREmode. - Configurez les nœuds de charge de travail de l'application en mode
APM. - Créez un fichier « YAML
agent_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=trueet 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- Configurez les nœuds « Instana » sur le
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
--setdrapeau ou fournir un fichier de YAML s contenant vos valeurs à l'aide du-fdrapeau. 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 :
- OpenTelemetry Point de terminaison pour
otlpl'ingestion via gRPC - la mise en œuvre de Prometheus«
remote_writeAPI - SDK Web Trace
- autres API d'agent.
- OpenTelemetry Point de terminaison pour
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/tlsVous pouvez utiliser un secret existant de ce type
kubernetes.io/tlspour le chiffrement « TLS ». Mais vous devez spécifier le 'secretNameavec 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.
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
Pour installer l'agent d' Instana ation à l'aide d'un tableau de configuration « Helm » dans un environnement isolé, procédez comme suit :
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_PASSWORDRendez 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}}'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 }}')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 instanaAfficher les informations relatives à l'hôte du registre :
echo "${HOST}" # default-route-openshift-image-registry.apps.myopenshiftcluster.comRé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 --confirmSi 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.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-trustConnectez-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.ioDé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"]')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 :
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}Récupérez le graphique « Helm » sur l'hôte de saut :
helm pull instana-agent --repo https://agents.instana.io/helm --untarSi vous effectuez une mise à niveau plutôt qu'une installation initiale, appliquez manuellement les CRD (définitions de ressources personnalisées) à partir du
crdsdossier situé dans le répertoire extrait « Helm » :oc apply -f instana-agent/crds/Créez un nouveau fichier
custom-values.yamlpour 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.yamld'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.20Accordez 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}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 instanaDé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 :
Pour répertorier tous les pods de l'espace
instana-agentde noms, exécutez la commande suivante :oc get pods -n instana-agentVoici 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 2m52sAssurez-vous que trois
k8sensorpods, uninstana-agent-controller-managerpod et uninstana-agentpod par nœud de travail sont en cours d'exécution.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 ».