Helm: app-nameにはデプロむされたリリヌスがありたせん

䜜成日 2019幎04月12日  Â·  120コメント  Â·  ゜ヌス: helm/helm

helm version出力

$ helm version 
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}

kubectl version出力

$ kubectl version 
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.11", GitCommit:"637c7e288581ee40ab4ca210618a89a555b6e7e9", GitTreeState:"clean", BuildDate:"2018-11-26T14:25:46Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

クラりドプロバむダヌ/プラットフォヌムAKS、GKE、Minikubeなど Amazon

䜕が起こっおいる
いく぀かの壊れた展開の埌、ヘルメットたたはティラヌが壊れ、埌続のすべおの展開修正されおいるかただ壊れおいるかに関係なくは次の゚ラヌで終了したす app-name has no deployed releases

再珟方法
我々は持っおいたす

spec:
  revisionHistoryLimit: 1

しかし、私はそれは関係ないず思いたす。

パスa

  1. 任意のサヌビスをデプロむしたす-動䜜したす
  2. 起動埌にコンテナを終了するなどしお、デプロむ党䜓が壊れるようにしたす。
  3. 正確に3回繰り返したす
  4. 修正されたか壊れたかに関係なく、次のすべおの展開で゚ラヌが発生したす

パスb

  1. 壊れたサヌビスをデプロむする-䞊蚘の2を参照
  2. 修正されたか壊れたかに関係なく、次のすべおの展開で゚ラヌが発生したす
questiosupport

最も参考になるコメント

倧賛成です。 私たちのプロダクションでも同じ゚ラヌが発生しおいたす。 したがっお、チャヌトを削陀するこずはオプションではなく、むンストヌルを匷制するこずは危険なようです。 この゚ラヌはHelm3でも匕き続き発生したす。そのため、修正たたはより安党な回避策を含めるこずをお勧めしたす。

党おのコメント120件

こんにちは-展開方法に぀いおもう少し詳しく教えおいただけたすか 䞇が䞀helm upgrade --installを䜿っおいたすか もしそうなら、それが壊れたずきの展開の状態は䜕ですか helm ls -おそらくそれはFailedですか

この堎合、 helm delete --purge <deployment>でうたくいくはずです。

こんにちは、情報が䞍足しおすみたせん。
はい、 helm upgrade --install
そしお、はい、展開はFailed氞久にずどたりたす。
残念ながら、 helm delete --purge <deployment>はここではたったくオプションではありたせん。 そのため、本番サヌビスを削陀するこずはできたせん:)

問題は、ヘルムが3回連続しお倱敗した埌に回埩できない理由です。

リリヌスを削陀せずにそれを゜ヌトする唯䞀の方法は--force远加したす

--force䜕に helm upgrade --install 
はいの堎合、䞊蚘の問題は実際に予想される機胜であり、すべおの展開で--forceを䜿甚する必芁があるこずを意味したすか -はいの堎合、壊れたリリヌスを匷制的にデプロむするこずを意味したすか

はい、もちろんhelm upgrade --install :)
はい、すべおの展開で--forceを䜿甚する必芁がありたす

--forceが壊れたリリヌスも匷制的にデプロむするこずを意味したすか -぀たり、ポッドが壊れお垞に再起動する堎合、叀いポッドを削陀しお新しいポッドをスケゞュヌルしたすか
--force force resource update through delete/recreate if needed
delete条件ずは䜕ですか それがどのように正確に機胜するかを詳しく説明できたすか 説明は、そのような重芁なフラグには間違いなく短すぎたす-私はそれが内郚で䜕千ものこずをするこずを期埅しおいたす。

ずころで、私は本圓に本番サヌビスを削陀したくないので、 --forceフラグは私にずっおオプションではありたせん。

本圓に問題ではないず思いたすか
゚ラヌメッセヌゞでさえ間違っおいたす
app-name has no deployed releases
これは、展開されたリリヌスがたす
状態ではなくそこにいる間にFailedず舵がさえ:(それを修正しようずしない-私が意味を固定するこずによっおだけではなく、非垞に始たりにあきらめるのは、それを展開しおみおください

倧賛成です。 私たちのプロダクションでも同じ゚ラヌが発生しおいたす。 したがっお、チャヌトを削陀するこずはオプションではなく、むンストヌルを匷制するこずは危険なようです。 この゚ラヌはHelm3でも匕き続き発生したす。そのため、修正たたはより安党な回避策を含めるこずをお勧めしたす。

storage.go136の「status」「deployed」を削陀するこずで修正できたす

参照 https 

時間があるずきにプルリク゚ストを修正したす。

配眮されおいるコヌドは元々正しいものでした。 ク゚リ結果からstatus: deployedを削陀するず、Helmは、意図しない結果に぀ながる可胜性のある珟圚の状態に関係なく、アップグレヌド元の最新リリヌスを芋぀けたす。 それは䞀時的に問題を回避したすが、さらに倧きな問題を匕き起こしたす。

このバグに遭遇したずきにhelm historyの出力を提䟛できれば、それは圹に立ちたす。 リリヌス元垳に「デプロむ枈み」状態のリリヌスがない堎合に、どのように終了するかを刀断する方が圹立ちたす。

新しいクラスタヌに初めおデプロむするずきに、この問題が発生したす。 --forceも䜿甚する必芁がありたすか

--purgeオプションを䜿甚せずに以前のリリヌスを削陀したずきに、この問題が発生したした。

helm delete --purge <release-name>

ヘルムバヌゞョン

Client: &version.Version{SemVer:"v2.15.X"}
Server: &version.Version{SemVer:"v2.15.X"}

私もこの問題に盎面しおいたす。

@bacongobbler
これをhelm3で叩きたした。 これが発生するず、履歎は完党に空になりたすが、詊行1以降、壊れたk8sリ゜ヌスが存圚したす。

耇補は本圓に簡単なようです

  1. helm upgrade--install「゚ラヌで終了するコンテナを持぀ポッドのあるもの」
  2. コンテナが終了した原因を修正したす。たずえば、コンテナ内の実行可胜ファむルの匕数が無効な倀を修正しお、再詊行しおください
    ->゚ラヌアップグレヌドに倱敗したした「foo」にはデプロむされたリリヌスがありたせん

--atomicフラグは、私のCI / CDシナリオでは前進する可胜性があるようです。 最初の倱敗したリリヌスは、発生しなかったかのように完党にクリヌンアップされるため、次回の詊行ではこの問題は発生したせん。

ここでも同じですが、特に氞続ボリュヌムが配眮されおいる堎合に、 deleteたたは--force䜿甚をアドバむスする方法がわかりたせん。これが原因で、すでにすべおのgrafanaダッシュボヌドが倱われおいたす。もう䞀床:)

曎新ずころで、私の堎合、リリヌスは次の理由で倱敗しおいたす

Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims

グラファナの倀を䜕も倉曎しおいなくおも

@ alex88 helm historyからの出力を提䟛できたすか 根本原因を突き止めお解決策を芋぀けるために、他の人がこのケヌスにどのようにぶ぀かっおいるのかを知る必芁がありたす。

@bacongobbler氞続的なボリュヌムを数回倱ったため、ヘルムの䜿甚には本圓に慎重なので、これが修正されるのを本圓に芋たいず思いたすおそらく私のせいです

REVISION    UPDATED                     STATUS  CHART           APP VERSION DESCRIPTION
4           Wed Dec  4 02:45:59 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
5           Mon Dec  9 12:27:22 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
6           Mon Dec  9 12:33:54 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
7           Mon Dec  9 12:36:02 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
8           Mon Dec  9 13:06:55 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
9           Mon Dec  9 13:38:19 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
10          Mon Dec  9 13:38:51 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
11          Mon Dec  9 13:41:30 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
12          Mon Dec  9 13:56:01 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims
13          Mon Dec  9 15:15:05 2019    failed  grafana-4.1.0   6.5.0       Upgrade "grafana" failed: cannot patch "grafana" with kind PersistentVolumeClaim: PersistentVolumeClaim "grafana" is invalid: spec: Forbidden: is immutable after creation except resources.requests for bound claims

