Bundle-Lebenszyklus

Ein Bundle ist eine interne Ressource, die für die Orchestrierung von Ressourcen aus Git verwendet wird. Wenn ein GitRepo gescannt wird, erzeugt es ein oder mehrere Bundles.

Um den Lebenszyklus eines SUSE® Rancher Prime Continuous Delivery Bundles zu demonstrieren, verwenden wir multi-cluster/helm als Fallstudie.

  1. Der Benutzer wird ein GitRepo erstellen, das auf das multi-cluster/helm-Repository verweist.

  2. Das gitjob-controller wird Änderungen vom GitRepo synchronisieren und Änderungen vom Polling oder Webhook-Ereignis erkennen. Mit jeder Commit-Änderung wird das gitjob-controller einen Job erstellen, der das Git-Repository klont, Inhalte aus dem Repo wie fleet.yaml und andere Manifeste liest und das SUSE® Rancher Prime Continuous Delivery Bundle erstellt.

    Der Job-Pod mit dem Bildnamen rancher/tekton-utils wird im selben Namespace wie das GitRepo sein.

  3. Das fleet-controller synchronisiert dann Änderungen vom Bundle. Entsprechend den Zielen wird das fleet-controller BundleDeployment Ressourcen erstellen, die eine Kombination aus einem Bundle und einem Ziel-Cluster sind.

  4. Das fleet-agent wird dann das BundleDeployment vom SUSE® Rancher Prime Continuous Delivery Controlplane abrufen. Der Agent deployt Bundle-Manifeste als Helm-Chart vom BundleDeployment in die Downstream-Cluster.

  5. Das fleet-agent wird weiterhin das Anwendungs-Bundle überwachen und Statusberichte in folgender Reihenfolge zurückgeben: BundleDeployment > Bundle > GitRepo > Cluster.

Dieses Diagramm zeigt die verschiedenen Renderphasen, die ein Bundle bis zur Implementierung durchläuft.

Bundle-Stufen

Untersuchung des Bundle-Lebenszyklus mit der Kommandozeilenschnittstelle

Mehrere Fleet-CLI-Befehle helfen beim Debuggen von Bundles.

Ein Diagramm

Fleet anwenden

Anwenden rendert einen Ordner mit Kubernetes-Ressourcen, wie z.B. einem Helm-Chart, Manifeste oder Kustomize-Ordnern, in eine SUSE® Rancher Prime Continuous Delivery Bundle-Ressource.

git clone https://github.com/rancher/fleet-test-data
cd fleet-test-data
fleet apply -n fleet-local -o bundle.yaml testbundle simple-chart/

Weitere Informationen zur Erstellung von Bundles mit fleet apply finden Sie im Abschnitt über Bundles.

Fleet Ziel

Ziel liest ein Bundle aus einer Datei und arbeitet mit einem Live-Cluster, um die bundledeployment & content Ressource auszugeben, die der Fleetcontroller erstellen würde. Es nimmt einen Namespace als Argument, sodass es in diesem Namespace nach z.B. Cluster-Ressourcen suchen kann. Es kann auch die Datenstruktur ausgeben, die während des "Targetings" verwendet wird, sodass Entscheidungen bezüglich Labels und Clusternamen überprüft werden können.

Fleet bereitstellen

Bereitstellen nimmt die Ausgabe von fleet target oder eine ausgegebene BundleDeployment-/Inhaltsressource und stellt sie in einem Cluster bereit, genau wie es der Fleet-Agent tun würde. Es unterstützt einen Trockenlaufmodus, um die Ressourcen auszugeben, die erstellt werden würden, anstatt sie mit Helm zu installieren. Da der Befehl die Eingabressourcen nicht erstellt, würde ein laufender Fleet-Agent wahrscheinlich die Implementierung aufräumen.

Der Bereitstellungsbefehl kann verwendet werden, um Bundles in Air-Gapped-Clustern bereitzustellen.

Lifecycle Kommandozeilenschnittstelle

Fleet-CLI-Befehle helfen Ihnen, den Bundle-Lebenszyklus zu debuggen und zu verstehen. Das folgende Beispiel verwendet den vollständigen Bundle-Lebenszyklus mit der Kommandozeilenschnittstelle:

git clone https://github.com/rancher/fleet-test-data
cd fleet-test-data
fleet apply -n fleet-local -o bundle.yaml testbundle simple-chart/
fleet target --bundle-file bundle.yaml --list-inputs  > bd.yaml
fleet deploy --input-file bd.yaml --dry-run

Für Informationen zu 'apply' siehe Erstellen einer Bundle-Ressource.