При развертывании ресурсов Kubernetes в кластере иногда необходимо развернуть их в определенном порядке. Например, определение пользовательского ресурса (CRD) должно существовать до создания любых пользовательских ресурсов этого типа.
Sveltos может помочь вам решить эту проблему, позволяя указать порядок развертывания ресурсов Kubernetes.
Порядок 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 позволяет клиентам определять порядок:
- Использование поля
helmCharts
: ПолеhelmCharts
позволяет указать список диаграмм Helm, которые необходимо развернуть. Sveltos развернет диаграммы Helm в том порядке, в котором они перечислены в этом поле. - Использование поля
policyRefs
: ПолеpolicyRefs
позволяет ссылаться на список ресурсовConfigMap
и Secret, содержимое которых необходимо развернуть. Sveltos развернет ресурсы в том порядке, в котором они перечислены в этом поле.
Вот несколько примеров:
- Следующий
ClusterProfile
сначала развернет диаграмму Helm Prometheus, а затем диаграмму 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
Порядок развертывания ресурсов с событиями
В некоторых случаях необходимо развернуть ресурсы Kubernetes только после того, как другие ресурсы будут в здоровом состоянии. Например, задача, создающая таблицу в базе данных, не должна развертываться до тех пор, пока развертывание базы данных не будет здоровым.
Sveltos может помочь вам решить эту проблему, позволяя использовать события для управления развертыванием вашего приложения.
Событие — это уведомление, которое отправляется, когда выполняется определенное условие. Например, можно создать событие, которое отправляется, когда развертывание базы данных становится здоровым.
Затем это событие можно использовать для запуска развертывания задания, которое создает таблицу в базе данных.
Использование событий гарантирует, что ваше приложение будет развернуто в контролируемом и организованном порядке.
В приведенном выше примере Sveltos был инструктирован:
- Развернуть развертывание PostgreSQL и сервис
- Подождать, пока развертывание PostgreSQL будет готово
- Развернуть задание, которое создает таблицу в БД
- Подождать, пока задание будет завершено
- Развернуть todo-app, который может получить доступ к развертыванию PostgreSQL
- Подождать, пока todo-app будет здоровым
- Развернуть задание, которое добавляет запись в базу данных через todo-app
Все YAML для этого примера можно найти в документации projectsveltos.
Поддержите этот проект
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.
Вы также можете отметить проект звездочкой, если он вам помог.
Спасибо за внимание!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or