Distribuire Risorse Kubernetes in Modo Controllato e Ordinato

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 campo helmCharts 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 campo policyRefs ti consente di fare riferimento a un elenco di risorse ConfigMap 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:
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

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:

  1. Distribuire il deployment e il servizio PostgreSQL
  2. Attendere che il deployment PostgreSQL sia pronto
  3. Distribuire un job che crea una tabella nel DB
  4. Attendere che il job sia completato
  5. Distribuire l’app todo-app, che può accedere al deployment PostgreSQL
  6. Attendere che l’app todo-app sia integro
  7. 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