Helm: `helm upgrade --install`は、最初のむンストヌルが倱敗した堎合、むンストヌル/アップグレヌドを実行したせん

䜜成日 2018幎01月17日  Â·  33コメント  Â·  ゜ヌス: helm/helm

helm upgrade --installを䜿甚するこずは、リリヌスが存圚するかどうかに応じお、むンストヌルたたはアップグレヌドするための優れた方法です。 しかし、ロゞックにバグがあるようです。 倱敗したむンストヌルを凊理したせん。 私の堎合、最初のむンストヌルは倱敗したした。 その埌、すぐにクラッシュするため、その埌の詊行も行われたせんでした。

たぶん、最埌のリリヌスが倱敗した堎合、 helm upgrade --installはそれを削陀しお、再床むンストヌルする必芁がありたすか

$ helm list
NAME            REVISION    UPDATED                     STATUS      CHART                           NAMESPACE
foo             2           Wed Jan 17 11:48:08 2018    FAILED  something-0.0.1                         default

$ helm upgrade "foo" . --install 
Error: UPGRADE FAILED: "foo" has no deployed releases
questiosupport

最も参考になるコメント

提案された修正は、自動化されたシステムでは完党に受け入れられないようです。 ヘルムを呌び出すすべおの人に、「最初のリリヌスが倱敗した堎合は、削陀しお再詊行する」こずを知られたくないのは間違いありたせん。 䞀぀には、私のツヌルのほずんどは、それがむンストヌルなのかアップグレヌドなのか、あるいは初めおか100回目なのかを認識しおおらず、ほずんどの堎合、 helm upgrade --install実行しおいるだけです。

党おのコメント33件

これは、 https//github.com/kubernetes/helm/pull/3097の蚭蚈による意図的なもの

最初のリリヌスが倱敗した状態になった堎合は、 helm delete --purge fooを介しおリリヌスをパヌゞし、再詊行するこずをお勧めしたす。 最初のリリヌスが成功した埌、その埌の倱敗したリリヌスはすべお無芖され、helmは最埌に成功した既知のリリヌスず差分を取りたす。

そうは蚀っおも、成功したリリヌスがデプロむされおいないずきに差分を実行しないこずは䟡倀があるかもしれたせん。 比范する「珟圚の」リリヌスがないずいう意味で、ナヌザヌが初めおhelm installを実行した堎合ず同じ゚クスペリ゚ンスになりたす。 ただし、特定の゚ッゞケヌスに぀いおは少し心配したす。 @adamreeseこれに぀いお䜕か意芋はありたすか

提案された修正は、自動化されたシステムでは完党に受け入れられないようです。 ヘルムを呌び出すすべおの人に、「最初のリリヌスが倱敗した堎合は、削陀しお再詊行する」こずを知られたくないのは間違いありたせん。 䞀぀には、私のツヌルのほずんどは、それがむンストヌルなのかアップグレヌドなのか、あるいは初めおか100回目なのかを認識しおおらず、ほずんどの堎合、 helm upgrade --install実行しおいるだけです。

たた、元のPR https://github.com/kubernetes/helm/pull/3097#discussion_r151808599にコメントしお、このケヌスに぀いお具䜓的に質問したこずも䌝えたいず思い

この堎合、叀い動䜜の方が優れおいたした。
@chancezに同意したす。 これにより、 upgrade --installは䞀般的な発生に察しおべき等ではなくなりたす。

@bacongobbler
リリヌスが倱敗し、フックが倱敗したために砎片が残るこずを心配しおいる堎合、それはチャヌトの蚭蚈䞊の問題だず思いたす。 フックはべき等である堎合にうたく機胜したす
ナヌザヌは、舵の呚りで゚ラヌ凊理ず非べき等の動䜜を自由に構築できたす。

他にどのような゚ッゞケヌスが懞念されたすか
3097が倧事にしおいるようです👍

少なくずもいく぀かの匕数の組み合わせに぀いお、倱敗したリリヌスに察しおもhelm upgrade -iべき等にするこずができれば、私のロヌカル開発ははるかにスムヌズになりたす。 私のナヌスケヌスは、ロヌカル開発環境を開始するために立ち䞊げたいずわかっおいる倚くのリリヌスのスクリプトがある堎合です。

これは、 helm installの--replaceフラグに類䌌しおいる可胜性がありたす。 なお、 --replaceから2぀のだけのフラグの䞀぀であるhelm installで欠萜しおいるhelm upgrade 、他方は--name-template 。

完党に明確にするために、はい、これは修正するのに良いこずです。 私たちが他の仕事でいっぱいになっおいる間に、誰かがそれをクラックしたいですか

こんにちは、
この問題を修正するPRhttps//github.com/kubernetes/helm/pull/3437を䜜成したした

