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.
-
Créer un IBM Cloud® Kubernetes Service, et provisionner une instance de IBM Cloud Logs.
-
Installez l'interface de ligne de commande IBM Cloud.
-
Installez l'outil de ligne de commande Kubernetes, kubectl.
-
Installer le processeur JSON CLI (
jq). -
Installer le processeur YAML CLI (
yq).
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.
-
Connectez-vous à votre compte IBM Cloud. Incluez l'option
--ssosi vous utilisez un identifiant fédéré.ibmcloud login -
Installer le plug-in CLI IBM Cloud Kubernetes Service
ibmcloud plugin install ks -
Dressez la liste des clusters disponibles et notez le cluster à connecter.
ibmcloud ks clusters -
Connectez-vous à votre cluster. Remplacez
<cluster_name>par le nom de votre cluster.ibmcloud ks cluster config --cluster <cluster_name> -
Vérifiez que vous êtes connecté à votre cluster et que vous pouvez exécuter des commandes
kubectlen 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.
-
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" -
Accordez le rôle
Senderpour 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 -
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.
-
Créez un fichier nommé
logs-values.yamlavec 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 -
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.
-
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.ioFenê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.ioPour 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.
-
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 :
-
Accédez à l'interface utilisateur IBM Cloud Logs et cliquez sur
Livetail.
-
Cliquez sur
Startpour 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.