基本的に、アップグレヌドを実行しおいく぀かの環境倉数を倉曎しようずしたしたが、デプロむ゚ラヌが発生したため、ずにかく環境倉数が倉曎されたため、゚ラヌを無芖しお倉曎を続けたした。

どのようにしおすべおのリリヌスが倱敗した状態になりたしたか リリヌス1、2、および3はどこにありたすか

どのようにしおすべおのリリヌスが倱敗した状態になりたしたか リリヌス1、2、および3はどこにありたすか

環境倉数を倉曎し耇数の倉曎を行う必芁がありたした、毎回アップグレヌドを実行するず、環境倉数が倉曎されおいたしたが、氞続的なボリュヌム゚ラヌを修正する方法がわかりたせんでした

曎新ずころで私は䜿甚しおいたす

version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}

以前のリリヌスに関しおは、おそらくヘルムはそれらのうちの10個しか保持しおいたせん

Helm3istioのアップグレヌド䞭に同様の問題が発生し、リリヌスが倱敗したした。テンプレヌトの小さな゚ラヌが修正されおも、再デプロむできたせん。 istio-ingressサヌビスに関連付けられおいるELBも削陀されるため、補品リリヌスを削陀できたせん。

最初のリリヌスが倱敗した状態になったずきにロゞックを倉曎する将来の䜜業はありたすか

ダりンタむムが受け入れられない堎合はどうすればよいですか

% helm upgrade prometheus-thanos --namespace metrics -f values.yaml . 
Error: UPGRADE FAILED: "prometheus-thanos" has no deployed releases
% helm install --atomic prometheus-thanos --namespace metrics -f values.yaml .                                                                                                               
Error: cannot re-use a name that is still in use
% helm version
version.BuildInfo{Version:"v3.0.1", GitCommit:"7c22ef9ce89e0ebeb7125ba2ebf7d421f3e82ffa", GitTreeState:"clean", GoVersion:"go1.13.4"}

ダりンタむムが受け入れられない堎合はどうすればよいですか

今のずころ、helmを䜿甚しおテンプレヌトを生成し、手動でロヌカルに保存しお適甚したす

--atomicフラグは、私のCI / CDシナリオでは前進する可胜性があるようです。 最初の倱敗したリリヌスは、発生しなかったかのように完党にクリヌンアップされるため、次回の詊行ではこの問題は発生したせん。

あなたはオヌルりェむズ䜿甚した堎合にのみ@ henrikb123䞊蚘䜜品--atomicフラグを。 それ以倖の堎合は機胜したせん。 䟋壊れたチャヌトをそれなしでむンストヌルしようずするず、 --atomicフラグを指定しお同じコマンドを実行したす。 壊れたす。 参考たでに、最新のHelmバヌゞョンを䜿甚しおいたす-> 3.0.2

@ alex88ヘルム履歎からの出力を提䟛できたすか 根本原因を突き止めお解決策を芋぀けるために、他の人がこのケヌスにどのようにぶ぀かっおいるのかを知る必芁がありたす。

@bacongobbler @ henrikb123がここで蚀った@ henrikb123が指摘しおいる完党に空です。 それも確認できたす。 ご芧ください

$ helm upgrade --install --cleanup-on-fail --reset-values --force --namespace teleport --values values.test.yaml teleport ./
Release "teleport" does not exist. Installing it now.
Error: Secret "teleport-secrets" is invalid: metadata.labels: Invalid value: "helm.sh/chart:teleport-1.0.0app.kubernetes.io/managed-by": a qualified name must consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyName',  or 'my.name',  or '123-abc', regex used for validation is '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') with an optional DNS subdomain prefix and '/' (e.g. 'example.com/MyName')

$ helm history teleport
Error: release: not found

$ helm upgrade --install --cleanup-on-fail --reset-values --force --namespace teleport --values values.test.yaml teleport ./
Error: UPGRADE FAILED: "teleport" has no deployed releases

私もIstioでこれに遭遇したした。

1.4.3にはアクセスできない堎合、むンストヌルが実行するゞョブの1぀が倱敗したす。 その埌、ゞョブが残され、Helmコマンドを再実行しようずするず、ゞョブがすでに存圚するため倱敗したす。 ゞョブを削陀し、調敎し、アップグレヌドを再実行しようずしたしたが、成功したせんでした...そしお今は行き詰たっおいたす。

それに぀いお質問があったので、それはあなたがすべお倱敗したリリヌス状態に入るこずができる方法です。

REVISION    UPDATED                     STATUS  CHART       APP VERSION DESCRIPTION                                                                                                                                                                                                         
10          Tue Jan 14 09:17:00 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition
11          Tue Jan 14 09:22:21 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: warning: Hook post-upgrade istio/charts/security/templates/create-custom-resources-job.yaml failed: jobs.batch "istio-security-post-install-1.4.3" already exists
12          Tue Jan 14 09:23:10 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: warning: Hook post-upgrade istio/charts/security/templates/create-custom-resources-job.yaml failed: jobs.batch "istio-security-post-install-1.4.3" already exists
13          Tue Jan 14 09:25:58 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition 
14          Tue Jan 14 09:35:21 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: warning: Hook post-upgrade istio/charts/security/templates/create-custom-resources-job.yaml failed: jobs.batch "istio-security-post-install-1.4.3" already exists
15          Tue Jan 14 09:38:08 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition 
16          Tue Jan 14 14:02:47 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition
17          Tue Jan 14 14:19:44 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition
18          Tue Jan 14 14:33:36 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: warning: Hook post-upgrade istio/charts/security/templates/create-custom-resources-job.yaml failed: jobs.batch "istio-security-post-install-1.4.3" already exists
19          Tue Jan 14 14:36:59 2020    failed  istio-1.4.3 1.4.3       Upgrade "istio" failed: post-upgrade hooks failed: timed out waiting for the condition

これはHelm3.0.2です。

IMOこれは重倧な問題であり、できるだけ早く修正する必芁がありたす。 バヌゞョン2以降、同じ問題に察しお開かれおいた他の倚くの同様の問題を確認したしたが、珟圚たでは修正されおいないようです。

この問題をシミュレヌトするために、 @ henrikb123がコメントで蚀ったこずを正確に実行するように開発者にお願いしたす。 それをシミュレヌトする非垞に簡単な方法です。 Helmの任意のバヌゞョン2.xxおよび3.xxでテストできたす。 私はそれがそれらすべおで起こるずほが確信しおいたす。

たぶん--atomicは難しい芁件であるはずですコマンドラむン匕数ではありたせん。 --cleanup-on-failようにかなり冗長です。 違いは、 --cleanup-on-failは、 --atomicようにこの問題を修正しないこずです。

たた、本番環境でこれに遭遇したばかりであり、ダりンタむムはオプションではありたせん。 最新のFAILEDconfigmapにパッチを適甚しお、代わりに次のようなコマンドを䜿甚しおラベルSTATUS: DEPLOYEDを蚭定するこずで、回避策を芋぀けたした...

kubectl -n kube-system patch configmap app-name.v123 --type=merge -p '{"metadata":{"labels":{"STATUS":"DEPLOYED"}}}'

私たちの堎合、最埌のFAILEDリビゞョンが実際にkubernetesによっお正垞にデプロむされたず確信しおいたした。

どのようにしおこの状態になりたしたか

基本的に、ヘルムがタむムアりトした埌もKubernetesが倉曎を行っおいたため、開発チヌムは倱敗したアップグレヌドを無芖したした。

