web-dev-qa-db-ja.com

特定の順序でヘルムインストール

次のリソースでヘルムチャートを作成しようとしています。

  1. 秘密
  2. ConfigMap
  3. サービス
  4. ジョブ
  5. 展開

これらは、デプロイしたい順序でもあります。 Deploymentにフックを配置して、インストール後になるようにしましたが、Helmはそれをリソースとして認識せず、手動で管理する必要があります。

ジョブにはSecretとConfigMapの情報が必要です。それ以外の場合は、プリインストールフックにします。しかし、すべてをフックにすることはできません。そうしないと、リリースで何も管理されません。

Helmリリース内のすべてのリソースを管理し、展開が開始される前にジョブが終了することを確認できるソリューションまたはアイデアはありますか?

私が今考えているのは、2つのチャートを2つ作成することだけです。1つ目は1〜4で、2つ目は5つです。

11
waterprincess

Helmは、指定されたChartとその依存関係のすべてのリソースを収集し、リソースタイプごとにグループ化し、次の順序でインストールします( here -Helm 2.10を参照)。

  1. 名前空間
  2. ResourceQuota
  3. LimitRange
  4. PodSecurityPolicy
  5. 秘密
  6. ConfigMap
  7. StorageClass
  8. PersistentVolume
  9. PersistentVolumeClaim
  10. ServiceAccount
  11. CustomResourceDefinition
  12. ClusterRole
  13. ClusterRoleBinding
  14. 役割
  15. RoleBinding
  16. サービス
  17. デーモンセット
  18. ポッド
  19. ReplicationController
  20. ReplicaSet
  21. 展開
  22. StatefulSet
  23. ジョブ
  24. クロンジョブ
  25. イングレス
  26. APIService

リリースのアンインストール中、順序は逆になります( here を参照)。

このロジックに従って、ジョブリソースが作成された場合、シークレットとConfigMapの両方が既に適用されますが、Helmはジョブの完了を待ってから展開を適用しません。チャートを2つの部分(1〜4、5)に分割して順番にインストールすると、ジョブが完了する前に展開が適用される可能性があります。私が提案するのは、チャートを2つの部分(1-3、4-5)に分割することです。この部分では、ジョブにプレインストールフックがあり、展開が適用される前に確実に完了します。

31
yanivoliver