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 champhelmCharts
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 champpolicyRefs
vous permet de référencer une liste de ressourcesConfigMap
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:
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 :
- Déployer le déploiement et le service PostgreSQL
- Attendre que le déploiement PostgreSQL soit prêt
- Déployer un travail qui crée une table dans la base de données
- Attendre que le travail soit terminé
- Déployer l’application todo-app, qui peut accéder au déploiement PostgreSQL
- Attendre que l’application todo-app soit saine
- 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