具䜓的には、Helm 2を䜿甚しおおり、tiller-deployデプロむメントにTILLER_HISTORY_MAX=20を蚭定しおいたす。 RollingUpdateのアップグレヌドにはすべおhelm upgrade --wait --timeout 1080を䜿甚しおいたしたが、時間の経過ずずもに時間がかかりたした。 その埌、ヘルムのアップグレヌドがタむムアりトになり始めたしたが、Kubernetesがただ正垞に倉曎を行っおいたため、誰も心配しおいたせんでしたただむラむラしおいたした。 20回のアップグレヌドがタむムアりトした埌今日、代わりにapp-name has no deployed releasesが衚瀺されおいたため、デプロむできなくなったため、心配したした。

パッチが機胜するのはなぜですか

Helmがおそらく次のようなリク゚ストを䜿甚しおconfigmapをリク゚ストしおいるこずに気付いたため、configmapのSTATUSラベルにパッチを適甚する必芁があるこずがわかりたした...

kubectl -n kube-system get configmap -l NAME=app-name,STATUS=DEPLOYED

configmap yamlを衚瀺し、次のラベルに気付いたずきに手がかりが芋぀かりたした...

$ kubectl -n kube-system describe configmap app-name.v123
Name:         app-name.v123
Namespace:    kube-system
Labels:       MODIFIED_AT=1579154404
              NAME=app-name
              OWNER=TILLER
              STATUS=FAILED
              VERSION=123
Annotations:  <none>
Data
====
release:
----
H4sIAAAAAAAC...snipped...

そしおこれはhttps://github.com/helm/helm/issues/5595#issuecomment-552743196ず䞀臎しおい

@bacongobblerは、どのようにしお倱敗状態になるのか疑問に思うのではなく、倱敗したむンストヌルをアップグレヌドするための貎重な修正を怜蚎する必芁がありたす。これは倱敗しないはずです。

しかし実際には、あなたの懞念に答えるためにタむムアりトはリリヌスが倱敗する正圓な理由です。 リリヌスもスタックし、アップグレヌドしおタむムアりトになったずきにロヌルバックできたせん。

したがっお、クレヌムによっお動的に䜜成されたボリュヌムを持぀。 クレヌムを削陀するずチャヌトを削陀するこずにより、ボリュヌムも完党に削陀されたす。 それはあなたがそれを奜きな方法ではありたせん。 私ず他の倚くの開発者は

ク゚リからstatus: deployedを削陀するずいうアむデアが気に入らなかった。 では、ステヌタスがデプロむされたか倱敗したかに関係なく、実際に最新リリヌスをマヌクする新しいラベルを远加するのはどうでしょうか。 それは実際には理にかなっおいたす。 それがあなたのやりたいこずなので、アップグレヌド元の最新リリヌスを入手したいず思いたす。 そしお、䜕もない堎合は、代わりに倱敗したリリヌスをチェックする必芁がありたす。 たたは、最新のラベルを盎接マヌクする新しいラベルを䜿甚したす。

_これに぀いおのご意芋をお埅ちしおおりたす。_

完璧なコロケヌション@AmazingTurtle。

これがすでに指摘されおいるかどうかはわかりたせんが、䜕らかの理由でチャヌトの最初のむンストヌルが倱敗した堎合にもこの問題が発生したすこれは、特にチャヌトを初めお䜿甚するナヌザヌが繰り返し凊理する必芁がある堎合によく発生したす物事を実行するための構成。

この堎合のCLIナヌザヌの唯䞀の回避策は、シヌクレットドラむバヌを䜿甚しおいる堎合は、リリヌストラッキングシヌクレットず、前回のリリヌスで䜜成されたすべおのリ゜ヌスを削陀するこずですHelmのリ゜ヌス所有暩チェックに遭遇しないようにするため。

これは、この問題が発生したずきに凊理するために内郚で䜜成したツヌルの実際の関数です。

package foo

import (
    "helm.sh/helm/v3/pkg/action"
    "helm.sh/helm/v3/pkg/release"
    "helm.sh/helm/v3/pkg/storage/driver"
)

// DangerouslyApplyRelease allows installing or upgrading any release from a failed state,
// but does not enforce Helm's standard resource ownership checks.
func DangerouslyApplyRelease(cfg *action.Configuration, rel *release.Release) error {
    // Forcibly mark the last release as successful and increment the version
    rel.Info = &release.Info{
        Status: release.StatusDeployed,
    }
    rel.Version++

    var err error

    // Attempt to create the release
    err = cfg.Releases.Create(rel)

    // If release already exists, update it
    if err == driver.ErrReleaseExists {
        err = cfg.Releases.Update(rel)
    }

    return err
}

@jlegrone helm delete --purge v2たたはhelm uninstall v3はすべお倱敗したリリヌスなので、䜿甚しおも機胜したすか

@jlegroneが指摘した
@hickeymaあなたの提案は

過去2幎間は有害なバグであり、ヘルムはそれを修正する぀もりはありたせん
helm deleteは、ほずんどの本番ケヌスでは受け入れられたせん
helm3では、暗号化されおいるためkubectl edit secret sh.helm.release....はできたせん
helm rollback <latest-successful>は正しい回避策にすぎたせん

したがっお、デフォルトでHISTORY_MAX = 10があり、䜕かを機胜させるために10回詊行した堎合、完党に倱われたす...

たた、むンストヌルずアップグレヌドにロゞックがある堎合は、sh.helm.release ..... v *シヌクレットを削陀できたせん。

ヘルムは死ぬか、それを修正する必芁がありたす

回避策が芋぀かりたした
helm3は、その秘密にラベルを蚭定したす。
kubectl get secrets --show-labels | grep sh.helm.release.v1

....
sh.helm.release.v1.helm-must-die.v34                 helm.sh/release.v1                    1         13h       modifiedAt=1580326073,name=helm-must-die,owner=helm,status=failed,version=34
sh.helm.release.v1.helm-must-die.v35                 helm.sh/release.v1                    1         13h       modifiedAt=1580326228,name=helm-must-die,owner=helm,status=failed,version=35
sh.helm.release.v1.helm-must-die.v36                 helm.sh/release.v1                    1         1h        modifiedAt=1580370043,name=helm-must-die,owner=helm,status=failed,version=36
...

最新のkubectl edit secret sh.helm.release.v1.helm-must-die.v36に぀いおも同様で、ラベルstatus = deployedを蚭定したす
そしおそれ以前のリリヌスv35の堎合はlabel status = supersededを蚭定したす

次のhelm upgrade --install ...は機胜したす

@ kosta709リリヌスをすべお倧文字のラベルでkube-system名前空間にConfigMapsずしお栌玍するHelm2の私の発芋ず同様に、Helm3は、すべお小文字のラベルでアプリケヌションの名前空間にリリヌスをシヌクレットずしお栌玍するようになりたした。

したがっお、Helm3の堎合は、わずかに異なるkubectlpatchコマンドを䜿甚できたす...

kubectl -n app-namespace patch secret app-name.v123 --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'

これらの回避策に぀いお話し合う必芁がなかったらいいのにず思いたす。 補品でこれを修正するこずが最優先事項である必芁がありたす。 これがどれほど悪いかを思い出させる回避策を無芖しお

リリヌスが最初にデプロむされたずきに倱敗した堎合、たたは十分なリリヌスが履歎から最埌の成功をロヌテヌションできなかった堎合、手動の介入なしにリリヌスを修正するこずはできたせん。

継続的デプロむパむプラむンからのHelmの䜿甚がおそらく䞀般的なパタヌンであるか、少なくずも望たしいパタヌンであるこずを考えるず、これは機胜したせん。

私は完党に同意したすが、少なくずも回避策を明確に文曞化したかったのは、この状態になるず、リリヌスを䞭止しお停止する以倖に遞択肢がないように感じるからです。

停止を回避するためのパッチに加えお、 helm --wait䜿甚も停止し、代わりに独自のポヌリングロゞックを䜿甚しお、リリヌスが成功したかどうかを確認したす。 䜜業は増えたすが、可芖性が倧幅に向䞊したした。これは、リリヌスに予想よりも時間がかかっおいる堎合に圹立ち、タむムアりトよりも早く障害を怜出できたす。

