Déployer des ressources Kubernetes de manière contrôlée et ordonnée

Lors du déploiement de ressources Kubernetes dans un cluster, il est parfois nécessaire de les déployer dans un ordre spécifique. Par exemple, une Définition de Ressource Personnalisée (CRD) doit exister avant que des ressources personnalisées de ce type puissent être créées.

Sveltos peut vous aider à résoudre ce problème en vous permettant de spécifier l’ordre dans lequel les ressources Kubernetes sont déployées.

Ordre de ClusterProfile

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 permet aux clients de définir un ordre:

  • Utilisation du champ helmCharts: Le champ helmCharts vous permet de spécifier une liste de charts Helm qui doivent être déployés. Sveltos déploiera les charts Helm dans l’ordre où ils sont listés dans ce champ.
  • Utilisation du champ policyRefs: Le champ policyRefs vous permet de référencer une liste de ressources ConfigMap et Secret dont le contenu doit être déployé. Sveltos déploiera les ressources dans l’ordre où elles sont listées dans ce champ.

Voici quelques exemples:

  • Le ClusterProfile suivant déployera d’abord le chart Helm Prometheus puis le chart Helm Grafana:
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

Ordre de déploiement des ressources avec événements

Dans certains cas, il est nécessaire de déployer des ressources Kubernetes uniquement après que d’autres ressources soient dans un état sain. Par exemple, un job qui crée une table dans une base de données ne doit pas être déployé tant que le déploiement de la base de données n’est pas sain.

Sveltos peut vous aider à résoudre ce problème en vous permettant d’utiliser des événements pour contrôler le déploiement de votre application.

Un événement est une notification envoyée lorsqu’une certaine condition est remplie. Par exemple, vous pourriez créer un événement envoyé lorsque le déploiement de la base de données devient sain.

Vous pouvez ensuite utiliser cet événement pour déclencher le déploiement du travail qui crée la table dans la base de données.

En utilisant des événements, vous pouvez vous assurer que votre application est déployée de manière contrôlée et ordonnée.

Dans l’exemple ci-dessus, Sveltos a été informé de :

  1. Déployer le déploiement et le service PostgreSQL
  2. Attendre que le déploiement PostgreSQL soit prêt
  3. Déployer un travail qui crée une table dans la base de données
  4. Attendre que le travail soit terminé
  5. Déployer l’application todo-app, qui peut accéder au déploiement PostgreSQL
  6. Attendre que l’application todo-app soit saine
  7. Déployer un Job qui ajoute une entrée à la base de données via l’application todo-app

Tous les YAML pour cet exemple peuvent être trouvés dans la documentation de projectsveltos.

Soutenez Ce Projet

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. 

Vous pouvez également marquer le projet si vous le trouvez utile.

Merci de votre lecture !

Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or