Bereitstellung des Protokollierungsagent für Kubernetes-Cluster unter Verwendung einer Helm-Karte

Sie können ein Helm Diagramm verwenden, um die Protokollierungsagent v1.6.x bereitzustellen, um Infrastruktur- und Anwendungsprotokolle von einem Kubernetes Cluster zu einer IBM Cloud Logs Instanz zu sammeln und weiterzuleiten.

Sie können auch die Terraform IBM Module (TIM) für Protokollierungsagent verwenden, um den Logs Agent auf unterstützten Kubernetes Clustern einzusetzen und zu konfigurieren. Dieses Modul automatisiert die Helm-basierte Bereitstellung und die wichtigsten Konfigurationseinstellungen durch die Verwendung von Infrastructure as Code ( IaC ) Automation.

Führen Sie die folgenden Schritte aus, um einen Agenten in einem Kubernetes bereitzustellen:

Vorbereitende Schritte

  • Vergewissern Sie sich, dass Sie Zugriff auf den Kubernetes-Cluster haben und berechtigt sind, Namespaces zu erstellen und den Agenten bereitzustellen.

  • Installieren Sie die folgenden CLIs:

    • Die IBM Cloud CLI, um sich bei der IBM Cloud anzumelden und IBM Cloud Dienste wie die Erstellung eines API-Schlüssels zu verwalten.

    • Die Kubernetes-CLI zur Verwaltung des Clusters unter Verwendung von kubectl-Befehlen. Weitere Informationen.

  • Lesen Sie über den Protokollierungsagent.

  • Prüfen Sie die verfügbaren Agentenversionen. Weitere Informationen finden Sie unter Prüfen der verfügbaren Agent-Versionen. Beachten Sie, dass die Version des Helm-Diagramms mit der Version des Agenten übereinstimmt - wenn Sie beispielsweise die Version 1.3.0 des Agenten verwenden, gibt es ein Helm-Diagramm mit der Version 1.3.0, die zu dieser Version gehört.

Schritt 1. Definieren Sie die Authentifizierungsmethode für den Agenten

Wählen Sie die Art der Identität und die Authentifizierungsmethode für den Agenten. Erstellen Sie dann ein vertrauenswürdiges Profil oder einen API-Schlüssel. Die Rolle, die für das Senden von Protokollen an IBM Cloud Logs erforderlich ist, ist Sender.

Sie können eine Dienst-ID oder ein vertrauenswürdiges Profil als Identität verwenden, die vom Agenten zur Authentifizierung beim Dienst IBM® Cloud Logs verwendet wird. Weitere Informationen finden Sie unter Erteilen von IAM-Berechtigungen für die Ingestion.

Wählen Sie eine der folgenden Optionen aus:

Option 1: Authentifizierung mit einem vertrauenswürdigen Profil

Erstellen Sie ein vertrauenswürdiges Profil. Weitere Informationen finden Sie unter Erzeugen eines vertrauenswürdigen Profils für die Aufnahme.

Option 2: Authentifizierung mit einem Dienst-ID-API-Schlüssel

Generieren Sie einen API-Schlüssel für die Dienst-ID-Authentifizierung. Weitere Informationen finden Sie unter Generieren eines API-Schlüssels für die Aufnahme.

Schritt 2. Konfiguration der Helm-Datei mit Diagrammwerten für den Protokollierungsagent

Führen Sie die folgenden Schritte aus:

  1. Erstellen Sie eine Datei namens logs-values.yaml mit folgendem Inhalt:

    Diese Datei enthält die Konfigurationen, die für Ihre Bereitstellung spezifisch sind.

    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. Aktualisieren Sie die Felder in der yaml-Datei mit Werten, die für Ihre Umgebung spezifisch sind.

    Erforderliche Parameter derHelm
    Feldname Beschreibung
    image.version Die Version des zu implementierenden Agenten finden Sie in Schritt 1
    clusterName Der Name des Clusters – hiermit wird das Tag kubernetes.cluster_name in alle Logzeilen eingefügt
    env.ingestionHost Der öffentliche oder private Endpunkt für den Zugriff auf die IBM Cloud Logs-Instanz zum Empfangen der Protokolle
    env.ingestionPort Der Eingangs-Endpunkt-Port
    Öffentlicher Eingangs-Endpunkt = 443
    Privater Eingangs-Endpunkt (VPE) = 443
    Privater Eingangs-Endpunkt (CSE) = 3443
    env.iamMode TrustedProfile oder IAMAPIKey je nach der in Schritt 1 gewählten Authentifizierungsmethode
    env.trustedProfileID Wenn iamMode TrustedProfile ist, geben Sie die Trusted Profile ID an, andernfalls ist dies nicht erforderlich (zum Beispiel: Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ).
    env.iamEnvironment Gibt den korrekten IAM-Authentifizierungsendpunkt vor. Gültige Werte sind Production, PrivateProduction oder Custom. Falls nicht angegeben, ist der Standardwert Production.
    env.iamHost Wenn iamEnvironment Custom ist, geben Sie den IAM-Host an (z. B. private.eu-de.iam.cloud.ibm.com), andernfalls ist dies nicht erforderlich.

Schritt 3. Installieren Sie die Karte Helm

Wenn Sie iamMode als IAMAPIKey verwenden, muss der Apikey in einem Kubernetes Geheimnis mit dem Namen logs-agent und dem Schlüsselnamen IAM_API_KEY vorhanden sein. Das Geheimnis kann mit Hilfe der Helm Karte erstellt werden, indem die Option --set secret.iamAPIKey=<your iamAPIKey> bei der Installation des Steuergeräts angegeben wird. Wenn das Geheimnis manuell erstellt wurde oder wenn Sie iamMode=TrustedProfile verwenden, sollten Sie diese Option nicht angeben.