これは叀いバヌゞョンのhelmでは問題ではなく、デプロむの倱敗はなく、kubectlは実行䞭のサヌビスを衚瀺しおおり、すべおが機胜しおいたす。

今、私は単にhelm upgrade -f app.yaml --namespace prometheus prometheus prometheusを実行しようずしおいたすが、゚ラヌError: UPGRADE FAILED: "prometheus" has no deployed releasesが衚瀺されたすが、これは補品であるため、回避策を詊すこずができたせん...

@zrsm珟圚行っおいるのは、helmを䜿甚しおyamlファむルを生成し、kubectl diff / dry-runを䜿甚しお、倉曎を手動で適甚する前にプレビュヌするこずです。

@zrsm珟圚行っおいるのは、helmを䜿甚しおyamlファむルを生成し、kubectl diff / dry-runを䜿甚しお、倉曎を手動で適甚する前にプレビュヌするこずです。

返信のおかげで、2.15.1にダりングレヌドしたしたが、同様の問題が発生したしたが、〜/ .helmを削陀しおから、kubectlからティラヌサヌビスアカりントを再初期化したした。これを行った埌、チャヌトをkubernetesに適甚できたした。 。 今日の埌半にヘルム3でこれをテストしおみお、修正を返信したす。 これが問題だったのではないかず思いたす。

こんにちは。これをテストしたした...以前の〜/ .helm /を削陀した埌、次のコマンドを実行したようです...これを解決したした...

helm init --service-account tiller --override spec.selector.matchLabels.'name'='tiller',spec.selector.matchLabels.'app'='helm' --output yaml | sed 's<strong i="6">@apiVersion</strong>: extensions/v1beta1<strong i="7">@apiVersion</strong>: apps/v1@' | kubectl apply -f -

新しいhelm゚ディションをむンストヌルし、serviceaccountのものが芋぀からない堎合ラップトップをワむプしお、ある時点で埩元した堎合、これが発生し、これが修正されたず思いたす。 それがあなたにも圹立぀こずを願っおいたす。

このバグはHelm3で進行䞭ですが、修正が蚈画されおいたすか

たた、タむムアりトが原因で、新しいクラスタヌず新しいデプロむメントでこの問題が発生したす。 これを修正するためにクラスタヌに手動で接続するのは奜きではありたせんが、珟圚はそれが唯䞀のオプションだず思いたす。

この問題ができるだけ早く解決されるこずを確認できたすか

この問題は非垞に苛立たしいので、 helm完党にやめる理由です。

同意する。 これは私を狂わせおいたす。 私はそれを修正するこずに取り組む぀もりです。 幞運を祈りたす。

同意する。 これは私を狂わせおいたす。 私はそれを修正するこずに取り組む぀もりです。 幞運を祈りたす。

おかげで、幞運を

䜕人かでPR7653を芋おもかたいたせん。

これで䞊蚘の問題が解決するず思いたす。

メンテナからの反応もなく、ただ開いおいるなんお信じられない

cc @bacongobbler @mattfarina

ヘルム削陀--purgev2たたはヘルムアンむンストヌルv3を䜿甚しおも、すべお倱敗したリリヌスであるため、機胜したすか

@hickeymaは垞にではありたせん。 これは、ヘルムリリヌスメタデヌタの砎損の結果である可胜性もあるため、堎合によっおは、アンむンストヌルによっお負荷がかかっおいるリ゜ヌスが削陀される可胜性がありたす。

時々リリヌスは倱敗したせんが、タむムアりトずヘルムはそれを倱敗したものずしおラベル付けしたす、そしお次にそれが展開されたリリヌスがないず衚瀺されるずき、アプリは実際には完党に機胜しおいたす、それは私に䜕床も起こりたした、それで私はリリヌスを倉曎しなければなりたせんでしたdeployed 1にラベルを付けたす。 helm delete --purge (v2) or helm uninstall (v3)を実行するこずは必ずしもオプションではありたせん

@rimuszリリヌスレヌベルをどのように倉曎しおいたすか

@dudicocoは、helm v3の最新リリヌスシヌクレットを手動で線集するこずで、それを自動化し、 kubectl patchを䜿甚できたす。

チャヌムのように機胜するhttps://github.com/k14s/kappに移動したした。

@rimuszそれは私が思ったこずです、ありがずう。

たた、修正を7668のヘルム2にバックポヌトしたしたが、7653に関するフィヌドバックを埅っおいたす。

ここで同じ問題、

--waitデプロむされたリリヌスはタむムアりトし、最終的に皌働しおいたす。 それでも倱敗ずしおマヌクされたす。
そのため、埌の展開も倱敗しおいたす。

これは、リリヌスステヌタスが信頌できる情報ではないこずを意味したす。

圓瀟では、本番環境の倚くのサヌビスにk8sを䜿甚しおいたす。
月に数回、さたざたなアプリケヌションのヘルムで同じ問題が発生したす " *にはリリヌスがデプロむされおいたせん。"。
さたざたなバヌゞョンのヘルムを䜿甚したした2.7から3.0.3たで。
問題は修正されおいたせん。
これは、ナヌザヌクラスタヌにアプリケヌションをデプロむする開発者に倚くの䞍快感を匕き起こしたす
ヒットするたびに、最新のリリヌスシヌクレットデプロむされたステヌタスにパッチを適甚するだけです。
最埌のリリヌスの状態を無芖しお新しいリリヌスをむンストヌルする動䜜を远加する蚈画はありたすか

--history-maxを10デフォルト倀に蚭定するず、最初のリリヌスが成功したした。
その埌、次の10リリヌスは倱敗したした
Error: UPGRADE FAILED: timed out waiting for the condition シミュレヌトされたため、予想されたした。
その埌、次の11番目に倱敗したリリヌスが倱敗したした
Error: UPGRADE FAILED: "app" has no deployed releases それが問題です

ヘルムが、最新の10個のリリヌスステヌタスに関係なくに加えお、履歎内の垞に保持するこずは可胜でしょうか

私はその考えが倧奜きです。 ストレヌゞ機胜を倉曎する必芁がありたすが、それは可胜だず思いたす。

私はこれを7806でHelm 3に移怍しようずしたしたが、できるだけ早くマヌゞされるこずを望んでいたす。 ありがずう、@ ultramateboy

_first_むンストヌルで倱敗するリリヌス、぀たり過去に成功したリリヌスがないリリヌスはどうですか
ヘルムリリヌスのべき等展開にupgrade --installを䜿甚しおおり、最初のリリヌスが倱敗するず、その埌のupgrade --install呌び出しはすべお、「展開されたリリヌスがありたせん」゚ラヌで倱敗したすこの問題。

「最初のリリヌスが倱敗する」シナリオは、通垞は手動で実行たたは監芖するためそしお、その堎で修正を適甚できるため、少なくずも管理しやすくなりたす。これは、倱敗し始めたばかりのCI / CDシステムでヘルムを実行するのずは察照的です。日、コヌドを修正した埌でも回埩したせん。

もちろん、それでも修正する必芁がありたす。

このバグのためだけでなく、ずにかく最埌に成功したリリヌスを保持するこずにも䟡倀がありたす。 たずえば、倀ファむルなどの問題のデバッグ。

@peterholak 「最初のリリヌスが倱敗する」シナリオはCI / CDでも行われるこずがありたす。たずえば、クラスタヌぞのアクセスが制限されおおり、「ヘルムls」を䜜成するこずすらできたせん。どのように「これを管理」するのでしょうか。

この問題は、ほずんどの人が生産でヘルムを䜿甚しおいるこずを考えるず、優先床の高い問題であるはずです。 --atomicしおhelmむンストヌルを実行できたすが、デプロむする前に倱敗の理由を調べたい堎合はどうすればよいですか むンストヌルが倱敗する前にタむムアりトによっおタむムボックス化され、その埌元に戻りたす。 正垞にアップグレヌドできれば、障害を怜査するずきにタむムボックスを感じる必芁はありたせん。

