Al desplegar recursos de Kubernetes en un clúster, a veces es necesario hacerlo en un orden específico. Por ejemplo, una Definición de Recursos Personalizados (CRD) debe existir antes de que se puedan crear cualquier recurso personalizado de ese tipo.
Sveltos puede ayudarte a resolver este problema permitiéndote especificar el orden en que se despliegan los recursos de Kubernetes.
Orden 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 permite a los clientes definir un orden:
- Usando el campo
helmCharts
: El campohelmCharts
te permite especificar una lista de gráficos de Helm que necesitan ser desplegados. Sveltos desplegará los gráficos de Helm en el orden en que están listados en este campo. - Usando el campo
policyRefs
: El campopolicyRefs
te permite referenciar una lista de recursosConfigMap
y Secret cuyos contenidos necesitan ser desplegados. Sveltos desplegará los recursos en el orden en que están listados en este campo.
Aquí hay algunos ejemplos:
- El siguiente
ClusterProfile
primero desplegará el gráfico de Helm de Prometheus y luego el de 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
Orden de Despliegue de Recursos con Eventos
En algunos casos, es necesario desplegar recursos de Kubernetes solo después de que otros recursos estén en un estado saludable. Por ejemplo, un trabajo que crea una tabla en una base de datos no debería desplegarse hasta que el despliegue de la base de datos esté saludable.
Sveltos puede ayudarte a resolver este problema permitiéndote utilizar eventos para controlar el despliegue de tu aplicación.
Un evento es una notificación que se envía cuando se cumple una determinada condición. Por ejemplo, podrías crear un evento que se envíe cuando la implementación de la base de datos se vuelva sana.
Luego, puedes utilizar este evento para desencadenar la implementación del trabajo que crea la tabla en la base de datos.
Al utilizar eventos, puedes asegurarte de que tu aplicación se despliegue de manera controlada y ordenada.
En el ejemplo anterior, Sveltos ha recibido instrucciones para:
- Implementar la implementación y el servicio de PostgreSQL
- Esperar a que la implementación de PostgreSQL esté lista
- Implementar un trabajo que cree una tabla en la BD
- Esperar a que el trabajo se complete
- Implementar la aplicación de todo-app, que puede acceder a la implementación de PostgreSQL
- Esperar a que la aplicación de todo-app esté sana
- Implementar un Job que añada una entrada a la base de datos a través de todo-app
Todos los YAMLs para este ejemplo se pueden encontrar en la documentación de projectsveltos.
Apoya Este Proyecto
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.
También puedes marcar el proyecto si lo encuentras útil.
¡Gracias por leer!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or