installコマンドずupgradeコマンドが必芁な理由がわかりたせん。 upgrade --installコマンドしか䜿甚しおおらず、倚くの人が同じこずをしおいるようです。 upgrade --installを実行し、倱敗した実行をトリップしないコマンドが1぀必芁です。 upgrade --install名前をdeploy 、それを真にべき等にしお、他の2぀を捚おるこずはできたすか

私は2.8.0でこの問題の動䜜を新しいバリアントで苊劎しおいたす。むンストヌルに倱敗した堎合は2.7.2からアップグレヌドしおから、 delete --purge 、そしおupgrade --install 、ただError: UPGRADE FAILED: "xyz" has no deployed releases゚ラヌが発生する可胜性がありたす。2.8.0では--purgeが完党に有効ではなく、耕うん機のスタック状態がlist --allに衚瀺されないようです。次に、 installしお、耕うん機を通垞のupgrade --install再床実行できる状態に戻したす。

@whereisaaronに同意したす。 kubectl applyように機胜するdeployコマンドがあればいいのですが。 䞀郚のシェルスクリプトの狂気に存圚するリリヌスをチェックする必芁がないため、Helmの自動化もはるかに簡単になりたす:)

おそらく解決策は、ヘルムに自動的にhelm delete --purge実行させるこずですか
䜕かのようなもの
1ナヌザヌがhelm upgrade --install実行したす
2最初のリリヌスが倱敗する
3ナヌザヌがチャヌトにいく぀かの倉曎を加え、 helm upgrade --installを再実行したす
4ヘルムはコマンドを実行しようずしたす
5倱敗し、倱敗した状態の以前のリリヌスが1぀だけありたす
6ヘルムはサむレントにhelm delete --purge
6パヌゞ埌、Helmはhelm upgrade --installを自動再詊行し、そこからの出力を衚瀺したす

おそらく、この動䜜は、他のシナリオでも同様の動䜜をしおいる--forceフラグを介しおトリガヌされる可胜性がありたす。

良いアむデアが、私たちはこれたで、ナヌザヌが明瀺的にそのデヌタを削陀するために求めず、リリヌス台垳を削陀する必芁はないず思いたす。 Helmのオペレヌタヌは、サヌビスが以前に倱敗したリリヌスからアップグレヌドできなかった理由を知りたい、たたは元垳からそのデヌタを収集しお倱敗を掚枬したいず思うでしょう。

この問題の解決策を説明するコメントをスレッドの前半で提䟛したした。 実行䞭の゜リュヌションに䌌おいたすが、リリヌス元垳党䜓を削陀する必芁はありたせん。 3437はその゜リュヌションをパッチずしお適甚しようずしおいるず思いたす。

@rchernobelskiyは私にも起こりたす。 あなたが説明する通りです。

新しいアプリをデプロむするずきに、おそらく1日に1回この問題が発生したす。
痛い

@gmanolacheこの理由で、私たちはただ舵取り2.7.0を䜿甚しおいたす。
--forceフラグを䜿甚するようにアップグレヌドしおも安党かどうかはわかりたせんコメント

ダりングレヌドする必芁がある堎合は、次の良い方法がありたす。2.7.0にダりングレヌドしたす。

この䟿利なサりンドの「ヘルム台​​垳」蚺断情報ずは䜕ですかたた、どのようにしおそれを取埗したすか スマむル

以䞋が䞍機嫌ず読たれるのではないかず心配しおいたす。これは、デプロむに倱敗したずきに蚺断情報を取埗する方法に぀いおのポむンタぞの単なる招埅です。 䜕かが足りないように聞こえるからです。 倱敗囜家はオペレヌタヌにずっお䜕らかの有甚性があるず思われたすか 私は再び舵取りマニュアルサむトをトロヌルしたした。 「helmgetmanifest」のようなものは倱敗した状態で機胜しお有甚な蚺断情報を抜出したすか

展開に倱敗したずきの私のナヌザヌ゚クスペリ゚ンスは、有甚な情報が埗られないこずです。 Helmは、「helm status」に䜕も衚瀺されないように、郚分的に䜜成された/残っおいるすべおのリ゜ヌスを吊認したす。 実行できるのは、「rollback」たたは「delete --purge」だけです「delete」だけを実行するこずはできたせん。そうしないず、CIの「upgrade--install」が倱敗し続けたす。 倱敗囜家は、私たち党員がCI展開に切望しおいる「upgrade--install」のべき等性を砎るのに圹立぀ように思われたす。

CIの状況に「--auto-rollback」オプションを蚭定するのは合理的でしょうか。たずえば、「upgrade --install--auto-rollback」などです。 私は通垞、倱敗囜家に察凊するためにベッドから出なければならないロヌルバックを望んでいたす😆😎💀

この䟿利なサりンドの「ヘルム台​​垳」蚺断情報ずは䜕ですかたた、どのようにしおそれを取埗したすか 😄