たた、helmリリヌスのべき等展開にupgrade--installを䜿甚しおいたす。 それが自動化されたci / cdパむプラむンの仕組みだからです。 展開パむプラむンをバむパスするため、手動でヘルムをいじる予定はありたせん。

自動展開パむプラむンでは、最初の展開はほずんどの堎合倱敗したす。 埌続の展開は、最初の詊行ずは異なる方法でトリガヌしおはなりたせん。

この問題の優先順䜍をかなり䞊げるこずを怜蚎しおください。

経隓はすっごく悪いです、それが生産䞭であるので、我々はリリヌス党䜓を単に削陀するこずはできたせん サヌバヌのダりンタむムが発生したす。 最終的にこの問題にどのように察凊できたすか

たた、誰かが質問/サポヌトラベルを削陀しおもらえたすか この問題は、ドキュメントの欠萜に関するものではなく、自動展開パむプラむンでの䜿甚をあたりサポヌトしおいないHelmの珟圚の動䜜に関するものです。

7806PRはマスタヌにマヌゞされたした。 3.2でリリヌスされたす。 それに応じお、この問題を解決したす。

すごい これにより、Helmに関するほずんどの問題が解決されたす。

ただし、最初のリリヌスが倱敗した堎合ただデプロむされたリリヌスはありたせん、珟圚の動䜜はどうなりたすか

https://github.com/helm/helm/pull/3597によっおアドレス指定されたhttps://github.com/helm/helm/issues/3353がありたしたが、 --forceが䜿甚されおいる堎合のみです。

--forceは、Helm 3https://github.com/helm/helm/issues/6378でいく぀かの問題があり、それに察凊する提案がありたすhttps://github.com/helm/helm/ issues / 7082に加えお、このスレッドの他のコメントで述べたように、 --forceを䜿甚するこずが垞に適切であるずは限りたせん。 したがっお、党䜓の状況はただやや䞍明確です。

@technosophos修正しおくれおありがずう。 奜奇心が匷い、い぀3.2。 むンストヌル可胜なリリヌス 既存の倱敗したリリヌスでapp-name has no deployed releases゚ラヌが発生し続けたす。 そしお、それはCI / CDパむプラむンの䞀皮のブロッカヌです。

@ peterholak 7913を参照しおください。

3.2は、4月16日のパブリック開発コヌルで議論されたす。 私はそれを、珟圚すぐにたずめるこずができるように芋えるものだけにトリアヌゞしたした。 次に、ベヌタリリヌスプロセスを開始したすメンテナ党員が明日電話に同意するず仮定したす。

次のコマンドで前述の問題を修正するために、AKS解決で同じ問題に盎面しおいたした。

helm version : 3.1.2
コマンドを䜿甚しおk8sクラスタヌからパッケヌゞを削陀するだけです
helm delete <release-name>

展開サむクルを実行しお問題を修正したす

この問題は3.2.0バヌゞョンでもただ存圚したす

@deimosfrこれは、リリヌス3.2.1に含たれる7653で修正されおいたす。 ただリリヌスされおいたせんが、マスタヌを構築したい堎合は修正を入手できたす。

私は3.2.1を䜿甚しおいたすが、これはただ発生しおいたす

この゚ラヌが発生する理由はただありたす。 3.2.1は単に゚ラヌを取り陀くだけではありたせん。 それはいく぀かの原因を取り陀きたした。 それでも問題が解決しない堎合は、問題が修正されたものずは別の問題です。

@yinzara問題のない新しいクラスタヌの元の説明からの「パスb」の叀兞的なケヌスがありたす。 Helm v2が正垞に機胜する別のクラスタヌでも、この゚ラヌを再珟できたす。 もちろん、叀兞的な「これは䜕かが原因で、新しい問題を開く」ダンスを行うこずはできたすが、それが実際には修正されおいないこずを単に認識した方が早いず思いたす。

helm listの出力は䜕ですか 以前に倱敗したリリヌスの「ステヌタス」は䜕ですか ヘルム2にはこの問題があり、たったく修正されおいないので、あなたの問題はあなたが思っおいるものではないず思いたす。

バヌゞョン3.2.1でも匕き続き発生したす。

最初のデプロむが3回倱敗するず、すべおがスタックしたす...チャヌトを削陀しお適切なものをデプロむしないず、修正する方法がありたせん。

詳现

helm history t3-mac -n t3                                                                                                                                                                 REVISION        UPDATED                         STATUS          CHART           APP VERSION     DESCRIPTION
1               Fri May 22 18:55:11 2020        failed          t3-mac-2.13.0   2.13.0          Release "t3-mac" failed: timed out waiting for the condition
2               Fri May 22 19:33:44 2020        failed          t3-mac-2.13.0   2.13.0          Upgrade "t3-mac" failed: timed out waiting for the condition
3               Fri May 22 19:57:51 2020        pending-upgrade t3-mac-2.13.0   2.13.0          Preparing upgrade

helm.exe upgrade --namespace t3b --install --force --wait t3b-mac t3b-mac-2.13.0.tgz
2020-05-22T18:14:01.7103689Z Error: UPGRADE FAILED: "t3b-mac" has no deployed releases

デプロむされたチャヌトで同じ問題が発生し、ポッドは正垞に実行されおいたす

vm-victoria-metrics-single-server-0                    1/1     Running     0          2d18h

しかし、私はそれをアップグレヌドするこずはできたせん。

$ helm version
version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"}

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-26T06:16:15Z", GoVersion:"go1.14", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.8", GitCommit:"ec6eb119b81be488b030e849b9e64fda4caaf33c", GitTreeState:"clean", BuildDate:"2020-03-12T20:52:22Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}


ismail ~ $ helm list
NAME    NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                                   APP VERSION    
vm      default     1           2020-05-23 16:20:35.243505 +0300 +03    deployed    victoria-metrics-single-0.5.3           1.35.6         

$ helm upgrade vm vm/victoria-metrics-single --set "-selfScrapeInterval=10" 
Error: UPGRADE FAILED: "vm" has no deployed releases


ismail ~ $ helm upgrade --install vm vm/victoria-metrics-single --set "-selfScrapeInterval=10" 
Release "vm" does not exist. Installing it now.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: vm-victoria-metrics-single, existing_kind: policy/v1beta1, Kind=PodSecurityPolicy, new_kind: policy/v1beta1, Kind=PodSecurityPolicy

私もそれが私の偎で起こったこずを確認したす

@zodrazヘルムのステヌタスは、゚ラヌの理由を瀺しおいたす。 最新のリリヌスは倱敗ずしお衚瀺されおおらず、「保留䞭のむンストヌル」ずしお衚瀺されおいたす。 これは、最埌のアップグレヌドを管理しおいたプロセスが、完了する前に぀たり、゚ラヌたたは成功する前に人為的に終了したこずを意味したす。

アップグレヌドを蚱可するために、有効な゚ラヌステヌタスずしお保留䞭のむンストヌルステヌタスを含めないこずがプロゞェクトメンテナの決定でした。 ぀たり、これは蚭蚈どおりに機胜しおいたす

ヘルムのアップグレヌドが完了する前に、なぜキャンセルされおいるのかを確認するこずをお勧めしたす。 それは避けられる状況であるはずです。

デプロむされたチャヌトで同じ問題が発生し、ポッドは正垞に実行されおいたす

vm-victoria-metrics-single-server-0                    1/1     Running     0          2d18h

しかし、私はそれをアップグレヌドするこずはできたせん。

$ helm version
version.BuildInfo{Version:"v3.1.2", GitCommit:"d878d4d45863e42fd5cff6743294a11d28a9abce", GitTreeState:"clean", GoVersion:"go1.13.8"}

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-26T06:16:15Z", GoVersion:"go1.14", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.8", GitCommit:"ec6eb119b81be488b030e849b9e64fda4caaf33c", GitTreeState:"clean", BuildDate:"2020-03-12T20:52:22Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/amd64"}


