Beim Bereitstellen von Kubernetes-Ressourcen in einem Cluster ist es manchmal notwendig, sie in einer bestimmten Reihenfolge zu deployen. Zum Beispiel muss eine Custom Resource Definition (CRD) vorhanden sein, bevor sich irgendwelche benutzerdefinierten Ressourcen dieses Typs erstellen können.
Sveltos kann Ihnen dabei helfen, dieses Problem zu lösen, indem es Ihnen erlaubt, die Reihenfolge anzugeben, in der Kubernetes-Ressourcen bereitgestellt werden.
ClusterProfile Order
A ClusterProfile is a Kubernetes custom resource definition (CRD) that defines the resources that you want to deploy on a set of Kubernetes clusters.
ClusterProfile ermöglicht es Kunden, eine Reihenfolge zu definieren:
- Verwendung des
helmCharts
-Felds: DashelmCharts
-Feld ermöglicht es Ihnen, eine Liste von Helm-Charts anzugeben, die bereitgestellt werden müssen. Sveltos wird die Helm-Charts in der in diesem Feld aufgeführten Reihenfolge bereitstellen. - Verwendung des
policyRefs
-Felds: DaspolicyRefs
-Feld ermöglicht es Ihnen, eine Liste vonConfigMap
und Secret-Ressourcen zu referenzieren, deren Inhalt bereitgestellt werden muss. Sveltos wird die Ressourcen in der in diesem Feld aufgeführten Reihenfolge bereitstellen.
Hier sind einige Beispiele:
- Die folgende
ClusterProfile
wird zuerst das Prometheus Helm-Chart und dann das Grafana Helm-Chart bereitstellen:
apiVersion: config.projectsveltos.io/v1alpha1
kind: ClusterProfile
metadata:
name: prometheus-grafana
spec:
clusterSelector: env=fv
syncMode: Continuous
helmCharts:
- repositoryURL: https://prometheus-community.github.io/helm-charts
repositoryName: prometheus-community
chartName: prometheus-community/prometheus
chartVersion: 23.4.0
releaseName: prometheus
releaseNamespace: prometheus
helmChartAction: Install
- repositoryURL: https://grafana.github.io/helm-charts
repositoryName: grafana
chartName: grafana/grafana
chartVersion: 6.58.9
releaseName: grafana
releaseNamespace: grafana
helmChartAction: Install
Ressourcenbereitstellungsreihenfolge mit Ereignissen
In einigen Fällen ist es notwendig, Kubernetes-Ressourcen erst dann zu deployen, wenn andere Ressourcen in einem gesunden Zustand sind. Zum Beispiel sollte ein Job, der eine Tabelle in einer Datenbank erstellt, erst dann bereitgestellt werden, wenn die Datenbankbereitstellung gesund ist.
Sveltos kann Ihnen dabei helfen, dieses Problem zu lösen, indem es Ihnen ermöglicht, Ereignisse zur Steuerung des Rollouts Ihrer Anwendung zu nutzen.
Ein Ereignis ist eine Benachrichtigung, die gesendet wird, wenn eine bestimmte Bedingung erfüllt ist. Zum Beispiel könnten Sie ein Ereignis erstellen, das gesendet wird, wenn die Datenbankbereitstellung funktionsfähig wird.
Anschließend können Sie dieses Ereignis verwenden, um die Bereitstellung des Jobs zu triggern, der die Tabelle in der Datenbank erstellt.
Durch die Verwendung von Ereignissen können Sie sicherstellen, dass Ihre Anwendung in kontrollierter und geordneter Weise auf den Markt gebracht wird.
Im obigen Beispiel wurde Sveltos angewiesen:
- PostgreSQL-Bereitstellung und -Dienst bereitstellen
- Warten Sie, bis die PostgreSQL-Bereitstellung bereit ist
- Job bereitstellen, der eine Tabelle in der DB erstellt
- Warten Sie, bis der Job abgeschlossen ist
- todo-app bereitstellen, das auf die PostgreSQL-Bereitstellung zugreifen kann
- Warten Sie, bis die todo-app funktionsfähig ist
- Job bereitstellen, der über die todo-app einen Eintrag in die Datenbank einfügt
Alle YAMLs für dieses Beispiel finden Sie in der Dokumentation von projectsveltos.
Unterstützen Sie dieses Projekt
I hope you enjoyed this article! If you did, please check out the GitHub repo for the project. The repo contains the code, documentation, and examples, so it’s a great resource for getting started.
Sie können das Projekt auch starren, wenn es Ihnen behilflich ist.
Vielen Dank fürs Lesen!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or