Déploiement du Agent de journalisation pour les clusters Kubernetes à l'aide d'une carte Helm

Vous pouvez utiliser une carte Helm pour déployer la carte Agent de journalisation v1.6.x afin de collecter et d'acheminer les journaux d'infrastructure et d'application d'un cluster Kubernetes vers une instance IBM Cloud Logs.

Vous pouvez également utiliser les modules Terraform IBM (TIM) pour le déploiement et la configuration de l'agent de journalisation sur les clusters pris en charge. Agent de journalisation pour déployer et configurer l'agent de logs sur les clusters Kubernetes pris en charge. Ce module automatise le déploiement basé sur Helm et les paramètres de configuration clés en utilisant l'automatisation de l'infrastructure en tant que code ( IaC ).

Effectuez les étapes suivantes pour déployer un agent sur un cluster Kubernetes:

Avant de commencer

  • Assurez-vous d'avoir accès au cluster Kubernetes avec les autorisations nécessaires pour créer des espaces de noms et déployer l'agent.

  • Installez les interfaces de ligne de commande suivantes :

    • Le IBM Cloud CLI pour se connecter au IBM Cloud et gérer les services IBM Cloud tels que la création d'une clé d'API.

    • L'interface de ligne de commande Kubernetes pour gérer le cluster à l'aide des commandes kubectl. En savoir plus.

  • Découvrez le Agent de journalisation.

  • Vérifiez les versions de l'agent disponibles. Pour plus d'informations, voir Vérifier les versions disponibles de l'agent. Notez que la version du tableau Helm correspond à la version de l'agent - par exemple, si vous utilisez la version 1.3.0 de l'agent, il existe un tableau Helm avec la version 1.3.0 qui va de pair avec cette version.

Etape 1. Définir la méthode d'authentification de l'agent

Choisissez le type d'identité et la méthode d'authentification de l'agent. Créez ensuite un profil de confiance ou une clé API. Le rôle requis pour l'envoi des journaux à IBM Cloud Logs est Sender.

Vous pouvez utiliser un identifiant de service ou un profil de confiance comme identité utilisée par l'agent pour s'authentifier auprès du service IBM® Cloud Logs Pour plus d'informations, voir Octroi d'autorisations IAM pour l'ingestion.

Sélectionnez l'une des options suivantes :

Option 1 : Authentification à l'aide d'un profil de confiance

Créez un profil sécurisé. Pour plus d'informations, voir Générer un profil de confiance pour l'ingestion.

Option 2 : Authentification à l'aide d'une clé API d'identification de service

Générer une clé API pour l'authentification de l'ID de service. Pour plus d'informations, voir Générer une clé API pour l'ingestion.

Étape 2. Configuration du fichier de valeurs graphiques Helm pour le Agent de journalisation

Procédez comme suit :

  1. Créez un fichier nommé logs-values.yaml avec le contenu suivant :

    Ce fichier contient les configurations spécifiques à votre déploiement.

    metadata:
      name: "logs-agent"
    image:
      version: "1.6.1"  # required
    
    clusterName: "ENTER_CLUSTER_NAME"     # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering.
    
    env:
      # ingestionHost is a required field. For example:
      # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com"
      ingestionHost: "" # required
    
      # If you are using private CSE proxy, then use port number "3443"
      # If you are using private VPE Gateway, then use port number "443"
      # If you are using the public endpoint, then use port number "443"
      ingestionPort: "" # required
    
      iamMode: "TrustedProfile"
      # trustedProfileID - trusted profile id - required for iam trusted profile mode
      trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile
    
  2. Mettez à jour les champs du fichier yaml avec des valeurs spécifiques à votre environnement.

    Paramètres requis pour la carte deHelm
    Nom de zone Description
    image.version La version de l'agent à déployer voir Étape 1
    clusterName Le nom du cluster - ceci introduira la balise kubernetes.cluster_name dans toutes les lignes du journal
    env.ingestionHost Le point d'entrée public ou privé pour que l'instance d' IBM Cloud Logs reçoive les journaux
    env.ingestionPort Port d'entrée de l'
    Point d'entrée public = 443
    Point d'entrée privé (VPE) = 443
    Point d'entrée privé (CSE) = 3443
    env.iamMode TrustedProfile ou IAMAPIKey en fonction de la méthode d'authentification choisie à l'étape 1
    env.trustedProfileID Si iamMode est TrustedProfile, alors fournissez l'identifiant de profil de confiance, sinon cela n'est pas nécessaire (par exemple : Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ).
    env.iamEnvironment Détermine le point de terminaison d'authentification IAM correct. Les valeurs valides sont Production, PrivateProduction ou Custom. Si elle est omise, la valeur par défaut est Production.
    env.iamHost Si iamEnvironment est Custom, alors indiquez l'hôte IAM (par exemple : private.eu-de.iam.cloud.ibm.com), sinon cela n'est pas nécessaire.

Étape 3. Installer la carte Helm

Si vous utilisez le site iamMode comme IAMAPIKey, la clé doit être présente dans un secret Kubernetes nommé logs-agent avec le nom de clé IAM_API_KEY. Le secret peut être créé à l'aide de la carte Helm en incluant l'option --set secret.iamAPIKey=<your iamAPIKey> lors de l'installation de la barre. Si le secret a été créé manuellement ou si vous utilisez iamMode=TrustedProfile, n'incluez pas cette option.

