Inviare i dati di log di IBM Cloud Kubernetes Service a IBM Cloud Logs

In questa esercitazione, si imposta IBM Cloud® Kubernetes Service per inviare i log direttamente a IBM Cloud Logs. Questi registri aiutano a risolvere i problemi e a migliorare la salute e le prestazioni dei cluster e delle applicazioni Kubernetes.

Obiettivi

In questa esercitazione si apprende quanto segue:

Prima di iniziare

Prima di iniziare, assicuratevi di possedere i prerequisiti.

Un'alternativa all'installazione della IBM Cloud CLI, kubectl, jq e yq è quella di utilizzare la IBM Cloud Shell

Connettersi al cluster

Collegarsi al cluster IBM Cloud Kubernetes Service. La connessione al cluster consente di eseguire i comandi kubectl sul cluster.

  1. Esegui l'accesso al tuo account IBM Cloud. Includere l'opzione --sso se si utilizza un ID federato.

    ibmcloud login
    
  2. Installare il plug-in IBM Cloud Kubernetes Service CLI

    ibmcloud plugin install ks
    
  3. Elencare i cluster disponibili e prendere nota del cluster da collegare.

    ibmcloud ks clusters
    
  4. Stabilire una connessione al cluster. Sostituire <cluster_name> con il nome del cluster.

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. Verificare che si sia connessi al cluster e che si possano eseguire i comandi kubectl elencando tutti i pod in esecuzione in tutti i namespace.

    kubectl get pods --all-namespaces
    

Creazione della chiave API

Prima di fornire il Agent di registrazione come daemonset, è necessario disporre di una chiave API IAM e di un endpoint di ingestione dei log. Per ottenere queste informazioni si utilizza la CLI IBM Cloud.

Per prima cosa, creare un ID servizio e ottenere una chiave API.

  1. Creare un identificativo del servizio eseguendo il seguente comando.

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. Assegnare il ruolo Sender per IBM Cloud Logs all'ID servizio creato eseguendo il seguente comando.

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. Creare una chiave API IAM eseguendo il seguente comando. È possibile personalizzare il nome della chiave (kubernetes-logs-agent-apikey) e la descrizione (--d), se necessario.

    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 chiave API viene restituita nell'output successivo a 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
    

Nota:

  • Ogni volta che si crea una chiave API, viene generato un nuovo segreto IAM.

  • Assicurarsi di memorizzare in modo sicuro la chiave API, poiché contiene informazioni sensibili.

Determinazione dell'endpoint di registrazione

La seconda informazione necessaria è l'endpoint di ingestione dell'istanza IBM Cloud Logs. Utilizzare questo comando per recuperare 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}]'

Il punto finale è simile a:

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

Creare il file YAML dell'agente

In questo passaggio, si crea il file YAML usato per configurare il daemonset dell'agente.

  1. Creare un file chiamato " logs-values.yaml con il seguente contenuto:

    Questo file contiene le configurazioni specifiche dell'installazione.

    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. Aggiornare i campi del file yaml con i valori specifici del proprio ambiente.

Distribuzione del daemonset

Utilizzando la chiave API, l' URL dell'endpoint e il file YAML, distribuire l'agente nel cluster.

  1. Accedere al registro Helm eseguendo il comando helm registry login :

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

    Finestre Gli utenti di Windows PowerShell dovrebbero invece utilizzare questo comando:

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

    Per ulteriori informazioni, vedere Utilizzo dei grafici Helm nel Container Registry: Prelievo di grafici da un altro registro o repository Helm.

  2. Distribuire l'agente.

    Se si utilizza una chiave API con ID servizio (iamMode=IAMAPIKey), eseguire il comando seguente:

    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>
    

    dove:

    • <install-name> è il nome dell'installazione dell' Helm. (logs-agent)
    • <chart-version> è la versione del grafico del timone. La versione del grafico di Helm deve corrispondere alla versione dell'immagine dell'agente. Per ulteriori informazioni, consultare le versioni del grafico diHelm.
    • <PATH> è il percorso della directory in cui si trova il file 'logs-values.yaml.
    • <APIKey-value> è l'apikey IAM associata alla ServiceID impostata al punto 1

    È anche possibile distribuire l'agente utilizzando un profilo di fiducia. Per ulteriori informazioni, vedere Distribuzione dell'agente di registrazione per cluster Kubernetes utilizzando un grafico Helm.

Verificare che i log vengano inviati

Per assicurarsi che i registri IBM Cloud® Kubernetes Service confluiscano correttamente in IBM Cloud Logs, eseguire le seguenti operazioni:

  1. Accedere a IBM Cloud Logs UI e fare clic su Icona Livetail Livetail.

  2. Fare clic su Start per guardare i log che arrivano in tempo reale.

Si dovrebbe vedere un flusso continuo di dati di log dall'applicazione kube-system. Questi log provengono dal cluster.