Linkerd ist ein leichtgewichtiges, quelloffenes Service Mesh für Kubernetes, das Funktionen wie Beobachtbarkeit, Sicherheit und effizientes Traffic-Management bietet. Es nutzt ein Sidecar-Proxy-Modell, bei dem kleine Proxys die Kommunikation zwischen den Pods übernehmen, während eine zentrale Steuerungsebene (Control Plane) die Konfiguration und das Routing verwaltet.
Diese Schritt-für-Schritt-Anleitung zeigt, wie du Linkerd auf einem Kubernetes Cluster installierst. Außerdem wird erklärt, wie du eine Beispielanwendung bereitstellst, Ingress für externen Zugriff einrichtest und Funktionen für das Traffic-Management aktivierst.
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du folgende Anforderungen erfüllst:
- Einen aktiven Kubernetes Cluster.
- Eine Domain mit einem A-Record, der auf die Load-Balancer-IP deines Clusters zeigt (z. B. linkerd.example.com).
- Zugriff auf einen Ubuntu-basierten Server oder eine lokale Workstation zur Verwaltung deines Clusters und zur Verwendung der Linkerd-CLI.
- Kubectl installiert und so konfiguriert, dass es mit deinem Kubernetes-Cluster kommuniziert.
- Helm auf deiner Workstation installiert.
Passende Infrastruktur bei centron
Vom Container zum Cluster: Managed Kubernetes mit cStack gibt es ab 29,99 € im Monat – Control Plane, AutoScaler und Traffic inklusive. Managed Kubernetes ansehen →
Linkerd-CLI installieren
Installiere die Linkerd-Kommandozeilenschnittstelle (CLI) auf deiner Workstation, um dein Service Mesh zu verwalten.
Systempakete aktualisieren
$ sudo apt updateLinkerd-CLI herunterladen und installieren
$ curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install-edge | shLinkerd zum PATH hinzufügen
$ export PATH=$PATH:$HOME/.linkerd2/binPATH-Änderung dauerhaft speichern
$ echo 'export PATH=$PATH:$HOME/.linkerd2/bin' >> ~/.bashrc
$ source ~/.bashrcCLI-Installation überprüfen
$ linkerd version --clientBeispielausgabe:
Client version: edge-25.10.3
Die Serverversion ist derzeit nicht verfügbar, da die Control Plane noch nicht installiert wurde.
Kubernetes-Cluster validieren
Überprüfe vor der Installation, ob dein Kubernetes-Cluster die Anforderungen von Linkerd erfüllt.
Vorab-Überprüfung durchführen
$ linkerd check --preAlle Tests sollten mit der Meldung Status check results are √ abgeschlossen werden. Behebe eventuelle Fehler, bevor du fortfährst.
Linkerd-Control-Plane installieren
Installiere die Kernkomponenten von Linkerd, die den Service-Mesh-Traffic und die Sicherheit im Cluster verwalten.
Gateway API CRDs installieren
$ kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yamlLinkerd-CRDs installieren
$ linkerd install --crds | kubectl apply -f -Control Plane installieren
$ linkerd install | kubectl apply -f -Installation überprüfen
$ linkerd checkControl-Plane-Pods prüfen
$ kubectl get pods -n linkerdBeispielausgabe:
NAME READY STATUS RESTARTS AGE
linkerd-destination-7b4657cfd8-btqdv 4/4 Running 0 4m40s
linkerd-identity-5584896d84-6pmdm 2/2 Running 0 4m40s
linkerd-proxy-injector-995fcbf47-dv6qr 2/2 Running 0 4m40s
Linkerd-Viz-Erweiterung installieren
Die Viz-Erweiterung fügt Beobachtungsfunktionen hinzu und stellt ein webbasiertes Dashboard zur Überwachung deiner Linkerd-Umgebung bereit.
Viz-Erweiterung installieren
$ linkerd viz install | kubectl apply -f -Viz-Installation überprüfen
$ linkerd viz checkLinkerd-Dashboard bereitstellen
Du kannst das Linkerd-Dashboard sicher über Kubernetes Ingress mit TLS-Verschlüsselung bereitstellen, um einen geschützten Zugriff über den Browser zu ermöglichen.
Nginx Ingress Controller installieren
Installiere den Nginx Ingress Controller, um eingehenden Datenverkehr zu verarbeiten.
Nginx Ingress Helm-Repository hinzufügen
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginxHelm aktualisieren
$ helm repo updateNginx Ingress Controller installieren
$ helm install ingress-nginx ingress-nginx/ingress-nginx \
--create-namespace --namespace ingress-nginxWarten, bis der LoadBalancer eine externe IP erhält
$ kubectl get service -n ingress-nginx ingress-nginx-controllerBeispielausgabe:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.99.177.190 192.0.20.11 80:31460/TCP,443:32364/TCP 3m51s
Notiere den Wert der EXTERNAL-IP. Weise den A-Record deiner Domain dieser IP zu, um den externen Zugriff zu aktivieren.
Nginx Ingress Controller-Pods überprüfen
$ kubectl get pods -n ingress-nginxAuf das Dashboard zugreifen
Greife über deinen Browser auf das gesicherte Linkerd-Dashboard zu, indem du die konfigurierte Domain aufrufst.
Melde dich mit dem zuvor erstellten Benutzernamen und Passwort an. Erkunde das Dashboard, um Cluster-Metriken, die Service-Mesh-Topologie und den Datenverkehrsfluss zu überwachen.
Bereitstellung einer Beispielanwendung
Stelle die Emojivoto-Anwendung bereit, um die Funktionen von Linkerd zu testen und die Integration in das Service Mesh zu überprüfen.
Emojivoto-Anwendung bereitstellen
$ curl -sL https://run.linkerd.io/emojivoto.yml | kubectl apply -f -Bereitstellung überprüfen
$ kubectl get pods -n emojivotoAnwendung in das Mesh integrieren
$ kubectl get -n emojivoto deploy -o yaml | linkerd inject - | kubectl apply -f -Meshed-Anwendung anzeigen
$ linkerd viz -n emojivoto stat deployTraffic-Splitting konfigurieren
Implementiere Canary-Deployments, indem du eine HTTPRoute verwendest, um den Datenverkehr zwischen verschiedenen Anwendungsversionen aufzuteilen.
Zweite Version der Web-Bereitstellung erstellen
$ kubectl get deploy web -n emojivoto -o yaml | \
sed 's/name: web/name: web-v2/' | \
kubectl apply -f -Service für die neue Version erstellen
$ cat <$ cat <
Neue Bereitstellung zum Mesh hinzufügen
$ kubectl get deploy web-v2 -n emojivoto -o yaml | \
linkerd inject - | \
kubectl apply -f -Manifest für Traffic-Splitting erstellen
$ nano traffic-split.yamlFüge die folgende Konfiguration ein:
apiVersion: policy.linkerd.io/v1beta2
kind: HTTPRoute
metadata:
name: web-route
namespace: emojivoto
spec:
parentRefs:
- name: web-svc
kind: Service
group: core
port: 80
rules:
- backendRefs:
- name: web-svc
port: 80
weight: 80
- name: web-v2
port: 80
weight: 20Manifest anwenden
$ kubectl apply -f traffic-split.yamlDatenverkehrsverteilung überprüfen
$ linkerd viz -n emojivoto stat --from deploy/vote-bot deployFazit
Du hast erfolgreich Linkerd auf einem Kubernetes Cluster installiert, das Dashboard sicher über Nginx Ingress mit TLS-Verschlüsselung und Authentifizierung bereitgestellt und eine Beispielanwendung mit Traffic-Splitting implementiert. Weitere Informationen zu erweiterten Funktionen findest du in der offiziellen Linkerd-Dokumentation.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.