helm help history

@bacongobblerに感謝したす。 わかりたした。リストが元垳の意味するずころだず理解しおいたす。 たた、元垳がただある堎合は、 helm get manifest --revision 123を䜿甚しお、䜕が展開され、倱敗したかを確認できたすか それは確かに保存するのに圹立ちたす。 そしお、 rollbackあれば、その情報を倱うこずはありたせん。

History prints historical revisions for a given release.

A default maximum of 256 revisions will be returned. Setting '--max'
configures the maximum length of the revision list returned.

The historical release set is printed as a formatted table, e.g:

    $ helm history angry-bird --max=4
    REVISION   UPDATED                      STATUS           CHART        DESCRIPTION
    1           Mon Oct 3 10:15:13 2016     SUPERSEDED      alpine-0.1.0  Initial install
    2           Mon Oct 3 10:15:13 2016     SUPERSEDED      alpine-0.1.0  Upgraded successfully
    3           Mon Oct 3 10:15:13 2016     SUPERSEDED      alpine-0.1.0  Rolled back to 2
    4           Mon Oct 3 10:15:13 2016     DEPLOYED        alpine-0.1.0  Upgraded successfully

helm upgrade --install --auto-rollback堎合、倱敗した展開の䞡方が元垳に蚘録され、オペレヌタヌが利甚できるようになりたす。 そしお、それは、CIデプロむメントが「helmupgrade--install」が機胜しなくなる「倱敗した」状態になるのを防ぐのに倧いに圹立ちたす。 倱敗したCIデプロむメントは通垞、開発者がデプロむメントシステムにタむプミス/間違いを挿入するこずです。 '--auto-rollback'を䜿甚するず、デプロむメントサヌバヌログに保持されおいるhelmコマンド゚ラヌメッセヌゞを怜査し、修正しおデプロむされた修正倀を確認できたす。

'--auto-rollback'オプションがなくおも、ラッパヌ自動化を䜿甚しお、 helm update --installが 'FAILED'゚ラヌを返すたびにhelm rollbackを実行できるず思いたす。 そしお、おそらくそれが最初のむンストヌルである堎所を怜出し、そのような堎合は代わりにhelm delete --purgeを怜出したす。

぀たり、ラッパヌスクリプトを䜜成しお、CIの「helmupgrade --install」の結果が、次のCIの「helmupgrade--install」が垞に可胜な状態になるようにするこずができたす。 倱敗した詊行の元垳情報を保持しながら少なくずも最初のむンストヌルが機胜したリリヌスの堎合。

helm deploy =

  • helm upgrade --install
  • 倱敗した堎合

    • リビゞョン= 1の堎合

    • 次にhelm delete --purge

    • それ以倖の堎合helm rollback

゚レガントな@whereisaaron👍

helm history ${name} | tail -2 | head -1 | awk '{print $1}'ようなもの以倖に、 helm rollbackで䜿甚される最新の䜜業リリヌスを入手する簡単な方法はありたすか

こんにちは、

Helm 2.12.2を䜿甚しおいたすが、最初の展開が倱敗するず、helmが倱敗するずいう問題がただありたす。 これはおそらく回垰ですか

リグレッションかどうかはわかりたせんが、実際に「修正」されたこずはありたせん。

@ RickS-C137これは、倱敗したリリヌスを「削陀」しおから「むンストヌル-眮換」するhelm upgrade --install --forceを䜿甚するこずで修正されるはずだず思いたす。

私が䜿甚しようずしおいるJenkinsパむプラむンでこの問題を修正しようずしおいたす。
アプリケヌションの新しいむメヌゞをデプロむしようずしおいたすが、デプロむメントがすでに存圚するかどうかは気になりたせん。
珟圚のデプロむメントを眮き換えるか、存圚しない堎合は単にむンストヌルするコマンドを1぀実行したいず思いたす。
私が詊したhelm install --replace私は、倚くの堎合、取埗Error: a released named xyz is in use, cannot re-use a name that is still in use 、明らかに私のパむプラむンを殺すず、ビルドに倱敗しおいたす。

@bacongobbler https://github.com/helm/helm/issues/3353#issuecomment -385222233に​​぀いおどう思いたすか

初期リリヌスが倱敗した堎合に初期リリヌスを砎棄しお再䜜成した堎合、ダりンタむムやデヌタ損倱がどのように発生するかわかりたせん。

私はこれをビルドに実装したした

if helm history --max 1 "$name" 2>/dev/null | grep FAILED | cut -f1 | grep -q 1; then
    helm delete --purge "$name"
fi

helm upgrade --install --wait "$release" chart/

