Einrichten der Scheinwerfererweiterung
Headlamp ist ein Kubernetes Dashboard, das eine grafische Benutzeroberfläche für die Verwaltung und Überwachung Ihrer Cluster-Ressourcen bietet. Das Headlamp-Add-on für IBM Cloud® Kubernetes Service bietet eine nahtlose Installation von Headlamp mit automatischem Lifecycle-Management und Integration mit IBM Cloud Identity and Access Management (IAM) zur Authentifizierung.
Verstehen des Scheinwerfer-Zusatzes
Das Headlamp Add-on ist der empfohlene Ersatz für das archivierte kubernetes-dashboard Projekt. Headlamp bietet eine moderne, benutzerfreundliche Oberfläche zur Anzeige und Verwaltung von Kubernetes Ressourcen in Ihrem Cluster.
Zu den wichtigsten Merkmalen der Zusatzscheinwerfer gehören:
- IAM OIDC-Authentifizierung: Nahtlose Authentifizierung mit Ihrem IBM Cloud-Konto über IAM OIDC.
- Unabhängiges Lebenszyklus-Management: Die Add-on-Version ist von den Cluster-Master-Stücklistenversionen entkoppelt, so dass unabhängige Updates möglich sind.
- Bereit für den Zugriff: Das Add-on wird automatisch über eine Ingress-Ressource auf dem öffentlichen Standard-Ingress-Hostnamen Ihres Clusters mit einer
headlamp-Subdomäne bereitgestellt. - Sicherer Zugang: Jeder Cluster erhält eine eindeutige OIDC-Client-ID, um Authentifizierungs-Spoofing-Angriffe zu verhindern.
Voraussetzungen
Vergewissern Sie sich vor der Installation des Scheinwerfer-Zusatzmoduls, dass Ihr Kombiinstrument die folgenden Anforderungen erfüllt:
- Sie müssen die IAM-Service-Zugangsrolle Writer oder Manager IBM Cloud für IBM Cloud Kubernetes Service haben.
- Ihr Cluster muss mit einer unterstützten Version von Kubernetes betrieben werden.
- Für Classic-Cluster müssen Sie VRF und Service-Endpunkte aktivieren.
- Ihr Browser muss Zugang haben zu:
- Der Standard-Eingangs-Hostname des Clusters.
- Der IBM Cloud IAM-Autorisierungsendpunkt unter
https://iam.cloud.ibm.com.
Installation des Scheinwerfer-Zusatzgeräts
Das Headlamp-Add-on ist derzeit nur über die CLI verfügbar. Sie können das Add-on nicht über die Konsole IBM Cloud installieren oder verwalten.
Installation des Headlamp-Add-ons über die CLI
- Aktualisieren Sie das Plug-in
container-serviceauf die neueste Version.ibmcloud update && ibmcloud plugin update container-service - Legen Sie Ihren Cluster als Ziel fest.
ibmcloud ks cluster config --cluster CLUSTER_NAME_OR_ID - Aktivieren Sie das
headlamp-Add-on.ibmcloud ks cluster addon enable headlamp --cluster CLUSTER_NAME_OR_ID - Stellen Sie sicher, dass das Headlamp-Add-on den Status. hat
Addon Ready.
Beispielausgabe:ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_IDNAME Version Health State Health Status headlamp 0.1.0 normal Addon Ready - Stellen Sie sicher, dass die Headlamp-Pods laufen.
kubectl get pods -n ibm-system -l app.kubernetes.io/name=addon-headlamp
Zugriff auf das Armaturenbrett des Scheinwerfers
Nachdem Sie das Headlamp-Add-on installiert haben, können Sie über den Standard-Ingress-Hostnamen Ihres Clusters auf das Dashboard zugreifen.
-
Ermitteln Sie den Standard-Ingress-Hostnamen Ihres Clusters.
ibmcloud ks cluster get --cluster <cluster_name_or_ID> | grep "Ingress Subdomain" -
Öffnen Sie Ihren Browser und navigieren Sie zu
https://headlamp.<ingress_subdomain>, wobei<ingress_subdomain>der Standard-Ingress-Hostname Ihres Clusters ist.Beispiel:
https://headlamp.mycluster-abc123-0000.us-south.containers.appdomain.cloud -
Klicken Sie auf Sign In, um sich mit IBM Cloud IAM zu authentifizieren.
-
Wenn Sie nicht bereits bei IBM Cloud angemeldet sind, werden Sie zur IAM-Anmeldeseite weitergeleitet. Nach der Authentifizierung werden Sie wieder zum Headlamp-Dashboard weitergeleitet.
-
Sobald Sie authentifiziert sind, können Sie Ihre Cluster-Ressourcen über die Headlamp-Oberfläche anzeigen und verwalten.
Umstellung von kubernetes-dashboard
Die Kubernetes Gemeinschaft hat das kubernetes-dashboard Projekt archiviert. Nachdem Sie das Headlamp-Add-on installiert haben, können Sie die Kubernetes-Dashboard-Bereitstellung verkleinern, wenn sie in Ihrem Cluster läuft.
Um die Kubernetes-Dashboard-Bereitstellung nach der Installation von Headlamp zu verkleinern:
kubectl scale deployment -n kube-system kubernetes-dashboard --replicas=0
kubectl scale deployment -n kube-system dashboard-metrics-scraper --replicas=0
Die Authentifizierung von Scheinwerfern verstehen
Das Headlamp-Add-on verwendet IBM Cloud IAM OIDC-Authentifizierung, um den Zugriff auf Ihre Cluster-Ressourcen zu sichern.
Wenn Sie das Headlamp-Add-on aktivieren, werden die folgenden Authentifizierungskomponenten automatisch konfiguriert:
- Eindeutige Client-ID: Für Ihren Cluster wird eine eindeutige OIDC-Client-ID erstellt und in einem Kubernetes secret im
ibm-systemNamespace gespeichert. - Hybride privat-öffentliche OIDC: Headlamp verwendet private IAM-Endpunkte für Backchannel-Anfragen, während der Frontchannel - die Anmeldung im Browser - über öffentliche IAM-Endpunkte erfolgt.
- Token-Verwaltung: Authentifizierungs-Tokens werden in Browser-Cookies gespeichert und automatisch in Anfragen an den Kubernetes API-Server aufgenommen.
Der Ablauf der Authentifizierung funktioniert wie folgt:
- Wenn Sie auf das Headlamp-Dashboard zugreifen, wird Ihnen eine Anmeldeseite angezeigt.
- Wenn Sie auf Sign In klicken, werden Sie zum öffentlichen IBM Cloud IAM-Autorisierungsendpunkt weitergeleitet.
- Nach erfolgreicher Authentifizierung leitet IAM Sie mit einem Autorisierungscode zurück zu Headlamp.
- Headlamp tauscht den Autorisierungscode über ein privates Netzwerk gegen ein Zugangs-Token aus.
- Das Zugriffstoken wird zur Authentifizierung von Anfragen an den Kubernetes API-Server verwendet.
Ihr Zugriff auf Cluster-Ressourcen wird durch Ihre IBM Cloud IAM-Rollen und Kubernetes RBAC-Berechtigungen bestimmt, die durch den Kubernetes API-Server erzwungen werden.
Aktualisierung der Scheinwerfererweiterung
Das Headlamp-Add-on wird automatisch aktualisiert, wenn neue Versionen veröffentlicht werden. Sie können jederzeit die aktuelle Version und den Status des Add-ons überprüfen.
So überprüfen Sie die Version des Add-ons:
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
Deaktivieren des Scheinwerfer-Zusatzmoduls
Wenn Sie das Headlamp Dashboard nicht mehr benötigen, können Sie das Add-on deaktivieren.
Wenn Sie das Headlamp-Add-on deaktivieren, werden die folgenden Ressourcen entfernt:
- Einsatz von Scheinwerfern und Pods
- Wartung von Scheinwerfern und Ressourcen für den Zugang
- OIDC-Client-ID und zugehörige Geheimnisse
Deaktivieren des Headlamp-Zusatzes mit der CLI
- Deaktivieren Sie das Zusatzmodul "Scheinwerfer".
ibmcloud ks cluster addon disable headlamp --cluster <cluster_name_or_ID> - Überprüfen Sie, dass das Add-on entfernt wurde.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID>
Zugriff auf Headlamp über private Eingänge auf VPC-Clustern
Konfigurieren Sie Ihren VPC-Cluster so, dass der Zugriff auf Headlamp über den privaten Eingang statt über den öffentlichen Eingang erfolgt, um die Sicherheit zu erhöhen.
Wenn Sie von privaten Netzwerken aus auf Headlamp zugreifen möchten, z. B. über ein VPC VPN, können Sie Ihren Cluster mit den folgenden Schritten neu konfigurieren:
-
Deaktivieren Sie den öffentlichen ALB Ihres Clusters.
ibmcloud ks ingress alb disable --cluster <cluster_name_or_ID> --alb <public_ALB_ID> -
Aktivieren Sie den privaten Zugang.
ibmcloud ks ingress alb enable vpc-gen2 --cluster <cluster_name_or_ID> --alb <private_ALB_ID> -
Registrieren Sie eine Domäne auf dem privaten ALB.
ibmcloud ks ingress domain create --cluster <cluster_name_or_ID> --hostname $<private_ALB_ID_hostname> -
Legen Sie die neue Domäne als Standard fest.
ibmcloud ks ingress domain default replace --cluster <cluster_name_or_ID> --domain <new_domain>
Das IBM Cloud Backend aktualisiert headlamp in etwa 5 Minuten. Wenn die Aktualisierung abgeschlossen ist, ist das Dashboard unter dem neuen Standard-Hostnamen für den Eingang mit der Subdomäne headlamp. verfügbar.
Bereitstellung von Headlamp mit dem Istio-Ingress-Gateway
Wenn Ihr Cluster externen Datenverkehr über das Istio-Ingress-Gateway weiterleitet, können Sie die vom Headlamp-Add-on erstellten Standard-Ingress-Ressourcen deaktivieren und Headlamp stattdessen VirtualService über Istio und Gateway verfügbar machen.
Sie müssen Headlamp über eine von IBM bereitgestellte Subdomain in der Domain *.containers.appdomain.cloud bereitstellen. Die OIDC-Client-ID für Ihren Cluster ist mit einer Weiterleitungs-URI registriert, die dieser Domäne entspricht.
Der Hostname des istio-ingressgateway Load Balancers im Rohformat gehört nicht zu dieser Domäne, und die Authentifizierung schlägt fehl, wenn Sie ihn direkt verwenden.
Vorbereitende Schritte
- Aktiviert das verwaltete Istio-Add-on.
- Konfigurieren Sie
kubectlfür den Cluster.
-
Öffnen Sie die Datei ConfigMap
headlamp-valueszur Bearbeitung, um die standardmäßigen Ingress-Ressourcen zu deaktivieren, die das Headlamp-Add-on erstellt.kubectl edit cm -n ibm-system headlamp-valuesFügen Sie Folgendes in den Abschnitt
dataein, um zu verhindern, dass das Add-on die Standardressourcen NGINX und Traefik Ingress erstellt.data: values.yaml: |- createDefaultPublicIngressNginx: false createDefaultPrivateIngressNginx: false createDefaultPublicIngressTraefik: false createDefaultPrivateIngressTraefik: false -
Warten Sie bis zu 5 Minuten, bis die aktualisierten Werte im Cluster übernommen wurden.
-
Stellen Sie sicher, dass die Standard-Ingress-Ressourcen entfernt wurden.
kubectl get ingress -n ibm-system -
Ermitteln Sie die IP-Adresse (klassische Cluster) oder den Hostnamen (VPC-Cluster) des
istio-ingressgatewayLastenausgleichs.- Klassische Cluster:
kubectl get service istio-ingressgateway -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].ip}' ``` * VPC-Cluster: ```sh {: pre} kubectl get service istio-ingressgateway -n istio-system -o jsonpath='{.status.loadBalancer.ingress[0].hostname}' ``` Wenn der Befehl einen leeren Wert zurückgibt, ist der Lastverteiler noch nicht bereitgestellt. Stellen Sie sicher, dass der Dienst über eine externe IP-Adresse verfügt, und überprüfen Sie die Dienstereignisse auf Fehler, wie z. B. eine Überschreitung der Lastenausgleichs-Kontingentgrenze. {: note} ```sh {: pre} kubectl describe service istio-ingressgateway -n istio-system -
Registrieren Sie die IP-Adresse (klassisch) oder den Hostnamen (VPC) des Load Balancers, indem Sie eine von IBM bereitgestellte Subdomain erstellen. Geben Sie den Namespace
istio-systemfür das TLS-Geheimnis an, damit das TLS-Zertifikat für dieistio-ingressgateway. verfügbar ist.- Klassische Cluster:
ibmcloud ks nlb-dns create classic --cluster <cluster_name_or_ID> --ip <istio_ingressgateway_IP> --secret-namespace istio-system ``` * VPC-Cluster: ```sh {: pre} ibmcloud ks nlb-dns create vpc-gen2 --cluster <cluster_name_or_ID> --lb-host <istio_ingressgateway_hostname> --secret-namespace istio-system ``` -
Stellen Sie sicher, dass die Subdomain erstellt wurde, und notieren Sie sich die Subdomain sowie den geheimen Namen des Zertifikats SSL.
ibmcloud ks nlb-dns ls --cluster <cluster_name_or_ID>Beispielausgabe für klassische Cluster:
Subdomain IP(s) SSL Cert Status SSL Cert Secret Name Secret Namespace mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["168.1.1.1"] created mycluster-a1b2cdef345678g9hi012j3kl4567890-0001 istio-systemBeispielausgabe für VPC-Cluster:
Subdomain Target(s) SSL Cert Status SSL Cert Secret Name Secret Namespace mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud 1234abcd-us-south.lb.appdomain.cloud created mycluster-a1b2cdef345678g9hi012j3kl4567890-0001 istio-systemWenn der Cluster mehrere NLB-DNS-Einträge enthält, identifizieren Sie die im vorherigen Schritt erstellte Subdomain, indem Sie die Spalte
IP(s)oderTarget(s)mit der Adresse desistio-ingressgatewayLoad Balancers abgleichen und überprüfen, ob in der SpalteSecret Namespaceangezeigt wirdistio-system. -
Erstellen Sie eine Datei mit dem Namen, die
headlamp-istio.yamleine undGatewayeine fürVirtualServiceHeadlamp definiert. Ersetzen Sie<subdomain>durch die Subdomain aus dem vorherigen Schritt und<ssl_cert_secret_name>durch den geheimen Namen des Zertifikats SSL.Das Zertifikatsgeheimnis TLS wird im Namespace
istio-systemerstellt. Deristio-ingressgatewayliest das im FeldcredentialNamegenannte Geheimnis aus diesem Namespace aus. Kopieren Sie den Zertifikatswert nicht in die RessourceGateway.apiVersion: networking.istio.io/v1 kind: Gateway metadata: name: headlamp-gateway namespace: ibm-system spec: selector: istio: ingressgateway servers: - port: number: 443 name: https protocol: HTTPS tls: mode: SIMPLE credentialName: <ssl_cert_secret_name> hosts: - <subdomain> --- apiVersion: networking.istio.io/v1 kind: VirtualService metadata: name: headlamp namespace: ibm-system spec: hosts: - <subdomain> gateways: - headlamp-gateway http: - route: - destination: host: headlamp.ibm-system.svc.cluster.local port: number: 80 -
Verwenden Sie die Ressourcen
VirtualServiceundGateway.kubectl apply -f headlamp-istio.yaml -
Öffnen Sie das Headlamp-Dashboard in einem Webbrowser, indem Sie die in Schritt 6 notierte Subdomain verwenden.
https://<subdomain>Um die Verbindung über die Befehlszeile zu überprüfen, führen Sie den folgenden Befehl aus. Verwenden Sie die Option
-k, um die Zertifikatsüberprüfung ausschließlich während des Testbetriebs zu überspringen – verwenden Sie diese Option nicht in-kProduktionsumgebungen.curl -k -s -o /dev/null -w "%{http_code}\n" https://<subdomain>
Kubernetes von dem Addon erstellte Ressourcen
Das Headlamp-Addon erstellt mehrere Kubernetes Ressourcen in Ihrem Cluster, die eine korrekte Netzwerkkonfiguration erfordern.
Wenn Sie eine benutzerdefinierte Firewall oder Netzwerkeinstellungen haben, müssen Sie diese konfigurieren, um die Kommunikation zwischen den folgenden Ressourcen zu ermöglichen:
- 4 Ingress-Ressourcen
- privat mit private-iks-k8s-nginx ingressClass
- öffentlich mit public-iks-k8s-nginx ingressClass
- private mit private-iks-traefik ingressClass
- public mit public-iks-traefik ingressClass
- 1 Dienst ( ClusterIP auf Port 80 → 4466)
- 1 Einsatz
- Scheinwerfer-Container (Hafen 4466)
- nginx-Sidecar-Container
OIDC für das Headlamp-Add-on über öffentliche Endpunkte aktivieren
Falls Ihr Cluster keine Verbindung zu privaten IAM-Endpunkten herstellen kann, überschreiben Sie die OIDC-Endpunkt-Einstellungen, um öffentliche Endpunkte zu verwenden.
Diese Schritte setzen voraus, dass der Cluster auf die öffentlichen IAM-Endpunkte zugreifen kann.
Bevor Sie beginnen, stellen Sie sicher, dass „ kubectl “ für den Cluster konfiguriert ist.
-
Öffnen Sie die Datei ConfigMap
headlamp-valueszur Bearbeitung:kubectl edit cm -n ibm-system headlamp-valuesFügen Sie im Editor im Abschnitt „
data“ Folgendes hinzu. Ersetzen Sie durch<account_id>die ID des Kontos, auf dem der Cluster bereitgestellt ist.data: values.yaml: |- oidc: overrides: tokenEndpointUrl: "https://iam.cloud.ibm.com/identity/token?account=<account_id>" jwksUri: "https://iam.cloud.ibm.com/identity/keys" -
Warten Sie bis zu 5 Minuten, bis die aktualisierten Werte im Cluster übernommen wurden.
-
Starten Sie die Bereitstellung von Headlamp neu:
kubectl rollout restart deployment/headlamp -n ibm-system
Fehlerbehebung bei der Scheinwerfererweiterung
Verwenden Sie die folgenden Informationen, um allgemeine Probleme mit dem Scheinwerfer-Zusatzgerät zu beheben.
Kein Zugriff auf das Armaturenbrett des Scheinwerfers
Wenn Sie nicht auf das Headlamp-Dashboard zugreifen können, überprüfen Sie Folgendes:
- Überprüfen Sie, ob das Add-on installiert ist und ordnungsgemäß funktioniert.
ibmcloud ks cluster addon ls --cluster <cluster_name_or_ID> - Stellen Sie sicher, dass die Headlamp-Pods laufen.
kubectl get pods -n ibm-system -l app.kubernetes.io/name=addon-headlamp - Überprüfen Sie, ob die Ingress-Ressource korrekt konfiguriert ist.
kubectl get ingress -n ibm-system - Stellen Sie bei ausschließlich öffentlichen Clustern sicher, dass die Netzwerksicherheitsregeln ausgehende „ HTTPS “-Verbindungen zu öffentlichen IAM-Endpunkten zulassen. Falls erforderlich, lesen Sie den Abschnitt „OIDC für das Headlamp-Add-on über öffentliche Endpunkte aktivieren“, um die OIDC-Konfiguration zu aktualisieren.
Authentifizierung schlägt fehl
Wenn die Authentifizierung beim Zugriff auf das Headlamp-Dashboard fehlschlägt:
-
Vergewissern Sie sich, dass Sie über die erforderlichen IAM-Berechtigungen für den Zugriff auf den Cluster verfügen.
-
Überprüfen Sie, ob Ihr Browser auf
https://iam.cloud.ibm.comzugreifen kann. -
Löschen Sie Ihre Browser-Cookies und versuchen Sie es erneut.
-
Überprüfen Sie, ob das OIDC-Client-ID-Geheimnis in Ihrem Cluster existiert.
kubectl get secret clientid-secrets -n ibm-system
Die Pods laufen nicht
Wenn die Scheinwerfer nicht in Betrieb sind:
- Prüfen Sie den Pod-Status und die Ereignisse.
kubectl describe pods -n ibm-system -l app.kubernetes.io/name=addon-headlamp - Überprüfen Sie die Pod-Protokolle auf Fehler.
kubectl logs -n ibm-system -l app.kubernetes.io/name=addon-headlamp