web-dev-qa-db-ja.com

オブジェクトなしでHelmデプロイ

ヘルムで非常にシンプルなチャートを作成しています。これは、Values.yamlファイルのパラメーターがtrueの場合にのみデプロイする必要がある1つのオブジェクト( "/templates/pod.yaml")を使用してチャートをデプロイすることで構成されます。私のケースの例を提供するために、これは私が持っているものです:

/ templates/pod.yaml

{{- if eq .Values.shoudBeDeployed true }}
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    ports:
    - containerPort: 80
{{- end}}

Values.yaml

shoudBeDeployed: true

したがって、true値を指定してshoudBeDeployedを使用すると、helmはそれを正しくインストールします。

私の問題は、shoudBeDeployedがfalseの場合、(予想どおり)helmは何もデプロイしないが、helmは次のメッセージを表示することです。

Error: release CHART_NAME failed: no objects visited

そしてhelm ls CHART_NAMEはSTATUS FAILED

私の質問は、helmデプロイの失敗としてそれを回避する方法があるかどうかです。ですから、コマンドhelm ls

ShoudBeDeployed変数のロジックをチャートの外に移動し、その値に応じてチャートをデプロイできるかどうかを知っていますが、helmを使用するだけのソリューションがあるかどうか知りたいです。

2
pcampana

@pcampanaデプロイするものがない場合、helmのデプロイメントを停止する方法はないと思います。しかし、これが失敗した場合にヘルムチャートを削除するために使用できるトリックです。

helm install --name temp demo --atomic

ここで、demoはヘルムチャートディレクトリで、tempはリリース名です。これが機能するには、リリース名が必須です。

1つのシナリオは、エラーが発生した場合です

エラー:一時の解放に失敗しました:オブジェクトにアクセスしていません

上記のコマンドを使用して、ヘルムチャートを展開できます。

これはあなたに役立つかもしれません。

3
shubham_asati