Deploy Kubernetes Resources in a Controlled and Orderly Manner

When deploying Kubernetes resources in a cluster, it is sometimes necessary to deploy them in a specific order. For example, a Custom Resource Definition (CRD) must exist before any custom resources of that type can be created.

Sveltos can help you solve this problem by allowing you to specify the order in which Kubernetes resources are deployed.

ClusterProfile Order

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 allows customers to define an order:

Here are some examples:

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


Resource Deployment Order With Events

In some cases, it is necessary to deploy Kubernetes resources only after other resources are in a healthy state. For example, a job that creates a table in a database should not be deployed until the database deployment is healthy.

Sveltos can help you solve this problem by allowing you to use events to control the rollout of your application.

An event is a notification that is sent when a certain condition is met. For example, you could create an event that is sent when the database deployment becomes healthy.

You can then use this event to trigger the deployment of the job that creates the table in the database.

By using events, you can ensure that your application is rolled out in a controlled and orderly manner.

order how manifests are applied to the cluster

In the above example, Sveltos has been instructed to:

  1. Deploy PostgreSQL deployment and service
  2. Wait for PostgreSQL deployment to be ready
  3. Deploy a job that creates a table in the DB
  4. Wait for the job to be completed
  5. Deploy todo-app, which can access PostgreSQL deployment
  6. Wait for the todo-app to be healthy
  7. Deploy a Job that adds an entry to the database via todo-app


All YAMLs for this example can be found in the projectsveltos documentation.

Support This Project

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. 

You can also star the project if you find it helpful.

Thank you for reading!

 

 

 

 

Top