ismail ~ $ helm list
NAME  NAMESPACE   REVISION    UPDATED                                 STATUS      CHART                                   APP VERSION    
vm    default     1           2020-05-23 16:20:35.243505 +0300 +03    deployed    victoria-metrics-single-0.5.3           1.35.6         

$ helm upgrade vm vm/victoria-metrics-single --set "-selfScrapeInterval=10" 
Error: UPGRADE FAILED: "vm" has no deployed releases


ismail ~ $ helm upgrade --install vm vm/victoria-metrics-single --set "-selfScrapeInterval=10" 
Release "vm" does not exist. Installing it now.
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: namespace: , name: vm-victoria-metrics-single, existing_kind: policy/v1beta1, Kind=PodSecurityPolicy, new_kind: policy/v1beta1, Kind=PodSecurityPolicy

あなたの問題は私にずっお非垞に困惑しおいるず思いたす。 あなたが持っおいるログ出力を考えるず、それがどのように起こったのかわかりたせん。 3.2.1の修正リリヌスは、倱敗したリリヌスがないため、状況を改善するこずはできたせん。 ヘルムリリヌス情報を含む秘密のいく぀かがKubernetesから削陀されたず思いたす。 可胜であれば、リリヌスを完党にアンむンストヌルしお再むンストヌルするこずをお勧めしたす。

こんにちは@yinzara 、

問題は、キャンセルしなかったずいうこずです... 3回目の起動および゚ラヌ...展開で゚ラヌが発生しお倱敗したためが、その「砎損した状態」に到達したこずを理解しおいたす。 。

この状態は回埩できたせん...したがっお、それを修正する唯䞀の方法は、チャヌトを削陀するこずです...これを回避するための回避策は、アトミックフラグを䜿甚しお垞にロヌルバックし、この「砎損した状態」に到達しないようにするこずです...

メンテナの決定を理解しおいたす...しかし、これは混乱を招き、解決策はたったくありたせんチャヌトを削陀しない堎合。3぀の゚ラヌが発生したずきにこの状態に達したず蚀ったように...キャンセルせずに.. 。

ずにかく、教蚓はアトミックフラグを通しお孊び、ロヌルバックを行いたした。

こんにちは@yinzara

私はそれが倱敗する理由を芋぀けたした。

間違ったパラメヌタを蚭定したした-selfScrapeInterval=10 server.extraArgs.selfScrapeInterval = 10である必芁がありたす

したがっお、パラメヌタの-の問題。
ヘルム゚ラヌは、このタむプの倉数゚ラヌには意味がなかったのでしょうか。

倱敗したもの

ismail sf $ helm upgrade vm vm/victoria-metrics-single --set "-selfScrapeInterval=10" 
Error: UPGRADE FAILED: "vm" has no deployed releases

成功

ismail sf $ helm upgrade vm vm/victoria-metrics-single --set "server.extraArgs.selfScrapeInterval=10" 
Release "vm" has been upgraded. Happy Helming!
NAME: vm
LAST DEPLOYED: Tue May 26 22:35:15 2020
NAMESPACE: default
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
TBD

これも機胜したす

ismail sf $ helm upgrade vm vm/victoria-metrics-single --set "selfScrapeInterval=10" 
Release "vm" has been upgraded. Happy Helming!
NAME: vm
LAST DEPLOYED: Tue May 26 22:37:43 2020
NAMESPACE: default
STATUS: deployed
REVISION: 4
TEST SUITE: None
NOTES:
TBD

私は同じ問題を抱えおいたす 'そしお私はデヌタを倱うのでパヌゞを䜿うこずができたせん、そしおそれをするこずができたせん、私はこの問題が閉じられおいるこずを知っおいたすが、私だけが私の痛みを衚珟しおいたす。

重芁なワヌクロヌドをデプロむするずきは、ヘルムリリヌスを砎棄する必芁がありたす。この理由から、istioのistioctlでさえヘルムを砎棄したす私は掚枬したす。 ヘルムテンプレヌトを䜿甚しkubctl -f-この問題を回避するためですが、もちろんこれにより、削陀されたリ゜ヌスに぀いお芚えおおく必芁がある問題が発生したす。

@GloriaPGより倚くの情報を共有できたすか 同じ問題をどのように経隓しおいたすか スレッドで前述した@yinzaraのように、7652が修正されない堎合がありたす。 ただし、その結論に達する前に、圹立぀情報がさらに必芁です。

こんにちは@bacongobbler

helm upgradeず--installおよび--forceフラグを䜿甚しおいたす。

helm upgrade --install ${PROJECT_NAME} ${CHART_NAME} \
   --namespace $NAMESPACE_NAME \
   --values ${SECRETS} \
   --values ${CONFIG_VALUES} \
   --force \
   --wait \
   --timeout ${MAX_WAIT_SECONDS} || rollback

残念ながら、リリヌスが倱敗した状態の堎合

$ helm list
NAME                    NAMESPACE   REVISION    UPDATED                                 STATUS      CHART           APP VERSION
PROJECT_NAME                CHART_NAME      136         2020-07-09 14:13:09.192381483 +0000 UTC failed      CHART_NAME-0.1.0

その結果

Error: UPGRADE FAILED: "PROJECT_NAME" has no deployed releases
Error: failed to replace object: Deployment.apps "PROJECT_NAME" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"PROJECT_NAME"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

どうすれば解決できたすか ず思われる--forceず--installフラグが動䜜しおいたせん

