Envoyer IBM Cloud Kubernetes Service les données du journal vers IBM Cloud Logs

Dans ce tutoriel, vous configurez IBM Cloud® Kubernetes Service pour envoyer les logs directement à IBM Cloud Logs. Ces journaux vous aident à résoudre les problèmes et à améliorer la santé et les performances de vos clusters et applications Kubernetes.

Objectifs

Dans ce tutoriel, vous allez :

  • Déployer le Agent de journalisation dans un cluster IBM Cloud Kubernetes Service existant.

  • Vérifiez que les données de journalisation sont envoyées à votre instance IBM Cloud Logs.

Avant de commencer

Avant de commencer, assurez-vous que vous disposez des prérequis nécessaires.

Une alternative à l'installation du IBM Cloud CLI, kubectl, jq, et yq serait d'utiliser le IBM Cloud Shell

Se connecter à votre cluster

Connectez-vous à votre cluster IBM Cloud Kubernetes Service. La connexion au cluster permet d'exécuter les commandes kubectl sur le cluster.

  1. Connectez-vous à votre compte IBM Cloud. Incluez l'option --sso si vous utilisez un identifiant fédéré.

    ibmcloud login
    
  2. Installer le plug-in CLI IBM Cloud Kubernetes Service

    ibmcloud plugin install ks
    
  3. Dressez la liste des clusters disponibles et notez le cluster à connecter.

    ibmcloud ks clusters
    
  4. Connectez-vous à votre cluster. Remplacez <cluster_name> par le nom de votre cluster.

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. Vérifiez que vous êtes connecté à votre cluster et que vous pouvez exécuter des commandes kubectl en listant tous les pods en cours d'exécution dans tous les espaces de noms.

    kubectl get pods --all-namespaces
    

Création de votre clé d'API

Avant de provisionner le Agent de journalisation en tant que daemonset, vous avez besoin d'une clé API IAM et d'un point de terminaison d'ingestion de journalisation. La CLI IBM Cloud est utilisée pour obtenir ces informations.

Tout d'abord, créez un identifiant de service et obtenez une clé API.

  1. Créez un service ID en exécutant la commande suivante.

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. Accordez le rôle Sender pour IBM Cloud Logs à l'ID de service créé en exécutant la commande suivante.

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. Créez une clé API IAM en exécutant la commande suivante. Vous pouvez personnaliser le nom de la clé (kubernetes-logs-agent-apikey) et la description (--d) si nécessaire.

    ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"
    

    La clé API est renvoyée dans le résultat suivant API Key :

    ID            ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6
    Name          kubernetes-logs-agent-apikey
    Description   API key for sending logs to the IBM Cloud Logs service
    Created At    2024-09-18T17:17+0000
    API Key       <apikey is displayed here>
    Locked        false
    

Remarque :

  • Chaque fois que vous créez une clé API, un nouveau secret IAM est généré.

  • Veillez à stocker la clé API en toute sécurité, car elle contient des informations sensibles.

Déterminer le point de terminaison de l'enregistrement

La deuxième information nécessaire est le point final d'ingestion pour votre instance IBM Cloud Logs. Utilisez cette commande pour récupérer l' URL:

ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'

Le point final est similaire à :

ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com

Création du fichier YAML de l'agent

Dans cette étape, créez le fichier YAML utilisé pour configurer le daemonset de l'agent.

  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.4.0"  # required
    
    clusterName: ""     # 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.

Déploiement du daemonset

À l'aide de la clé API, de l' URL point de terminaison et du fichier YAML, déployez l'agent sur votre cluster.

  1. Connectez-vous au registre Helm en exécutant la commande helm registry login :

    helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.io
    

    Fenêtres Les utilisateurs de Windows PowerShell doivent plutôt utiliser cette commande :

    helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.io
    

    Pour plus d'informations, voir Utilisation des graphiques Helm dans le Container Registry: Extraire des graphiques d'un autre registre ou d'un référentiel Helm.

  2. Déployer l'agent.

    Si vous utilisez une clé API d'identification de service (iamMode=IAMAPIKey), exécutez la commande 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 les versions des cartesHelm
    • <PATH> est le chemin d'accès au répertoire où se trouve le fichier 'logs-values.yaml
    • <APIKey-value> est le code d'accès IAM associé à l'ServiceID défini à l'étape 1

    Vous pouvez également déployer l'agent à l'aide d'un profil de confiance. Pour plus d'informations, voir Déploiement de l'agent de journalisation pour les clusters Kubernetes à l'aide d'une carte Helm.

Vérifier que les journaux sont envoyés

Pour vous assurer que vos journaux IBM Cloud® Kubernetes Service sont bien transférés vers IBM Cloud Logs, procédez comme suit :

  1. Accédez à l'interface utilisateur IBM Cloud Logs et cliquez sur Icône Livetail Livetail.

  2. Cliquez sur Start pour voir les journaux arriver en temps réel.

Un flux continu de données de journal provenant de l'application kube-system devrait être visible. Ces journaux proviennent de votre cluster.