Kubernetesリソースをクラスタ内にデプロイする際、特定の順序でデプロイする必要がある場合があります。例えば、Custom Resource Definition(CRD)は、そのタイプのカスタムリソースが作成される前に存在している必要があります。
Sveltosは、Kubernetesリソースのデプロイ順序を指定できるようにすることで、この問題を解決するのに役立ちます。
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を使用して順序を定義できます:
- Using the
helmCharts
field:helmCharts
フィールドを使用すると、デプロイする必要があるHelmチャートのリストを指定できます。Sveltosは、このフィールドにリストされた順序でHelmチャートをデプロイします。 - Using the
policyRefs
field:policyRefs
フィールドを使用すると、内容がデプロイされる必要があるConfigMap
とSecretリソースのリストを参照できます。Sveltosは、このフィールドにリストされた順序でリソースをデプロイします。
以下はいくつかの例です:
- 次の
ClusterProfile
は、まずPrometheus Helmチャートをデプロイし、次にGrafana Helmチャートをデプロイします:
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のデプロイメントが準備できるまで待機
- データベース内のテーブルを作成するジョブをデプロイ
- ジョブが完了するまで待機
- PostgreSQLのデプロイメントにアクセスできるtodo-appをデプロイ
- 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