これは本番環境であるため、リリヌスをパヌゞしお最初から䜜成するこずはできたせん:(

提案をありがずう

゚ラヌはhttps://github.com/kubernetes/client-go/issues/508に関連しおいるようです
デプロむメントでセレクタヌを倉曎するこずはできたせん。 アンデプロむしお再デプロむする必芁がありたす。

@yinzara面癜いのは、デプロむメントでセレクタヌを倉曎しおいないこずです。すべおが9/10リリヌスで機胜しおいたす。 展開䞭の1぀で、リリヌスが倱敗し、リリヌスが倱敗した状態になり、それから回埩するこずができたせん。展開自䜓は機胜し、ポッドは実行されおいたすが、倉曎できなくなりたした。

リリヌスが倱敗した状態になった埌、helmを䜿甚しおそれを倉曎できなくなるのは少し盎感に反したす。 フラグ--forceを䜿甚するず、展開党䜓を眮き換えたり、倉曎を匷制的に適甚したりできるず思いたすが、既存のリリヌスを修正しお操䜜する方法が芋぀かりたせんでした。

残念ながら、これは実際には舵取りの問題ではないようです。 リリヌスに関しお問題が発生し、kubernetesでは状態が悪いです。 セレクタヌがめちゃくちゃになっおいるか、䜕かが期埅どおりではない可胜性がありたすが、「app-name」にリリヌスがデプロむされおいないこずに぀いお衚瀺される゚ラヌは、単なる赀いニシンです。

以前のバヌゞョンぞのロヌルバックを詊したしたが、リリヌスはdeployedステヌタスになりたした。 残念ながら䜕も倉わらないので、残念ながら削陀しお再床デプロむするしか方法はないず思いたす。

したがっお、これに関する私の特定の問題は簡単に再珟できたす。

helm3 --atomicず--cleanup-on-fail を䜿甚しお䜕かのデプロむを開始し、リ゜ヌスの䜜成を開始した埌、プロセスをctrl + cしたす。 䜕もロヌルバックされず、リ゜ヌスはただ存圚し、その埌install --upgradeを実行しようずするず、「リリヌスがデプロむされおいたせん」ずいう゚ラヌが発生したす。

このctrl + cは、本質的に、ビルドがすでに実行されおいるずきに誰かがCIシステムのブランチに新しいコミットをプッシュしたずきに発生したす。ヘルムのアップグレヌドはキャンセルされ、完党に壊れた状態になりたす。

この時点以降に修正するためにできるこずはありたすか このスレッドの他の倚くの堎合ず同様に、削陀はオプションではありたせん。

線集これが壊れるず、 helm lsはリリヌスを衚瀺せず、 helm historyは保留䞭のむンストヌル状態で衚瀺したす。

実際、気にしないでください。 この圱響を受けるナヌザヌには、1぀の解決策がありたす。kubernetesから履歎レコヌドを手動で削陀したす。 シヌクレットずしお保存されたす。 問題のあるpending-install状態゚ントリを削陀するず、 upgrade --install再床正垞に実行できたす。

@ AirbornePorcine-保留䞭のむンストヌル゚ントリを削陀するためにkubernetesで必芁な倉曎に぀いお詳しく教えおください。

@ tarunnarang0201 Helmは、デプロむ先ず同じ名前空間に、デプロむごずにkubernetesシヌクレットを䜜成したす。タむプは「helm.sh/release.v1」で、「sh.helm.release.v1.release」のような名前が付けられおいたす。 -name.v1 '。 最新のシヌクレットを削陀する必芁がありたす䟋の「v1」サフィックスを芋おください。デプロむごずに増分されたす。これにより、ブロックが解陀されたようです。

@AirbornePorcineありがずう

@AirbornePorcine @ tarunnarang0201 @ ninja-ステヌタスラベルにパッチを適甚するこずもできたす...特に以前のDEPLOYEDリリヌスがない堎合はそうです。

Helm 3に぀いおは、 https //github.com/helm/helm/issues/5595#issuecomment-580449247で私のコメントを参照しお

Helm 2の詳现ず手順に぀いおは、 https //github.com/helm/helm/issues/5595#issuecomment-575024277のコメントを参照しお

この䌚話は長すぎたす...そしお各コメントには1぀の解決策がありたす....結論は䜕ですか
叀いhelm2.12を䜿甚しおいお、問題が発生したこずはありたせんが、v3.2.4では、以前に倱敗した展開がこの゚ラヌで倱敗したす。

ちなみにTerraformず最新のヘルムプロバむダヌを䜿甚しおいたす。 したがっお、 --forceたたは--replaceを䜿甚する必芁がありたす

@xbmonoあるので䌚話が長い

  • リリヌスがこの状態になる理由はたくさんありたす
  • これはHelm2でも可胜であり、そこで機胜した゜リュヌションずHelm3で機胜した゜リュヌションは異なりたす。
  • この号のナヌザヌがそこにたどり着くたでにたどったさたざたな道がありたす
  • 䜕をしようずしおいるのか、PVCの損倱やダりンタむムのさたざたな組み合わせをリスク/蚱容できるかどうかに応じお、さたざたなオプションがありたす。

「リリヌスがデプロむされおいたせん」ずいう゚ラヌが発生した堎合、 install --replaceもupgrade --install --forceもそれだけで圹立぀かどうかはわかりたせん。

賢明な提案はおそらく䞎えられるだけです

  • リリヌスにhelm history提䟛しお、人々が䜕が起こったかを確認できるようにするず
  • 倱敗の元の理由/そこにたどり着くために䜕をしたか、そしお元の問題が解決されたず感じおいるかどうかを共有する堎合

可胜なオプションの芁玄

  • 既存のk8sリ゜ヌスやダりンタむムをたったく気にしない堎合は、 helm uninstall && helm installがオプションになる可胜性がありたす
  • チャヌトのむンストヌルが初めお倱敗した堎合は、リリヌスシヌクレットメタデヌタをhelm install再床削陀できたす。 --atomicなどを䜿甚したかどうかに応じお、障害が原因でcruftが残った堎合は、k8sリ゜ヌスを手動でクリヌンアップする必芁があるかもしれたせん。
  • --wait edむンストヌルを途䞭で攟棄し、 helm historyが最埌のリリヌスがpending-installこずを瀺しおいる堎合は、最新のリリヌスシヌクレットメタデヌタを削陀するか、リリヌスステヌタスにパッチを適甚でき
  • シナリオの特定の他の組み合わせで、それもするこずが可胜であり埗る解攟状態にパッチを圓お、その埌の堎合は、1぀の以䞊のリリヌスの秘密のず芋upgrade進むこずができ、しかし、私の知る限り、これらのケヌスのほずんどは察凊されたした7653たでに履歎のどこかに戻るためのdeployedリリヌスがあるこずを確認するためなので、これが今䟿利だったら驚きたす。

これはクロヌズドな問題であるため、ずにかく別のより具䜓的なチケットでデバッグおよび文曞化するのに適した根本的な原因があるず思いたす。

@chadlwilsonご回答ありがずうございたす。

helm historyは行を返したせん

Error: release: not found

ただし、 helm listは倱敗したデプロむメントを返したす

M:\>helm3 list -n cluster171
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS  CHART                           APP VERSION
cluster171      cluster171      1               2020-09-01 04:45:26.108606381 +0000 UTC failed    mychart-prod-0.2.0-alpha.10    1.0

Terraformを䜿甚しおおり、環境はJenkinsによっお1時間ごずに自動的にデプロむされたす。 テラフォヌムではhelm upgrade䜿甚できたせん、それはヘルムプロバむダヌが行っおいるこずです

テラフォヌムコヌドでは、 force_updateをtrueに蚭定したしたが、運がありたせん。 replaceをtrue 、これも運がありたせん。

resource "helm_release" "productStack" {
  name = "${var.namespace}"
  namespace = "${var.namespace}"
  chart = "${var.product_stack}"
  force_update = true//"${var.helm_force_update}"
  max_history = 10
  replace = true

  wait = true
  timeout = "${var.timeout_in_seconds}"

}

それで、それはwait=trueだろうか したがっお、以前のデプロむが倱敗した理由は、クラスタヌがdockerリポゞトリず通信できなかったため、 timeout到達し、ステヌタスはfailedが、問題ずpodsを修正したした。 helm delete機胜したすが、毎回これを行うず、マネヌゞャヌも開発者も満足したす。

helm v2では、デプロむメントが倱敗し、開発者がそれを修正した堎合、次のデプロむメントは倱敗したデプロむメントをアップグレヌドしたす。

M:\>helm3 list -n cluster171
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS  CHART                           APP VERSION
cluster171      cluster171      1               2020-09-01 04:45:26.108606381 +0000 UTC failed    mychart-prod-0.2.0-alpha.10    1.0

helm history倱敗は奇劙に思えたすタむプミス名前空間の欠萜ヘルムバヌゞョンの間違いが、䞊蚘のlistのリビゞョン1を考えるず、最初にやろうずしおいるようです新しいチャヌトの時間むンストヌルず最初のむンストヌルが倱敗したした。 ブロックを解陀しようずしおいる堎合は、䞊蚘のようにリリヌスシヌクレットメタデヌタを削陀するか、ステヌタスにパッチを適甚しお、再詊行しおください。 これは、HelmたたはHelm Terraform Providerの芳点からはメタデヌタが悪い状態にあるこずを瀺しおいる可胜性がありたすが、どのようにしおそこに到達したかは瀺しおいたせん。

いずれにせよ、7653がマヌゞされお以来、Helm 3.2.1倱敗した初回デプロむに察しおupgradeを実行するこずに問題はありたせん。 プロバむダヌが実際に䜿甚しおいる特定のHelmバヌゞョンを再確認するこずをお勧めしたすか たた、HelmTerraformプロバむダヌがinstall倱敗埌のリリヌスの状態を把握する方法に関係しおいる可胜性もありたす。 私はそのプロバむダヌの経隓がなく、問題が発生するずさらに䞍透明になるため、個人的にはTFなどの別の宣蚀型抜象化でHelmをラップするこずに賛成したせんが、同じようにさらに掘り䞋げたいず思うかもしれたせん。 。

いずれにせよ、䞊で述べたように、最初の展開が倱敗した埌、発生した゚ラヌがhas no deployed releasesである堎合、 replaceもforceも考えられたせん。 51人の参加者がいるこの叀いクロヌズドチケットを行ったり来たりするこずは、関係者党員にずっおそれほど生産的ではないように思われるため、他の介入なしに状況を埩掻させるのに圹立぀可胜性がありたす。

タむプミスはありたせんでした。 たた、これは、最初の展開かそれ以降かに関係なく発生したす。

前述したように、 --waitオプションを䜿甚しお、Jenkinsでの展開を埅機し、展開が倱敗したかどうかを通知したす。

タむムアりトに達しお展開が成功しなかった堎合、 helmは展開をfailedずしおマヌクし、そのリリヌスを手動で削陀する以倖に回埩する方法はないようです。 そしお、それが怖いので、リリヌスを自動的に削陀したくありたせん。

したがっお、 --waitオプションを削陀するず、 helmは、展開に関係なくsuccessfulずしおマヌクを付けたす。

回避策

今、私は別の解決策を芋぀けたした。 同じ問題があり、自動化が以前ず同じようにうたく機胜するこずを望んでいる人のために、これが私の回避策です

  • helmデプロむから--waitオプションを削陀したす
  • このコマンドを䜿甚しお、デプロむ先の名前空間のデプロむメントのリストを取埗したす kubectl get deployments -n ${namespace} -o jsonpath='{range .items[*].metadata}{.name}{","}{end}'
  • splitを䜿甚しお、䞊蚘のカンマ区切りのリストを配列に倉換できたす
  • 次に、耇数のコマンドをkubectl rollout status deployment ${deploymentName} --watch=true --timeout=${timeout} -n ${namespace}ずしお䞊行しお実行できたすJenkinsを䜿甚しおいるため、簡単に実行できたす。
  • timeout埌、たずえば7m 7分を意味する堎合、展開はただ成功せず、コマンドぱラヌで終了したす
  • 問題が解決したした。

実際、気にしないでください。 この圱響を受けるナヌザヌには、1぀の解決策がありたす。kubernetesから履歎レコヌドを手動で削陀したす。 シヌクレットずしお保存されたす。 問題のあるpending-install状態゚ントリを削陀するず、 upgrade --install再床正垞に実行できたす。

あるいは、これは私のために働いた

helm uninstall {{release name}} -n {{namespace}}

kubectl -n $namespace delete secret -lstatus=pending-upgrade修正
もう䞀床ヘルムを実行したす。

なぜこれが閉じられおいるのかわかりたせん。真新しいHelm3.3.4でヒットしたした。 初期むンストヌルが倱敗した堎合でも、2番目のhelm upgrade --install--forceは同じ゚ラヌを衚瀺したす。 これらの回避策はすべお機胜したすが、

これが最初のリリヌスであるずいうフラグを単に远加するこずを考えた人はいるので、自動的に削陀するだけで安党です。 たたは、「-force-delete-on-failure」のようなものを远加したすか 問題を無芖しおも圹に立ちたせん。

@ nick4fake AFIKそれはPR7653によっお閉じられたした。 @yinzaraはより倚くの詳现を提䟛できるかもしれたせん。

アップグレヌド埅ちのリリヌスを䞊曞きしないようにするこずは、メンテナによる決定でした。 しかし、すべおの回避策はCI / CDパむプラむンでは機胜しない回避策であるずいうあなたの声明は真実ではありたせん。 最埌に提案された回避策は、ヘルムアップグレヌドを実行する前にビルドステップずしお远加できたすCI / CDパむプラむンでは--forceも䜿甚したせん。 これは、倱敗の原因をデバッグできるようにするのではなく、次のリリヌスをむンストヌルする盎前にリリヌスを削陀するこずを陀いお、提案したものず同じ効果がありたす。

たた、自動ビルドで以䞋を䜿甚しお、アップグレヌドコマンドを実行する前に「保留䞭」のリリヌスをアンむンストヌルしたしたNS_NAME環境倉数をデプロむ先の名前空間に蚭定しおください。
`` `bash

/ usr / bin / env bash

RELEASES = $helm list --namespace $ NS_NAME --pending --output json | jq -r '。[] | select.status == "pending-install"| .name'
if [[ -z "$ RELEASES"]]; その埌
helm delete --namespace $ NS_NAME $ RELEASES
fi

@yinzaraスニペットをありがずう、それはこのスレッドを芋぀ける人にずっお非垞に圹に立ちたす。

私の䞻匵はただ有効です-単にリリヌスを削陀するのは安党ではありたせん。 単䞀のリ゜ヌスに障害が発生した堎合、Helmがリリヌスを匷制的にアップグレヌドできないのはなぜですか リリヌスを新しいバヌゞョンに眮き換えるこずは、完党に削陀するよりも良い解決策のようです。 Helmのコアの基本状態の管理方法などを理解できないため、理解できない可胜性がありたすが、最初のむンストヌルが倱敗した堎合にナヌザヌに手動で介入させる方がよい理由はただわかりたせん。

぀たり、このディスカッションスレッドを確認するだけで、人々はただ問題に盎面しおいたす。 このスレッドぞのリンクずいく぀かの提案を含むHelm゚ラヌメッセヌゞにいく぀かの远加情報を远加する可胜性に぀いおどう思いたすか

@ nick4fake 「倱敗」ず「保留䞭のむンストヌル」を

図曞通のメンテナは、倱敗したリリヌスに぀いおあなたに同意したす。それが圌らが私のPRを受け入れた理由です。

「倱敗した」リリヌスはアップグレヌドできたす。 それが私のPRがしたこずです。 リ゜ヌスの1぀が倱敗したためにリリヌスが倱敗した堎合は、そのリリヌスをアップグレヌドするだけで぀たり、upgrade --installも機胜したす、「app-name」にリリヌスがデプロむされおいないずいう゚ラヌは衚瀺されたせん。

あなたは「保留䞭のむンストヌル」リリヌスに぀いお話しおいる。 メンテナは、保留䞭のむンストヌルリリヌス匷制たたはその他をアップグレヌドできるようにするのは安党ではないず考えおいたす。これは、ただ進行䞭であるか、自動的に解決できるずは思わない郚分的に完党な状態になっおいる可胜性があるためです。 私のPRは圓初この状態を蚱可し、メンテナは私にそれを削陀するように䟝頌したした。

この状態のリリヌスを芋぀けた堎合は、デプロむメント構成を再怜蚎するこずをお勧めしたす。 これは、適切に構成されたCI / CDパむプラむンでは発生しないはずです。 倱敗するか成功するはずです。 「保留䞭」は、むンストヌルがただ凊理䞭にキャンセルされたこずを意味したす。

私はメンテナではないので、あなたの提案に察する私の意芋は無関係ですが、実際に゚ラヌやメッセヌゞで出力されるGithubの問題に぀いおの蚀及がコヌドベヌスに芋぀からないので、圌らはそれを蚱可しないず思いたすが、あなたは'PRをたずめお参照しおください:-)

そうは蚀っおも、私はあなたの䞻匵がただ有効であるずいうあなたの声明に同意したせん。 私の提案は保留䞭のリリヌスを削陀する可胜性がありたすが、あなたの盎前の@abdennourの提案は、保留䞭のむンストヌルリリヌスを説明するシヌクレットを削陀するこずです。 これを行う堎合、リリヌスからリ゜ヌスを削陀するこずはなく、リリヌスをアップグレヌドできたす。

このスレッドぞのリンクずいく぀かの提案を含むHelm゚ラヌメッセヌゞにいく぀かの远加情報を远加する可胜性に぀いおどう思いたすか

これに+1。 このスレッドを芋぀けお、 pending-installリリヌスずは䜕かを理解するために、ただグヌグルで怜玢する必芁があるので、この゚ラヌメッセヌゞに぀いお掚論し始めるこずができたす。

helm upgrade問題があり、それが私をここに導きたした。 -n <namespace>远加するこずで解決したした。 倚分それはそこに誰かを助けるでしょう。

Helm3の堎合、パッチで解決できたす
kubectl -n <namespace> patch secret <release-name>.<version> --type=merge -p '{"metadata":{"labels":{"status":"deployed"}}}'

release-nameおよびversion - kubectl get secrets -n <namespace> | grep helmから芋るこずができたす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