Quando si distribuiscono risorse Kubernetes in un cluster, a volte è necessario distribuire queste risorse in un ordine specifico. Ad esempio, una Custom Resource Definition (CRD) deve esistere prima che possano essere create risorse personalizzate di quel tipo.
Sveltos può aiutarti a risolvere questo problema consentendoti di specificare l’ordine in cui le risorse Kubernetes vengono distribuite.
Ordine 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 consente ai clienti di definire un ordine:
- Utilizzando il campo
helmCharts
: Il campohelmCharts
ti consente di specificare un elenco di grafici Helm che devono essere distribuiti. Sveltos distribuirà i grafici Helm nell’ordine in cui sono elencati in questo campo. - Utilizzando il campo
policyRefs
: Il campopolicyRefs
ti consente di fare riferimento a un elenco di risorseConfigMap
e Secret le cui informazioni devono essere distribuite. Sveltos distribuirà le risorse nell’ordine in cui sono elencate in questo campo.
Ecco alcuni esempi:
- Il seguente
ClusterProfile
distribuirà prima il grafico Helm di Prometheus e poi il grafico Helm di 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
Ordine di distribuzione delle risorse con eventi
In alcuni casi, è necessario distribuire le risorse Kubernetes solo dopo che altre risorse sono in uno stato sano. Ad esempio, un job che crea una tabella in un database non dovrebbe essere distribuito fino a quando la distribuzione del database non è sana.
Sveltos ti aiuta a risolvere questo problema consentendoti di utilizzare eventi per controllare la distribuzione della tua applicazione.
Un evento è una notifica che viene inviata quando si verifica una determinata condizione. Ad esempio, potresti creare un evento che viene inviato quando il deployment del database diventa integro.
Quindi puoi utilizzare questo evento per attivare la distribuzione del job che crea la tabella nel database.
Utilizzando eventi, puoi assicurarti che la tua applicazione venga distribuita in modo controllato e ordinato.
Nell’esempio sopra, Sveltos è stato istruito a:
- Distribuire il deployment e il servizio PostgreSQL
- Attendere che il deployment PostgreSQL sia pronto
- Distribuire un job che crea una tabella nel DB
- Attendere che il job sia completato
- Distribuire l’app todo-app, che può accedere al deployment PostgreSQL
- Attendere che l’app todo-app sia integro
- Distribuire un Job che aggiunge una voce al database tramite l’app todo-app
Tutti i file YAML per questo esempio possono essere trovati nella documentazione di projectsveltos.
Supporta questo Progetto
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.
Puoi anche mettere una stella al progetto se lo trovi utile.
Grazie per la lettura!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or