Fleet CLI installieren und verwenden

SUSE® Rancher Prime Continuous Delivery CLI ist eine Befehlszeilenschnittstelle (CLI), die es Ihnen ermöglicht, direkt von Ihrem lokalen Rechner mit SUSE® Rancher Prime Continuous Delivery zu interagieren. Es ermöglicht Ihnen, bundles zu erstellen, anzuwenden und zu inspizieren, ohne dass ein GitRepo erforderlich ist. Typische Anwendungsfälle sind:

  • Testen und Vorschau der Inhalte von Bundles.

  • Erstellen von Bundles direkt aus Helm-Charts, Kubernetes-Manifests und fleet.yaml-Dateien.

  • Überprüfen, welche Cluster ein Bundle anvisieren würde.

  • Validierung von Implementierungen, ohne SUSE® Rancher Prime Continuous Delivery im Cluster zu installieren.

Sie können fleet apply verwenden, ohne SUSE® Rancher Prime Continuous Delivery in Ihren Clustern zu installieren. Für die Interaktion mit Clustern (zum Beispiel fleet target, fleet deploy) muss jedoch SUSE® Rancher Prime Continuous Delivery installiert sein.

Für weitere Informationen siehe Install Fleet.

Installieren Sie Fleet CLI

Fleet CLI ist eine eigenständige Binärdatei, die Sie von der Fleet GitHub Releases-Seite herunterladen können.

Linux/macOS

curl -L -o fleet https://github.com/rancher/fleet/releases/latest/download/fleet-linux-amd64

# Make it executable and move to PATH
chmod +x fleet
sudo mv fleet /usr/local/bin/

Windows (PowerShell)

Invoke-WebRequest -Uri "https://github.com/rancher/fleet/releases/latest/download/fleet-windows-amd64.exe" -OutFile "fleet.exe"

Installation überprüfen

fleet --version

Voraussetzungen

Stellen Sie sicher, dass Sie die folgenden Tools installiert und konfiguriert haben:

  • Ein funktionierender Kubernetes-Cluster (zum Beispiel k3s, kind oder ein Cloud-Anbieter).

  • kubectl ist für Ihren Cluster konfiguriert.

  • Helm ist installiert.

  • Fleet CLI ist installiert und in Ihrem Terminal zugänglich.

Voraussetzungen überprüfen

kubectl get nodes
helm version
fleet --version

Wichtige Befehle

SUSE® Rancher Prime Continuous Delivery bietet mehrere CLI-Befehle zum Erstellen, Vorschauen und Bereitstellen von Bundles. Diese Befehle sind nützlich zum Debuggen und Verstehen des Bundle-Lebenszyklus.

  • fleet apply: Erstellt oder zeigt ein Bundle aus lokalen Dateien an, wie z.B. einem Helm-Chart, Kubernetes-Manifests oder Kustomize-Ordnern. Dieser Befehl erfordert keinen Zugriff auf einen Cluster, sodass er auch ohne SUSE® Rancher Prime Continuous Delivery oder kubectl funktioniert.

    Beispiel:

fleet apply my-bundle ./manifests
  • fleet target: Liest eine Bundle-Datei und bewertet, welche Cluster es erhalten würden, basierend auf Selektoren und Zielregeln wie targets, targetOverrides, clusterGroups und Label-Selektoren.

    Beispiel:

fleet target my-bundle ./manifests
  • fleet deploy: Nimmt die Ausgabe von fleet target oder einer dumpierten bundledeployment/content-Ressource und stellt sie in einem Cluster bereit – genau wie fleet-agent es tun würde.

    Sie können es in diesen Szenarien verwenden: fleet apply -o - name ./folder, um die YAML des Bundles vor der Erstellung zu überprüfen. Für weitere Informationen siehe Untersuchung des Bundle-Lebenszyklus mit der CLI. Verwenden Sie es mit einem Ziel, um Selektoren zu debuggen und zu überprüfen, welche Downstream-Cluster angesprochen werden. ** fleet deploy --dry-run, um Ressourcen anzuzeigen, die bereitgestellt werden würden, ohne sie anzuwenden.

Ein Diagramm

Ein Beispiel-Bundle mit Fleet CLI bereitstellen

Sie können Workloads bereitstellen, ohne GitRepos zu verwenden, indem Sie sie lokal mit der Kommandozeilenschnittstelle anwenden. Zum Beispiel verwenden Sie das Fleet-Beispiele-Repository:

git clone https://github.com/rancher/fleet-examples
cd fleet-examples/single-cluster

Wenden Sie es auf den aktuellen Cluster an:

fleet apply -o my-cool-bundle manifests

Dieser Befehl erstellt eine Bundle Ressource im Namespace.

Konvertieren Sie ein Helm-Chart in ein Bundle.

Sie können die Fleet CLI verwenden, um ein Helm-Chart in ein Bundle zu konvertieren. Zum Beispiel, um das external-secrets Operator-Chart zu konvertieren:

cat > targets.yaml <<EOF
targets:
- clusterSelector: {}
EOF

mkdir app
cat > app/fleet.yaml <<EOF
defaultNamespace: external-secrets
helm:
  repo: https://charts.external-secrets.io
  chart: external-secrets
EOF

fleet apply --compress --targets-file=targets.yaml -n fleet-default -o - external-secrets app > eso-bundle.yaml

kubectl apply -f eso-bundle.yaml

Stellen Sie sicher, dass Sie einen Cluster-Selector in targets.yaml verwenden, der mit allen Clustern übereinstimmt, auf die Sie bereitstellen möchten.

Fehlerbehebung

Wenn das Bundle nicht bereit ist:

  • Überprüfen Sie, ob die fleet-controller und fleet-agent Pods laufen.

  • Stellen Sie sicher, dass der fleet-local Cluster registriert ist.

  • Überprüfen Sie das Bundle auf Fehlermeldungen:

    kubectl describe bundle -n fleet-local <bundle-name>
  • Löschen und wenden Sie das Bundle erneut an, wenn Sie auf Konflikte mit Helm-Besitzrechten stoßen.

Überprüfen Sie den Status von Agent und Controller.

Bevor Sie Probleme mit dem Bundle oder der Bereitstellung beheben, vergewissern Sie sich, dass der Fleet-Agent registriert ist und im Downstream-Cluster aktiv ist. Für weitere Informationen siehe Fleet-Agent ist registriert, überwacht BundleDeployments.

Wenn ein Bundle in einem bestimmten Cluster nicht bereit ist, überprüfen Sie Folgendes:

  • Im Management-Cluster:

    • Überprüfen Sie, ob die fleet-controller und gitjob Pods (oder helmops, je nach Ihrer Konfiguration) laufen.

    • Stellen Sie sicher, dass der Cluster-Status Bereit anzeigt.

    • Überprüfen Sie den Status des Bundles – es sollte eine Fehlermeldung enthalten, wenn die Implementierung fehlgeschlagen ist.

  • Im Ziel-Cluster, in dem das Bundle nicht bereit ist:

    • Überprüfen Sie, ob dieser Ziel-Cluster registriert ist und einen laufenden fleet-agent Pod hat.

    • Als letzte Möglichkeit überprüfen Sie die Protokolle des fleet-agent Pods.