Kubernetes-resources op een gecontroleerde en ordelijke manier implementeren

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: Het helmCharts 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: Het policyRefs veld stelt je in staat een lijst te verwijzen naar ConfigMap 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:
YAML

 

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:

  1. PostgreSQL-implementatie en -service implementeren
  2. Wachten op klaarzijn van PostgreSQL-implementatie
  3. Een taak implementeren die een tabel in de DB aanmaakt
  4. Wachten op voltooiing van de taak
  5. todo-app implementeren, die toegang kan krijgen tot PostgreSQL-implementatie
  6. Wachten op gezondheid van todo-app
  7. 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