Ao implantar recursos do Kubernetes em um cluster, às vezes é necessário implantá-los em uma ordem específica. Por exemplo, uma Definição de Recurso Personalizado (CRD) deve existir antes que qualquer recurso personalizado desse tipo possa ser criado.
Sveltos pode ajudá-lo a resolver esse problema permitindo que você especifique a ordem em que os recursos do Kubernetes são implantados.
Ordem do 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.
O ClusterProfile permite que os clientes definam uma ordem:
- Usando o campo
helmCharts
: O campohelmCharts
permite especificar uma lista de gráficos Helm que precisam ser implantados. Sveltos implantará os gráficos Helm na ordem em que estão listados neste campo. - Usando o campo
policyRefs
: O campopolicyRefs
permite referenciar uma lista de recursosConfigMap
e Secret cujo conteúdo precisa ser implantado. Sveltos implantará os recursos na ordem em que estão listados neste campo.
Aqui estão alguns exemplos:
- O seguinte
ClusterProfile
implantará primeiro o gráfico Helm do Prometheus e depois o gráfico Helm do 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
Ordem de Implantação de Recursos com Eventos
Em alguns casos, é necessário implantar recursos do Kubernetes somente após outros recursos estarem em um estado saudável. Por exemplo, um trabalho que cria uma tabela em um banco de dados não deve ser implantado até que a implantação do banco de dados esteja saudável.
O Sveltos pode ajudar você a resolver este problema permitindo o uso de eventos para controlar o lançamento de seu aplicativo.
Um evento é uma notificação enviada quando uma determinada condição é atendida. Por exemplo, você poderia criar um evento que é enviado quando a implantação do banco de dados fica saudável.
Em seguida, você pode usar esse evento para disparar a implantação do trabalho que cria a tabela no banco de dados.
Ao usar eventos, você pode garantir que seu aplicativo seja lançado de maneira controlada e ordenada.
No exemplo acima, o Sveltos foi instruído a:
- Implantar a implantação e o serviço do PostgreSQL
- Aguardar a implantação do PostgreSQL estar pronta
- Implantar um trabalho que cria uma tabela no BD
- Aguardar o trabalho ser concluído
- Implantar o todo-app, que pode acessar a implantação do PostgreSQL
- Aguardar o todo-app estar saudável
- Implantar um Trabalho que adiciona uma entrada no banco de dados via todo-app
Todos os YAMLs para este exemplo podem ser encontrados na documentação do projectsveltos.
Apoie Este Projeto
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.
Você também pode marcar o projeto com estrela se achar útil.
Obrigado por ler!
Source:
https://dzone.com/articles/deploy-kubernetes-resources-in-a-controlled-and-or