コントロールされた秩序ある方法でKubernetesリソースを展開する

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チャートをデプロイします:
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

リソースデプロイ順序とイベント

場合によっては、他のリソースが正常な状態にある場合にのみKubernetesリソースをデプロイする必要があります。例えば、データベース内のテーブルを作成するジョブは、データベースのデプロイが正常であるまでデプロイされないべきです。

Sveltosはイベントを使用してアプリケーションのロールアウトを制御することで、この問題を解決するのに役立ちます。

イベントとは、特定の条件が満たされたときに送信される通知です。例えば、データベースのデプロイが健全になったときに送信されるイベントを作成することができます。

そして、このイベントを使用してデータベース内のテーブルを作成するジョブのデプロイをトリガーすることができます。

イベントを使用することで、アプリケーションが制御された秩序立った方法でロールアウトされることを保証できます。

上記の例では、Sveltosに対して以下の指示がなされています:

  1. PostgreSQLのデプロイメントとサービスをデプロイ
  2. PostgreSQLのデプロイメントが準備できるまで待機
  3. データベース内のテーブルを作成するジョブをデプロイ
  4. ジョブが完了するまで待機
  5. PostgreSQLのデプロイメントにアクセスできるtodo-appをデプロイ
  6. todo-appが健全になるまで待機
  7. 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