Bij het implementeren van Kubernetes-resources in een cluster, is het soms nodig om ze in een specifieke volgorde te implementeren. Bijvoorbeeld, een Custom Resource Definition (CRD) moet bestaan voordat er enige aangepaste resources van die type kunnen worden gemaakt.
Svelto kan je helpen dit probleem op te lossen door je in staat te stellen de volgorde aan te geven waarin Kubernetes-resources worden geïmplementeerd.
ClusterProfile Volgorde
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 stelt klanten in staat een volgorde te definiëren:
- Met behulp van het
helmCharts
veld: HethelmCharts
veld stelt je in staat een lijst van Helm-charts aan te geven die moeten worden geïmplementeerd. Svelto zal de Helm-charts implementeren in de volgorde waarin ze in dit veld worden vermeld. - Met behulp van het
policyRefs
veld: HetpolicyRefs
veld stelt je in staat een lijst te verwijzen naarConfigMap
en Secret resources waarvan de inhoud moet worden geïmplementeerd. Svelto zal de resources implementeren in de volgorde waarin ze in dit veld worden vermeld.
Hier zijn enkele voorbeelden:
- De volgende
ClusterProfile
zal eerst de Prometheus Helm-chart implementeren en vervolgens de Grafana Helm-chart:
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
Resource Deployment Volgorde Met Gebeurtenissen
In sommige gevallen is het noodzakelijk om Kubernetes-resources alleen te implementeren nadat andere resources in een gezonde staat zijn. Bijvoorbeeld, een taak die een tabel in een database creëert, moet niet worden geïmplementeerd totdat de database-implementatie gezond is.
Sveltos kan je helpen dit probleem op te lossen door je in staat te stellen evenementen te gebruiken om de rollout van je applicatie te beheersen.
Een evenement is een melding die wordt verzonden wanneer een bepaalde voorwaarde is voldaan. Je zou bijvoorbeeld een evenement kunnen maken dat wordt verzonden wanneer de databaseimplementatie gezond wordt.
Je kunt dit evenement vervolgens gebruiken om de implementatie van de taak te activeren die de tabel in de database aanmaakt.
Door evenementen te gebruiken, kun je ervoor zorgen dat je applicatie op een gecontroleerde en ordelijke manier wordt uitgerold.
In bovenstaand voorbeeld is Sveltos geïnstrueerd om:
- PostgreSQL-implementatie en -service implementeren
- Wachten op klaarzijn van PostgreSQL-implementatie
- Een taak implementeren die een tabel in de DB aanmaakt
- Wachten op voltooiing van de taak
- todo-app implementeren, die toegang kan krijgen tot PostgreSQL-implementatie
- Wachten op gezondheid van todo-app
- Een Job implementeren die een vermelding toevoegt aan de database via todo-app
Alle YAML’s voor dit voorbeeld zijn te vinden in de documentatie van projectsveltos.
Steun dit project
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.
Je kunt ook het project starren als je het nuttig vindt.
Bedankt voor het lezen!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or