Führen Sie die folgenden Schritte aus:

  1. Melden Sie sich am Cluster an. Weitere Informationen finden Sie unter Zugriff auf Ihren Cluster.

  2. Führen Sie einen Helm Trockenlauf durch, um die Ressourcen zu sehen, die durch das Helm Diagramm erstellt werden.

    Wenn Sie den Befehl iamMode=TrustedProfile verwenden, lautet der vollständige Befehl:

    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
    

    Wenn Sie den Befehl iamMode=IAMAPIKey verwenden, lautet der vollständige Befehl:

    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
    

    Dabei gilt:

    • <install-name> ist der Name der Helm-Installation (logs-agent)
    • <chart-version> ist die Version der Steuerkarte. Die Helm Kartenversion sollte mit der Version des Agentenbildes übereinstimmen. Weitere Informationen finden Sie unter Helm Diagrammversionen.
    • <PATH> ist der Verzeichnispfad, in dem sich die logs-values.yaml Datei befindet.
    • <APIKey-value> ist der IAM apikey, der mit der ServiceID in Schritt 1 eingerichtet wurde
    • Fügen Sie --hide-secret hinzu, damit der API-Schlüssel nach Ausführung des Befehls nicht mehr in den Ausgabedaten angezeigt wird.

    Wenn Sie den Inhalt der Steuerkarte lokal einsehen möchten, können Sie die Steuerkarte mit dem Befehl auf Ihren Computer herunterladen: helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. Die heruntergeladene tgz-Datei enthält den Inhalt der Karte.

    Sie können zum Beispiel den folgenden Befehl von dem Verzeichnis aus ausführen, in dem die Datei logs-values.yaml verfügbar ist:

    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. Sobald die zu erstellenden Ressourcen verifiziert sind, führen Sie die Helm-Installation ohne die Option --dry-run aus

    Wenn Sie den Befehl iamMode=TrustedProfile verwenden, lautet der vollständige Befehl:

    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
    

    Wenn Sie den Befehl iamMode=IAMAPIKey verwenden, lautet der vollständige Befehl:

    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>
    

    Dabei gilt:

    • <install-name> ist der Name der Helm-Installation (logs-agent)
    • <chart-version> ist die Version der Steuerkarte. Die Helm Kartenversion sollte mit der Version des Agentenbildes übereinstimmen. Weitere Informationen finden Sie unter Helm Diagrammversionen.
    • <PATH> ist der Verzeichnispfad, in dem sich die logs-values.yaml Datei befindet.
    • <APIKey-value> ist der IAM apikey, der mit der ServiceID in Schritt 1 eingerichtet wurde

Schritt 4. Überprüfen Sie, ob der Agent erfolgreich eingesetzt wurde

Überprüfen Sie bei der Bereitstellung des Agenten, ob die folgenden Ressourcen erstellt wurden:

  • Der Namespace ibm-observe.

    Führen Sie den folgenden Befehl aus, um die Namespaces im Cluster aufzulisten, und überprüfen Sie, ob logger-agent den Status active hat.

    kubectl get namespace
    
  • Eine Konfigurationskarte logs-agent im Namensraum ibm-observe.

    Führen Sie den folgenden Befehl aus, um die Details der Agentenkonfiguration anzuzeigen.

    kubectl get configmap logs-agent -n ibm-observe
    

    Sie können auch verwenden:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • Ein Daemonset logs-agent im Namespace ibm-observe.

    Führen Sie den folgenden Befehl aus, um den Daemonset anzuzeigen.

    kubectl get ds -n ibm-observe
    
  • Überprüfen Sie, ob die Agenten gestartet sind:

    kubectl -n ibm-observe get ds logs-agent
    
  • Rufen Sie die Liste der Agent-Pods mit dem folgenden Befehl ab:

    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>
    

    Die Spalte READY zeigt 1/1 für alle Pods, mit einem STATUS von Running. Überprüfen Sie, ob für jeden Knoten in Ihrem Cluster ein Agent-Pod bereitsteht.

    Um zu überprüfen, wie viele Worker in Ihrem Cluster verfügbar sind, können Sie den folgenden Befehl ausführen:

    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
    

    Die Anzahl der Elemente in diesen beiden Listen muss gleich sein, und Sie können die IP-Adressen in den Knotennamen mit den Werten in der Spalte NODE der Pod-Liste abgleichen.

    Wenn Ihre Knoten nicht nach ihrer IP benannt sind, können Sie die Option -o wide anhängen und stattdessen die Werte in der Spalte INTERNAL-IP vergleichen.

    Um die Protokolle eines Pods anzuzeigen, führen Sie kubectl logs <POD_NAME>> -n ibm-observe

    Um die eingesetzte Steuerkarte zu überprüfen, führen Sie helm list -n ibm-observe

Schritt 5. Überprüfen Sie, ob die Protokolle an Ihr Ziel übermittelt werden

Führen Sie die folgenden Schritte aus:

  1. Gehen Sie zur Web-UI für Ihre IBM Cloud LogsInstanz..

  2. Wenn Ihr Agent korrekt konfiguriert ist, können Sie die Protokolle über die Standard-Dashboard-Ansicht einsehen. Der Protokollierungsagent kennzeichnet Protokolleinträge mit einem Kubernetes-Objekt, das den Clusternamen enthält.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    Sie können die Abfrage kubernetes.cluster_name:<YOUR_CLUSTER_NAME> in Ihrer IBM Cloud Logs Instanz ausführen, um nach Protokollen zu suchen, die von Ihrem Cluster erzeugt werden.