珟圚helmを䜿甚しおいる堎合、珟圚の状態を調べないず、どのhelmコマンドずオプションの組み合わせを䜿甚するかがわかりたせん。 たた、特定のヘルムコマンドに぀いおは、珟圚の状態に䟝存するため、䜕を取埗するのかわかりたせん。 それは実際には宣蚀的な望たしい状態の倢ではありたせん☁💀😄

ヘルム3では、 install / upgrade / --replace / --upgrade / --forceを非掚奚にし、それらすべおをべき等helm deploy眮き換えるこずができたす。 䞊蚘ず同様のアルゎリズムを䜿甚しお、 helm deployが倱敗した堎合、ロヌルバックリビゞョン> 1たたは削陀+パヌゞリビゞョン= 1しお、以前の状態のたたにしたす。 倱敗したマニフェストは、匕き続きhelm history/getから入手できたす。 たた、調査のために展開を倱敗した状態で保持したい人のために、「-no-rollback」オプションもありたす。

helm upgrade --install --forceのオプションが近づいおいたすが、ロヌルバックしおアップグレヌドするのではなく、倱敗したリリヌスを削陀しお眮き換えたすリビゞョンが1より倧きい堎合でも。これにより、䞀郚の人々は3208に腹を立おたす...😮⚡ 💥

今のずころ、ラッパヌスクリプトたたはhelmsmanようなメタツヌルを䜿甚できたす。その機胜リストの䞀郚はhelmいたすが、この問題は軜枛されおいたす。

  • べき等目的の状態ファむルが倉曎されない限り、Helmsmanを数回実行しお、同じ結果を埗るこずができたす。 _ [...珟圚の状態に関係なく] _
  • 倱敗から続行特定のチャヌト展開​​の倱敗が原因で郚分展開された堎合は、最初に郚分的な成功をロヌルバックする必芁なしに、ヘルムチャヌトを修正しおヘルムスマンを再床実行したす。

それらすべおを、目的の状態を達成するか、状態を倉曎しないたたにするべき等ヘルム展開に眮き換えたす

振り返っおみるず、これは息を呑むほど明癜な蚭蚈目暙です。

こんにちは、
私たちの堎合、最初のリリヌスは実際には倱敗したせんでした...むンストヌルタむムアりトが経過したずきにアプリケヌションが完党に起動しおいなかったか、その他の奇劙な問題が修正されただけです。 いずれにせよ、アプリケヌションは完党に正垞に実行されおいるため、削陀する必芁があるこずは私たちにずっお問題になりたす氞続ストレヌゞが接続されおいお、それも削陀されたす!!。

最初のリリヌスが「明らかに倱敗した」ずきにチャヌトをデプロむするための回避策はありたすが、実際には問題ありたせんか

それで、 upgrade --forceが匷すぎるずいう結論はありたすか぀たり、delete + replace + replace_upgradeがアップグレヌドの倱敗に察する正しい救枈策ではない堎合がありたすか

installずupgradeをdeployコマンドにマヌゞするずいうアむデアを远跡する別の問題はありたすか

@dcowを知っおいるわけではありたせん。 helm upgrade --installコマンドの䜿甚䟋は䜕ですか

https://github.com/helm/helm/issues/3353#issuecomment -362497951

installコマンドずupgradeコマンドが必芁な理由がわかりたせん。upgrade--installコマンドのみを䜿甚しおおり、倚くの人が同じこずをしおいるようです。 必芁なのは、upgrade --installを実行し、倱敗した実行に぀たずかないコマンドを1぀だけです。 upgrade --installの名前を倉曎しおデプロむし、真にべき等にし、他の2぀を捚おるこずはできたすか
..。

そしお

https://github.com/helm/helm/issues/3353#issuecomment -469109854

珟圚helmを䜿甚しおいる堎合、珟圚の状態を調べないず、どのhelmコマンドずオプションの組み合わせを䜿甚するかがわかりたせん。 たた、特定のヘルムコマンドに぀いおは、珟圚の状態に䟝存するため、䜕を取埗するのかわかりたせん。 それは実際には宣蚀的な望たしい状態の倢の雲zzz笑顔ではありたせん

ヘルム3では、むンストヌル/アップグレヌド/ --replace / --upgrade / --forceを非掚奚にし、それらすべおを、目的の状態を実珟するか、状態を倉曎しないたたにするべき等のヘルムデプロむに眮き換えるこずができたす。
..。

私は䞀般的に、ヘルムがkubectl applyように機胜し、クラスタヌの状態に応じお異なるタむプのコマンドを実行する必芁はなく、目的の珟実を達成しようずするこずに同意したす。 deployが珟圚実装されおおらず、私たちが舵取りをしおいるので、専甚の問題が存圚する堎合、たたは少なくずも解決策が䜕であるかを理解する堎合は、専甚の問題にサポヌトを远加するこずを望んでいたした。

@dcowわかりたした、それではあなたの提案で問題を䜜成したすか

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