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:
-
Erstellen Sie eine Datei namens
logs-values.yamlmit 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 -
Aktualisieren Sie die Felder in der yaml-Datei mit Werten, die für Ihre Umgebung spezifisch sind.
Erforderliche Parameter derHelm Feldname Beschreibung image.versionDie Version des zu implementierenden Agenten finden Sie in Schritt 1 clusterNameDer Name des Clusters – hiermit wird das Tag kubernetes.cluster_namein alle Logzeilen eingefügtenv.ingestionHostDer öffentliche oder private Endpunkt für den Zugriff auf die IBM Cloud Logs-Instanz zum Empfangen der Protokolle env.ingestionPortDer Eingangs-Endpunkt-Port
Öffentlicher Eingangs-Endpunkt =443
Privater Eingangs-Endpunkt (VPE) =443
Privater Eingangs-Endpunkt (CSE) =3443env.iamModeTrustedProfileoderIAMAPIKeyje nach der in Schritt 1 gewählten Authentifizierungsmethodeenv.trustedProfileIDWenn iamModeTrustedProfileist, geben Sie die Trusted Profile ID an, andernfalls ist dies nicht erforderlich (zum Beispiel:Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).env.iamEnvironmentGibt den korrekten IAM-Authentifizierungsendpunkt vor. Gültige Werte sind Production,PrivateProductionoderCustom. Falls nicht angegeben, ist der StandardwertProduction.env.iamHostWenn iamEnvironmentCustomist, 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:
-
Melden Sie sich am Cluster an. Weitere Informationen finden Sie unter Zugriff auf Ihren Cluster.
-
Führen Sie einen Helm Trockenlauf durch, um die Ressourcen zu sehen, die durch das Helm Diagramm erstellt werden.
Wenn Sie den Befehl
iamMode=TrustedProfileverwenden, 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-namespaceWenn Sie den Befehl
iamMode=IAMAPIKeyverwenden, 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-secretDabei 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 dielogs-values.yamlDatei befindet.<APIKey-value>ist der IAM apikey, der mit der ServiceID in Schritt 1 eingerichtet wurde- Fügen Sie
--hide-secrethinzu, 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.yamlverfü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 -
Sobald die zu erstellenden Ressourcen verifiziert sind, führen Sie die Helm-Installation ohne die Option
--dry-runausWenn Sie den Befehl
iamMode=TrustedProfileverwenden, 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-namespaceWenn Sie den Befehl
iamMode=IAMAPIKeyverwenden, 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 dielogs-values.yamlDatei 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-agentden Status active hat.kubectl get namespace -
Eine Konfigurationskarte
logs-agentim Namensraumibm-observe.Führen Sie den folgenden Befehl aus, um die Details der Agentenkonfiguration anzuzeigen.
kubectl get configmap logs-agent -n ibm-observeSie können auch verwenden:
kubectl describe configmaps logs-agent -n ibm-observe -
Ein Daemonset
logs-agentim Namespaceibm-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 wideNAME 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
READYzeigt1/1für alle Pods, mit einemSTATUSvonRunning. Ü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 nodesNAME 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+558d959Die 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
NODEder Pod-Liste abgleichen.Wenn Ihre Knoten nicht nach ihrer IP benannt sind, können Sie die Option
-o wideanhängen und stattdessen die Werte in der SpalteINTERNAL-IPvergleichen.Um die Protokolle eines Pods anzuzeigen, führen Sie
kubectl logs <POD_NAME>> -n ibm-observeUm 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:
-
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.