Procédez comme suit :

  1. Connectez-vous au cluster. Pour plus d'informations, voir Accéder à votre cluster.

  2. Effectuez un Helm dry run pour voir les ressources qui seront créées par le Helm graphique.

    Si vous utilisez la commande iamMode=TrustedProfile, la commande complète est la suivante :

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    Si vous utilisez la commande iamMode=IAMAPIKey, la commande complète est la suivante :

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value> --hide-secret
    

    où :

    • <install-name> est le nom de l'installation d' Helm s (logs-agent)
    • <chart-version> est la version du diagramme de barre. La version de la carte Helm doit correspondre à la version de l'image de l'agent. Pour plus d'informations, voir Helm versions graphiques.
    • <PATH> est le chemin du répertoire où se trouve le fichier logs-values.yaml.
    • <APIKey-value> est l'apikey IAM associé au ServiceID établi à l'étape 1
    • Ajoutez --hide-secret pour masquer la clé API dans les données de sortie après l'exécution de la commande.

    Si vous souhaitez consulter le contenu de la carte de barre localement, vous pouvez télécharger la carte de barre sur votre ordinateur à l'aide de la commande : helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. Le fichier tgz téléchargé contient le contenu de la carte.

    Par exemple, vous pouvez exécuter la commande suivante à partir du répertoire où se trouve le fichier logs-values.yaml:

    helm install logs-agent --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version 1.6.0 --values ./logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<secret> --hide-secret
    
  3. Une fois que les ressources à créer sont vérifiées, exécutez l'installation de Helm sans l'option --dry-run

    Si vous utilisez la commande iamMode=TrustedProfile, la commande complète est la suivante :

    helm install <install-name>  oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    Si vous utilisez la commande iamMode=IAMAPIKey, la commande complète est la suivante :

    helm install <install-name> oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>
    

    où :

    • <install-name> est le nom de l'installation d' Helm s (logs-agent)
    • <chart-version> est la version du diagramme de barre. La version de la carte Helm doit correspondre à la version de l'image de l'agent. Pour plus d'informations, voir Helm versions graphiques.
    • <PATH> est le chemin du répertoire où se trouve le fichier logs-values.yaml.
    • <APIKey-value> est l'apikey IAM associé au ServiceID établi à l'étape 1

Étape 4. Vérifier que l'agent a été déployé avec succès

Lorsque l'agent est déployé, vérifiez que les ressources suivantes sont créées :

  • L'espace de noms ibm-observe.

    Exécutez la commande suivante pour dresser la liste des espaces de noms dans le cluster et vérifiez que l'espace de noms logger-agent s'affiche avec le statut actif.

    kubectl get namespace
    
  • Une carte de configuration logs-agent dans l'espace de noms ibm-observe.

    Exécutez la commande suivante pour afficher les détails de la configuration de l'agent.

    kubectl get configmap logs-agent -n ibm-observe
    

    Vous pouvez également utiliser :

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • Un daemonset logs-agent dans l'espace de noms ibm-observe.

    Exécutez la commande suivante pour afficher le daemonset.

    kubectl get ds -n ibm-observe
    
  • Vérifiez que les agents sont démarrés :

    kubectl -n ibm-observe get ds logs-agent
    
  • Récupérez la liste des agents pods en utilisant la commande suivante :

    kubectl get pods -n ibm-observe -o wide
    
    NAME                  READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
    logs-agent-4lwvt      1/1     Running   0          2d5h   172.17.61.181   192.168.16.4   <none>           <none>
    logs-agent-g7z87      1/1     Running   0          2d5h   172.17.0.48     192.168.32.4   <none>           <none>
    logs-agent-nw56s      1/1     Running   0          2d5h   172.17.32.232   192.168.0.10   <none>           <none>
    

    La colonne READY indique 1/1 pour toutes les nacelles, avec un STATUS de Running. Vérifiez qu'un module d'agent est prêt pour chaque nœud de votre cluster.

    Pour vérifier le nombre de travailleurs disponibles dans votre cluster, vous pouvez exécuter la commande suivante :

    kubectl get nodes
    
    NAME           STATUS   ROLES           AGE   VERSION
    192.168.0.10   Ready    master,worker   8d    v1.20.0+558d959
    192.168.32.4   Ready    master,worker   8d    v1.20.0+558d959
    192.168.16.4   Ready    master,worker   8d    v1.20.0+558d959
    

    Le nombre d'éléments dans chacune de ces deux listes doit être le même, et vous pouvez faire correspondre les adresses IP des noms de nœuds avec les valeurs de la colonne NODE de la liste de pods.

    Si vos nœuds ne sont pas nommés par leur IP, vous pouvez ajouter l'option -o wide et comparer les valeurs dans la colonne INTERNAL-IP à la place.

    Pour afficher les journaux d'un pod, exécutez kubectl logs <POD_NAME>> -n ibm-observe

    Pour vérifier le diagramme de barre déployé, exécutez helm list -n ibm-observe

Étape 5. Vérifier que les journaux sont livrés à votre destination cible

Procédez comme suit :

  1. Accédez à l'interface web de votre instance IBM Cloud Logs..

  2. Lorsque votre agent est correctement configuré, vous pouvez consulter les journaux dans la vue par défaut du tableau de bord. Le Agent de journalisation marque les enregistrements de log avec un objet kubernetes qui inclut le nom du cluster.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    Vous pouvez exécuter la requête kubernetes.cluster_name:<YOUR_CLUSTER_NAME> dans votre instance IBM Cloud Logs pour rechercher les journaux générés par votre cluster.