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.
-
Der Benutzer wird ein GitRepo erstellen, das auf das multi-cluster/helm-Repository verweist.
-
Das
gitjob-controllerwird Änderungen vom GitRepo synchronisieren und Änderungen vom Polling oder Webhook-Ereignis erkennen. Mit jeder Commit-Änderung wird dasgitjob-controllereinen Job erstellen, der das Git-Repository klont, Inhalte aus dem Repo wiefleet.yamlund andere Manifeste liest und das SUSE® Rancher Prime Continuous Delivery Bundle erstellt.Der Job-Pod mit dem Bildnamen
rancher/tekton-utilswird im selben Namespace wie das GitRepo sein. -
Das
fleet-controllersynchronisiert dann Änderungen vom Bundle. Entsprechend den Zielen wird dasfleet-controllerBundleDeploymentRessourcen erstellen, die eine Kombination aus einem Bundle und einem Ziel-Cluster sind. -
Das
fleet-agentwird dann dasBundleDeploymentvom SUSE® Rancher Prime Continuous Delivery Controlplane abrufen. Der Agent deployt Bundle-Manifeste als Helm-Chart vomBundleDeploymentin die Downstream-Cluster. -
Das
fleet-agentwird 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.
Untersuchung des Bundle-Lebenszyklus mit der Kommandozeilenschnittstelle
Mehrere Fleet-CLI-Befehle helfen beim Debuggen von Bundles.
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.