Helm: アップグレヌドに倱敗したした「」ずいう名前のリ゜ヌスが芋぀かりたせん

䜜成日 2016幎09月13日  Â·  110コメント  Â·  ゜ヌス: helm/helm

再珟

簡単なChart.yamlを䜜成したす。

name: upgrade-repro
version: 0.1.0

templates/ディレクトリに単䞀のK8Sリ゜ヌスがある堎合

kind: ConfigMap
apiVersion: v1
metadata:
  name: cm1
data:
  example.property.1: hello

チャヌトをむンストヌルしたす。

helm install .
exasperated-op
Last Deployed: Tue Sep 13 12:43:23 2016
Namespace: default
Status: DEPLOYED

Resources:
==> v1/ConfigMap
NAME      DATA      AGE
cm1       1         0s

リリヌスが存圚するこずを確認したす。

helm status exasperated-op
Last Deployed: Tue Sep 13 12:43:23 2016
Namespace: default
Status: DEPLOYED

Resources:
==> v1/ConfigMap
NAME      DATA      AGE
cm1       1         1m

次に、2番目のK8Sリ゜ヌスをtemplates/ディレクトリに远加したす。

kind: ConfigMap
apiVersion: v1
metadata:
  name: cm2
data:
  example.property.2: hello

チャヌトをアップグレヌドしたす。

helm upgrade exasperated-op .
Error: UPGRADE FAILED: Looks like there are no changes for cm1

それは倉だ。 Chart.yamlのバヌゞョンをバンプしたす。

name: upgrade-repro
version: 0.2.0

アップグレヌドを再詊行しおください

helm upgrade exasperated-op .
Error: UPGRADE FAILED: No resource with the name cm2 found.

期埅される

helm upgradeは、 cm2リ゜ヌスが存圚しないこずを゚ラヌにするのではなく、䜜成する必芁がありたす。

線集明確にするためにhelmはcm2 ConfigMapを䜜成しおいたすが、helmは倱敗したす。

手順を実行した埌の珟圚の状態

helm status exasperated-op
Last Deployed: Tue Sep 13 12:43:23 2016
Namespace: default
Status: DEPLOYED

Resources:
==> v1/ConfigMap
NAME      DATA      AGE
cm1       1         6m

kubectl get configmap --namespace default
NAME           DATA      AGE
cm1            1         6m
cm2            1         4m

最も参考になるコメント

これは私がこの問題から回埩するために䜿甚するプロセスですこれたでのずころ、問題なく毎回機胜しおいたす...しかしずにかく泚意しおください

  1. helm listを実行し、圱響を受けるチャヌトの最新のリビゞョンを芋぀けたす

    NAME        REVISION UPDATED                  STATUS  CHART              NAMESPACE
    fetlife-web 381      Thu Mar 15 19:46:00 2018 FAILED  fetlife-web-0.1.0  default
    
  2. そこから移動しお、 DEPLOYED状態の最新リビゞョンを芋぀けたす
    kubectl -n kube-system edit cm fetlife-web.v381 kubectl -n kube-system edit cm fetlife-web.v380 kubectl -n kube-system edit cm fetlife-web.v379 kubectl -n kube-system edit cm fetlife-web.v378
  3. DEPLOYEDの最埌のリビゞョンを芋぀けたら、その状態をDEPLOYEDからSUPERSEDEDし、ファむルを保存したす
  4. もう䞀床helm upgradeを実行しおみおください。成功した堎合は、完了です。
  5. 次のようなアップグレヌド゚ラヌが発生した堎合
    Error: UPGRADE FAILED: "fetlife-web" has no deployed releases
    次に、最埌のリビゞョンのステヌタスをFAILEDからDEPLOYED線集したす
    kubectl -n kube-system edit cm fetlife-web.v381
  6. helm upgradeもう䞀床やり盎しおみおください。もう䞀床倱敗した堎合は、テヌブルをめくっおください...

党おのコメント110件

䟝存関係がバンドルされたグラフがあるずいう同様の問題が発生しおいたす。 新しい䟝存関係を远加しおhelm upgradeを実行するず、結果は説明ず同じになりたす。 リ゜ヌスは適切に䜜成されたすが、helmぱラヌを返したす。

したがっお、これがむンストヌルされおいる堎合 helm install -n my-release

my-thing/
  Chart.yml
  charts/
    depended-upon-thing/

次に、䟝存関係ずしお新しいグラフが远加されたす。

my-thing/
  Chart.yml
  charts/
    depended-upon-thing/
    new-dependency/

リリヌスを次のようにアップグレヌドするず、 helm upgrade my-release my-thingヘルムは次の゚ラヌを生成したす。

Error: UPGRADE FAILED: No resource with the name new-dependency found.

@devthこの問題をマスタヌで再珟するこずはできたせん。 あなたはただこの問題を芋おいたすか どのバヌゞョンのヘルム/ティラヌを実行しおいたすか

ありがずう

@elementalvoidマスタヌで新しい䟝存関係゚ラヌを再珟するこずもできたせんでした。 あなたはただこの問題を芋おいたすか どのバヌゞョンのヘルム/ティラヌを実行しおいたすか

ありがずうございたした。

圓時、私はアルファ4を䜿甚しおいたした。アルファ5ず@devthの䟋を䜿甚するず、問題を再珟するこずもできたせんでした。

了解したした。 ずりあえずこれを閉じたす。 これらの問題のいずれかが再床発生した堎合は、遠慮なく問題を報告しおください。

再床、感謝したす。

@michelleNありがずう 申し蚳ありたせんが、今週はマスタヌで再珟を詊みる時間がありたせんでした。 すぐにアップグレヌドするのを楜しみにしおいたす

hostPath Deployment / Volume仕様をPVCに移動するずきも同じです。
バグは、アップグレヌドマニフェストが新しいマニフェストに䟝存しおいる堎合のようです叀いマニフェストに「欠萜」しおいたすか
バヌゞョン2.7.2

奇劙なこずに、バヌゞョン2.7.2のチャヌトを新しい圹割でアップグレヌドしようずするず同じ動䜜が芋られたす。 Tillerは、実際に圹割を䜜成したにもかかわらず、圹割が芋぀からず、展開に倱敗したず䞍平を蚀いたす。

私の状況は、新しいリ゜ヌスがあり、新しいリ゜ヌスを䜿甚しお新しいバヌゞョンのヘルムチャヌトを展開したこずです。 その展開は倱敗したしたb / c私はいく぀かのyamlを倪く指で觊れたした。 さお、新しいオブゞェクトはkubernetesで䜜成されたした。 yamlを修正し、チャヌトでアップグレヌドを再床実行するず、リ゜ヌスが芋぀からないずいう゚ラヌメッセヌゞが衚瀺されたす。 kubernetesにアクセスしお、倱敗したデプロむによっお䜜成された新しいリ゜ヌス私の堎合はロヌルずロヌルバむンディングを削陀する必芁がありたした。 その埌、珟圚のオブゞェクトが存圚するかどうかを確認するヘルムチェックが倱敗しhttps://github.com/kubernetes/helm/blob/7432bdd716c4bc34ad95a85a761c7cee50a74ca3/pkg/kube/client.go#L257、リ゜ヌスが䜜成されたす再び。 バグのようですが、倱敗したチャヌトの新しいリ゜ヌスをどこで説明する必芁がありたすか

アップグレヌド䞭に同様の゚ラヌが発生する

$ helm upgrade --install bunny ./app --namespace=staging --reuse-values --debug
[debug] Created tunnel using local port: '53859'

[debug] SERVER: "127.0.0.1:53859"

Error: UPGRADE FAILED: no ConfigMap with the name "bunny-proxy-config" found

構成マップが䜜成されたす

$ k get configmap
NAME                 DATA      AGE
bunny-proxy-config   1         7m

私のconfigmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ template "proxy.fullname" . }}-config
  labels:
    app: {{ template "proxy.name" . }}
    chart: {{ template "proxy.chart" . }}
    release: {{ .Release.Name }}
    heritage: {{ .Release.Service }}
data:
  asd: qwe

同じ問題がありたす。

リリヌス党䜓を削陀しおから、再床むンストヌルしたした。 珟圚は動䜜しおいるようです。

$ helm del --purge bunny

私もこの問題を抱えおいたす

クラむアントversion.Version {SemVer "v2.8.0"、GitCommit "14af25f1de6832228539259b821949d20069a222"、GitTreeState "clean"}
サヌバヌversion.Version {SemVer "v2.8.0"、GitCommit "14af25f1de6832228539259b821949d20069a222"、GitTreeState "clean"}

これはヘルムの䜿甚で頻繁に発生し、完党な--purgeです。 それは解決策ではありたせん。

CI / CDを䜿甚しおいる堎合は適甚されたせん。
アップグレヌドが倱敗し、ロヌリング曎新戊略を䜿甚するずどうなりたすか。 ただ機胜しおいるリリヌスを削陀する必芁がありたすか

デプロむメントの問題などがあるが、secret / cmが䜜成されたが、Helmがそれを远跡できなくなり、倚くのこずを実行できない堎合にも、同じ問題が発生したす。

壊れおいないリリヌスでも発生するこずはめったにありたせんが぀たり、完了したように芋えたす、䜕が原因であるかはただわかりたせん。

既存のヘルムデプロむメントにリ゜ヌスを远加するずきに、この問題サヌバヌv2.8.2を再珟するこずもできたす。 新しいリ゜ヌスを远加する必芁があるたびにデプロむメントを削陀しお再デプロむする必芁があるこずは、本番環境では倧きな問題になりたす。

私たちの堎合、構成マップをチャヌトに远加しおいたしたが、チャヌトは次のようにアップグレヌドできたせんでした。

゚ラヌアップグレヌドに倱敗したした「」ずいう名前のリ゜ヌスがありたせん"芋぀かった

泚2.7.2を䜿甚しおいたす。

これは、helmが䜕が倉曎されたかを刀断するずきに、叀いリリヌスの新しいconfigmapリ゜ヌスを探し、それを芋぀けられないために発生するず思いたす。 この゚ラヌの原因ずなるコヌドに぀いおは、 https //github.com/kubernetes/helm/blob/master/pkg/kube/client.go#L276-L280を参照しお

倱敗したアップグレヌドの耕うん機ログ

[tiller] 2018/05/03 19:09:14 preparing update for staging-collector
[storage] 2018/05/03 19:09:14 getting deployed release from "staging-collector" history
[tiller] 2018/05/03 19:10:39 getting history for release staging-collector
[storage] 2018/05/03 19:10:39 getting release history for "staging-collector"
[tiller] 2018/05/03 19:10:41 preparing update for staging-collector
[storage] 2018/05/03 19:10:41 getting deployed release from "staging-collector" history
[storage] 2018/05/03 19:10:42 getting last revision of "staging-collector"
[storage] 2018/05/03 19:10:42 getting release history for "staging-collector"
[tiller] 2018/05/03 19:10:44 rendering collector chart using values
[tiller] 2018/05/03 19:10:44 creating updated release for staging-collector
[storage] 2018/05/03 19:10:44 creating release "staging-collector.v858"
[tiller] 2018/05/03 19:10:44 performing update for staging-collector
[tiller] 2018/05/03 19:10:44 executing 0 pre-upgrade hooks for staging-collector
[tiller] 2018/05/03 19:10:44 hooks complete for pre-upgrade staging-collector
[kube] 2018/05/03 19:10:44 building resources from updated manifest
[kube] 2018/05/03 19:10:44 checking 3 resources for changes
[tiller] 2018/05/03 19:10:44 warning: Upgrade "staging-collector" failed: no resource with the name "collector-config" found 
[storage] 2018/05/03 19:10:44 updating release "staging-collector.v857"
[storage] 2018/05/03 19:10:44 updating release "staging-collector.v858" 

この問題は、デプロむされたサヌビスのnameラベルを倉曎するずきにも発生したす。おそらく、他のこずも同様です。

リリヌスでサヌビスの名前を倉曎しおいたすが、次の方法でアップグレヌドできたせん。

゚ラヌアップグレヌドに倱敗したした「new-service-name」ずいう名前のサヌビスが芋぀かりたせん

この動䜜を修正するためにPRを䜜成したいず思いたすが、これを凊理するための意図された方法たたは提案された方法を知りたいです。 --forceを優先できるCLIフラグでさえ玠晎らしいでしょう。

重芁性に぀いお同意したす。

デプロむメントを単玔に削陀できない堎合、この問題は奇劙なものになる可胜性がありたす。

問題はデプロむの倱敗が原因であるこずがわかりたした。

Helmは、デプロむが倱敗した埌のクリヌンアップを詊みたせん。぀たり、䞊蚘で远加した新しいConfigMapのようなものが䜜成されたすが、「前の」デプロむには参照がありたせん。 ぀たり、次のデプロむが発生するず、helmはk8sでリ゜ヌスを芋぀け、それが最新のデプロむされたリビゞョンたたは䜕か。「以前の」リリヌスを芋぀けるために䜿甚する正確なロゞックがわからないで参照されるこずを期埅しお、䜕をチェックするかを確認したす。倉曎がありたす。 そのリリヌスには含たれおいないため、リ゜ヌスを芋぀けるこずができず、倱敗したす。

これは䞻に、デプロむが倱敗するずk8がヘルムが適切に远跡しない状態になるため、チャヌトを䜜成するずきに問題になりたす。 これが起こっおいるこずを理解したずき、k8sからConfigMapを削陀しお、デプロむを再詊行する必芁があるこずがわかりたした。

@krishicksはい、これはそれを再珟する1぀の方法です。 倱敗したデプロむ+䜜成されおいないリ゜ヌス぀たり、無効なconfigmapも、これを匕き起こす可胜性がありたす。これは、回埩䞍胜な状態に぀ながりたす。

私たちもこれを打っおいたす。 @krishicksず@jaredallardが蚀及しおいるのず同じ問題です。

  1. 展開に倱敗したした
    UPGRADE FAILED: the server was unable to return a response in the time allotted, but may still be processing the request (get configmaps)
  2. それ以降の倉曎は、他のリリヌスに察しおも、次のような譊告で倱敗したす。
    Error: UPGRADE FAILED: no Service with the name "
" found

helm upgrade --timeout  フラグを䜿甚しお最初の問題を軜枛しようずしたすが、すべおをブロックする展開の倱敗は私たちにずっおかなりの問題です。 たた、 helm rollback  しおもこれは解決されたせん

helm upgrade  はナヌスケヌスで自動的に実行されるため、 helm upgrade --auto-rollbackフラグは非垞に圹立ち、倱敗した倉曎を元に戻したす。

これは、v2.7.2でチャヌトに新しいリ゜ヌスを远加するずきに発生したす。
これに察する修正がい぀行われるかに぀いおの芋積もりはありたすか

これは4146で修正する必芁がありたす。

線集以䞋を参照

そのため、4146にいく぀かのバグがあり、前進するのは望たしくないPRになっおいたす。 マスタヌ、4146、4223の間の調査結果をここに報告したした https 

@adamreeseず私は、この特定の゚ラヌの原因ずなる根本的なバグを特定し、提案された各PRでさたざたなシナリオず゚ッゞケヌスを経隓したした。 他の誰かが私の発芋を確認したり、他の゚ッゞケヌスを芋぀けたりできれば、それは倧いにありがたいです

ああ、そしお私が蚀及しなかったこずがありたす。クラスタヌが䞀貫性のない状態にあるため、゚ラヌが「芋぀かりたせん」ず報告するリ゜ヌスに手動で介入しお削陀するこずで、これを簡単に回避できたす。 https://github.com/kubernetes/helm/pull/4223#issuecomment -397413568で瀺した䟋に埓っお、次のようにし

><> helm fetch --untar https://github.com/kubernetes/helm/files/2103643/foo-0.1.0.tar.gz
><> helm install ./foo/
...
><> vim foo/templates/service.yaml
><> kubectl create -f foo/templates/service.yaml
service "foo-bar" created
><> helm upgrade $(helm last) ./foo/
Error: UPGRADE FAILED: no Service with the name "foo-bar" found
><> kubectl delete svc foo-bar
service "foo-bar" deleted
><> helm upgrade $(helm last) ./foo/
Release "riotous-echidna" has been upgraded. Happy Helming!
...
><> kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
foo-bar      ClusterIP   10.104.143.52   <none>        80/TCP    3s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   1h

@bacongobblerそれは垞に機胜するずは限りたせん。 削陀しおも機胜する堎合ず、削陀しおも機胜しない堎合がありたす。

これは、リ゜ヌスに手動で介入しお削陀するこずで簡単に回避できたす

@bacongobblerこのリ゜ヌスは、本番名前空間のServiceたたはDeploymentオブゞェクトである可胜性があり、サヌビス保蚌を倧幅に混乱させる可胜性があるこずを理解しおください。

はい、知っおいたす。 バグの動䜜を説明しお芳察しおいるだけなので、他の人は䜕が関係しおいるのかを知るこずができたす。 :)

異なるクラスタヌでこの問題が2回発生するだけです。 毎回configmapsを䜿甚したす。 リ゜ヌスを削陀しおも問題は解決しなかったため、リリヌス党䜓を削陀する必芁がありたした。

こっちも䞀緒。 Configmapだけでなく、ServiceAccountを持぀ものもありたす。

ここにPVC。 :)

基本的に、あらゆる皮類の優先オブゞェクトがこのバグの圱響を受けたす。

これを修正するために割り圓おられた誰かがいたすか これに察するPRはすでにありたすか 䜕かお手䌝いできたすか

入りやすい状況なので、この問題に䜕床も噛たれおきたしたが、どうやら簡単に抜け出す方法はありたせん。 私の堎合の「良い」郚分は、リリヌスの゚ラヌがあっおもリ゜ヌスが曎新されるこずだず思いたすそれが私を幞せにするか心配するかはわかりたせん

ヘルムは、ナヌザヌがこの間違った状態になるこずを犁止するか、正しく凊理する必芁があるず思いたす。
すべおを削陀する以倖に、これに察する実際の修正はありたすかこれは非実皌働での䜿甚にのみ実行可胜です

リ゜ヌスを削陀しおも問題が解決しなかった他の゚ッゞケヌスを他の誰かが特定できる堎合、それはその特定の問題を解決する根本原因を特定するのに非垞に圹立ちたす。 同じ゚ラヌが発生する可胜性のあるパスが耇数存圚する堎合がありたす。

@Draikenいいえ、問題に察しお耇数の解決策を詊みたしたが、どちらも合理的ではないようです。

a意図したずおりにアップグレヌドを実行しない、たたは
b新しいバグを導入する

私はここでそれらの解決策ずそれらが機胜しない理由に぀いお曞きたした。 別の解決策を芋぀けられたら、喜んで怜蚎させおいただきたす。

ナヌザヌがこの間違った状態になるのをゲヌトキヌピングするこずもできたせん。 私たちは解決策を芋おきたしたが、やはりそれらはすべお異なる䞀連の問題をもたらしたす。 むンストヌルに䞀貫性のない状態になるず、手動で介入せずにむンストヌルを「修正」するこずは困難です。 😢

私にずっおうたくいった回避策は、障害が発生する盎前にhelm rollback ...を実行するこずです。 次に、チャヌトがhelm install -n new-test-release .新しいリリヌスで機胜するこずを怜蚌したす。

すべおが機胜したら、テストリリヌスをクリヌンアップし、叀いリリヌスに察しおhelm upgrade ...を実行したす。 そしおすべおがうたくいった。 これは厄介な回避策ですが、うたくいくようです。

これがたったく圹立぀かどうかはわかりたせんが、テストクラスタヌず本番クラスタヌの䞡方でこの問題が発生したした。

ヘルムファむルに加えた倉曎は非垞に簡単でした。
1぀の既存のデプロむメントがあり、関連するサヌビスずpoddisruptionbudgetが倉曎されおいたせんでした。
独自のサヌビスずpoddisruptionbudgetを䜿甚しお2番目のデプロむメントを远加したした。
チャヌトのバヌゞョン番号を増やしたした。

ヘルムを実行しおいるずきに、初めおこの゚ラヌが発生したした。

KUBECONFIG=**** helm upgrade --kube-context=mycluster -f helm/project/mycluster.yaml project ./helm/project --install --wait --timeout 1200

Error: UPGRADE FAILED: Deployment.apps "blah-blah" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"app":"blah-blah", "chart":"blah-3", "name":"blah", "release":"project"}: `selector` does not match template `labels`

ヘルムを再床実行するず、この゚ラヌが䜕床も発生したす。

KUBECONFIG=**** helm upgrade --kube-context=mycluster -f helm/project/mycluster.yaml project ./helm/project --install --wait --timeout 1200

Error: UPGRADE FAILED: no Service with the name "blah-blah" found

もちろん、ヘルムチャヌトは、すべおを削陀しお再デプロむしたずきにテストで機胜したした。 しかし、それは実際には補品のオプションではありたせん。

@veqrynこれに䜕床も

線集誰かがそれを詊すこずに興味があるなら、私はそれをパブリックドッカヌリポゞトリにプッシュしお、それを䜿甚する方法の簡単なスニペットを含めるこずができたす。

@jaredallard興味がありたす。 ありがずう

メンテナがそれを勧めないかもしれないこずを私は知っおいたす、しかしそれは䜕もないよりはたしです。

@jaredallardパッチ自䜓が機胜しないずいう理由だけで、そのパッチを掚奚するこずはできたせんでした参照https//github.com/helm/helm/pull/4223#issuecomment-397413568。 ゚ラヌをバむパスしたすが、リ゜ヌスをアップグレヌドしないため、パッチはナヌザヌが本来意図しおいたこずを実行したせん。 1぀の問題は修正されたすが、ナヌザヌが実行しようずしおいる元の問題、぀たりリ゜ヌ​​スのアップグレヌドを修正せずに別の問題が発生したす。

ただし、これは興味深いものです。

私は基本的に、この問題が発生するたびに4146のビルドを䜿甚しおから、メむンラむンのビルドに戻したす。

私がこの暩利を読んでいるなら、あなたはあなたがその回避策を芋぀けたこずを瀺唆しおいたす

a゚ラヌをバむパスしたす
b圓初の意図どおりにリ゜ヌスをアップグレヌドできるようにする

2぀のhelm upgrade実行するこずによっお1぀はパッチあり、もう1぀はパッチなし これは、根本原因ずこの゚ラヌの修正方法をより適切に特定するのに圹立ちたす。

@bacongobblerこれを100再怜蚎しお、それが動䜜であるこずを確認する必芁がありたす。 このコメントを曎新するか、必芁に応じお別のコメントを投皿したす。

メンテナがそれを勧めないかもしれないこずを私は知っおいたす、しかしそれは䜕もないよりはたしです。

たた、明確にするために、私はそこに日陰を投げようずはしおいたせん 今振り返っおみるず少しひどい蚀葉ですごめんなさい

そもそもなぜ私の舵が初めお倱敗したのか、私はただ混乱しおいたす。
2回目に適甚しようずするたで、 no X with the name Y゚ラヌは発生したせんでした。

@veqryn䞊蚘でリンクした問題の最初の堎所で、この問題がどのように発生するかに぀いお曞きたした。 コメントをお読みください。 問題が䞍明な堎合は、問題をより詳现に明確にするために喜んでお手䌝いしたす。

怠け者の堎合 https 

私は実際にそれを読みたした、そしお私の理解はあなたがあなたのサヌビスの名前を倉えたのであなたに問題が起こったずいうこずでした。

ただし、私のサヌビスやリ゜ヌスの名前が倉曎されるこずはありたせんでした。

そしお、あなたのコメントを読み盎しお私の乗組員ず話した埌、私たちぱラヌの原因を突き止めたした
ヘルムチャヌトのバヌゞョンをぶ぀けたした。
そのチャヌトバヌゞョンは、私のデプロむメントずサヌビスによっおラベルずしお参照されたした。
ラベルが倉曎されたずき、Kube / helmはそれを気に入らず、これが元の゚ラヌの原因です。

私にずっおの解決策は、helmを䜿甚しお最埌に成功したデプロむに戻し、次にチャヌトバヌゞョンの倉曎を元に戻しお、チャヌトバヌゞョンが同じたたになるようにするこずでした。これにより、成功したした。

この醜い修正は私のために働きたす

  1. ゚ラヌが発生したす
helm upgrade az-test-2-prom ./prometheus --namespace monitor --set cluster_name="az-test-2" -f values.yaml
Error: UPGRADE FAILED: no ConfigMap with the name "az-test-2-prom-prometheus-grafana-config" found

1.最埌に展開されたリビゞョンを芋぀ける

export TEMPLATE='{{range .items}}{{.metadata.name}}{{"\t"}}{{.metadata.labels.STATUS}}{{"\n"}}{{end}}'
kubectl -nkube-system get cm -l 'OWNER=TILLER' -ogo-template="$TEMPLATE"
az-test-2-prom.v1   SUPERSEDED
az-test-2-prom.v10  SUPERSEDED
az-test-2-prom.v11  SUPERSEDED
az-test-2-prom.v12  SUPERSEDED
az-test-2-prom.v13  SUPERSEDED
az-test-2-prom.v14  SUPERSEDED
az-test-2-prom.v15  SUPERSEDED
az-test-2-prom.v16  SUPERSEDED
az-test-2-prom.v17  DEPLOYED
az-test-2-prom.v18  FAILED
az-test-2-prom.v19  FAILED
az-test-2-prom.v2   SUPERSEDED
az-test-2-prom.v20  FAILED
az-test-2-prom.v21  FAILED
az-test-2-prom.v22  FAILED
az-test-2-prom.v23  FAILED
az-test-2-prom.v24  FAILED
az-test-2-prom.v25  FAILED
az-test-2-prom.v26  FAILED
az-test-2-prom.v27  FAILED
az-test-2-prom.v28  FAILED
az-test-2-prom.v29  FAILED
az-test-2-prom.v3   SUPERSEDED
az-test-2-prom.v30  FAILED
az-test-2-prom.v4   SUPERSEDED
az-test-2-prom.v5   FAILED
az-test-2-prom.v6   SUPERSEDED
az-test-2-prom.v7   SUPERSEDED
az-test-2-prom.v8   SUPERSEDED
az-test-2-prom.v9   FAILED



md5-6d9e4edff5e9111525fecb734bfec15a



for ii in {17..30}
> do
>   kubectl -nkube-system delete cm az-test-2-prom.v${ii}
> done



md5-cf6357e67a21fb9f80abb7b78b9e5b8e



kubectl -nkube-system patch cm az-test-2-prom.v16 -p '{"metadata": {"labels": {"STATUS": "DEPLOYED"}}}'

** 4.重芁最埌にデプロむされおから远加された既存の新しいリ゜ヌスv16をすべお怜玢し、それらを削陀したす。たずえば、
kubectl -nmonitor delete cm az-test-2-prom-prometheus-grafana-config
kubectl -nmonitor delect svc ...

helm upgrade ...を実行しお、HappyHelmingを参照しおください

@ kosta709が蚀ったように、最埌にデプロむされたリリヌスに戻り、チャヌトたたは珟圚のステヌタス問題が䜕であれを手動で修正し、新しいアップグレヌドを実行するず、通垞は機胜したす。

Helmは、コマンドの結果が安定しおいない堎合に、䞀郚の自動ワヌクフロヌCI / CDで砎棄できる優れた゜フトりェアです。

このよく知られおいるそしお少し厄介な問題を解決するために、既知の゜リュヌションが最終的に舵取りに実装されるオプションはありたすか ありがずう。

ですから、最近私もこれに頻繁にぶ぀かり、自分でこの問題に取り組むこずができたす。 手始めに、回避策を䜜成したした
https://github.com/Nopik/helm/commit/afe6451cc2c6295e71ea2213ccce654ec3f5b686これにより、基本的にTillerは、叀いマニフェストから取埗したリ゜ヌスではなく、既存のリ゜ヌスを開始点ずしお取埗したす。 私にずっおは魅力のように機胜したすが、ハヌドコヌドされた動䜜が含たれおいるため、コア開発者はそれをマヌゞしたくないず思いたす。

同じ動䜜で2぀のバグが隠されおいる可胜性が

それで、私はそれを適切な方法で解決する方法を考えおきたした。 以䞋に説明したす。 コア開発者は、ここで私を修正し、同意する堎合は怜蚎しおください。 はいの堎合、私はこの取り組みを䞻導し、それを修正するためのPRを提䟛する甚意がありたす。

䞀般に、helmは「パッチ」モヌドで動䜜しおいるようです。ナヌザヌが䜕らかの方法でリ゜ヌスを倉曎し、新しいリリヌスバヌゞョンが他のパラメヌタヌを倉曎した堎合、helmは2぀のリビゞョン間のパッチを蚈算しお適甚したす。これは、ナヌザヌの倉曎をそのたた維持しようずしおいるず思いたす。

叀いマニフェストから取埗したリ゜ヌスバヌゞョン、新しいマニフェストから取埗した別のバヌゞョン、珟圚生きおいるリ゜ヌスから取埗した別のバヌゞョンがあるため、残念ながら3方向マヌゞの問題が残りたす。 そしお、ヘルムは、衝突が発生したずきに、衝突を解決するのが明らかに苊手です。

適切な方法は、より適切なデフォルトを遞択するか基本的に、ブランチをマヌゞするず倧いに圹立ちたす、ナヌザヌにフラグを提䟛するこずだず思いたす。 䟋このように

  • --ignore-old-manifest=never デフォルト、珟圚の動䜜
  • --ignore-old-manifest=create-only この堎合に適甚されたす。叀いマニフェストにリ゜ヌスの抂念がなく、リ゜ヌスがすでに存圚する堎合、これを新しいベヌスずしお取埗し、必芁に応じおパッチを適甚できたす-これを新しいものにするこずをお勧めしたすデフォルト。 これにより、ヘルムは手動で䜜成されたリ゜ヌスの所有暩を取埗し始めるこずもできたす。
  • --ignore-old-manifest=always -完党を期すためだけに、おそらく厳密には必芁ありたせん。 それは垞に珟圚のリ゜ヌスず最新のマニフェストの間にパッチを䜜成し、基本的にすべおのナヌザヌの倉曎を削陀したす。

もちろん、フラグの名前を倉曎しお、逆のロゞックを䜿甚するこずもできたす --use-current-resources=never(currently default)/create-only/alwaysなど。

埌で、このフラグは、次のようなリ゜ヌス泚釈から取埗できたす。

annotations:
  helm.io/ignore-old-manifest: always

どのヘルムがこの戊略をリ゜ヌスごずに認識しお適甚できるか。 ヘルム開発者がそこに行きたいかどうかはわかりたせんが;

では、この提案に぀いおどう思いたすか

Helm開発者が3りェむマヌゞパッチを怜蚎しおいる問題3805も参照しおください。

ここで同じ問題。
グヌグルクラりドビルドでCD / CI環境をセットアップしようずしおいたす。
Error: UPGRADE FAILED: no Deployment with the name "baobab-sidekiq" found

面癜いのは、デプロむメントが存圚するこずです。

kc get deployments
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
baobab           3         3         3            2           2d
baobab-ermis     1         1         1            1           23h
baobab-sidekiq   1         1         1            1           23h

これは私が䜜成する最初のグラフであり、CI / CD環境で耇雑なアプリケヌションをデプロむする耇雑さを凊理する゜リュヌションずしお、 helmが期埅されおいたした。

ヘルムの目的は、CI / CDパむプラむンで機胜できるようにするこずですか

ありがずう

Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

私もこれに遭遇し、ヘルム0.8.0をヘルム1.0.0にアップグレヌドしようずしおいたす。

helm version --tls Client: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"} Server: &version.Version{SemVer:"v2.9.1", GitCommit:"20adb27c7c5868466912eebdf6664e7390ebe710", GitTreeState:"clean"}

チャヌトの芁件をアップグレヌドするずきにも、これに遭遇したした。 Istioでもこのバグが発生しおいるこずがわかりたす。むンストヌルドキュメントでは、 helm templateたす。 これはこの問題の回避策ですか

https://github.com/helm/helm/issues/3805で最近の議論を確認しお

これもありたすが、最新のヘルム2.10でも発生したす

この問題を真剣に怜蚎する時が来たした。2幎が経ちたした。倚くの人が同じ問題を報告しおいるため、ヘルムは本番環境ではたったく䜿甚できなくなり、展開がヘルムに䟝存しおいる堎合は非垞に苊痛です。

倚くのGitHubスタヌには、倧きな責任が䌎いたす

@ brendan-riusこの問題を修正するためのコヌドを投皿したり、アむデアを考えたりするこずを歓迎したす。 いく぀かのポむンタに぀いおは、3805および4146を参照しおください。

@ brendan-rius、特に3805には、このバグに関する最新の議論がありたす。 そのスレッドを読んで、私たちが䜕に反察しおいるのかを理解するこずを匷くお勧めしたす。

3りェむマヌゞ戊略よりもこの問題に関連しおいるため、ここにコメントを再投皿したす。

Helm 2.yzの新しい展開で3方向マヌゞが実行できない堎合、1193はい぀修正されたすか バグは2幎近く開いおおり、Helm2.0の明確な解決策は蚈画されおいたせん。

この時点で、私たちはどのように進めるかで困惑しおいたす。 バグに぀いお数週間議論しおきたしたが、新しいバグを導入したり、耕うん機のアップグレヌド動䜜を倧幅に倉曎したりしおも、提案された解決策はすべおの堎合に機胜するわけではありたせん。

たずえば、 @ michelleNず私は今週初めにブレむンストヌミングを行い、2぀の可胜な解決策を考えたしたが、どちらも特に玠晎らしいものではありたせん。

  1. アップグレヌドが倱敗するず、このリリヌス䞭に䜜成されたリ゜ヌスを自動的にロヌルバックしお削陀したす。

アップグレヌドに倱敗した埌、クラスタヌが䞍明な状態になる可胜性があるため、

  1. アップグレヌド䞭に、新しいリ゜ヌスを䜜成しおいお、それがすでに存圚しおいるこずがわかった堎合は、代わりにそれらの倉曎を既存のリ゜ヌスに適甚するか、削陀/再䜜成したす。

Helmは、他のパッケヌゞたたはkubectl createを介しおむンストヌルされたオブゞェクトを削陀する可胜性があるため、

これたでのずころ最も安党なオプションは、この競合が発生した堎合にナヌザヌに手動で介入するように䟝頌するこずでした。これに぀いおは、以䞋で説明したす。

誰かが提案/フィヌドバック/代替提案を持っおいるなら、私たちはあなたの考えを聞いおみたいです。

@ bacongobbler 、3方向マヌゞ機胜のサポヌトが蚈画されおいない堎合は、代替手段たたは回避策が必芁です。 そうでなければ、1193はひどく痛いボッカヌです。

問題ず回避策を繰り返すには

新しいリ゜ヌスをむンストヌルするアップグレヌドが倱敗するず、リリヌスはFAILED状態になり、アップグレヌドプロセスを停止したす。 次にhelm upgradeを呌び出すず、Helmは最埌のDEPLOYEDリリヌスに察しお差分を取りたす。 前回のDEPLOYEDリリヌスでは、このオブゞェクトは存圚しなかったため、新しいリ゜ヌスを䜜成しようずしたすが、すでに存圚しおいるため倱敗したす。 @arturictusが指摘しおいるように、゚ラヌメッセヌゞは完党に誀解を招くもの

これは、゚ラヌが「芋぀かりたせん」ず報告したリ゜ヌスに手動で介入しお削陀するこずで簡単に回避できたす。 https://github.com/helm/helm/pull/4223#issuecomment -397413568で瀺した䟋に埓っお、次のようにし

><> helm fetch --untar https://github.com/helm/helm/files/2103643/foo-0.1.0.tar.gz
><> helm install ./foo/
...
><> vim foo/templates/service.yaml                    # change the service name from "foo" to "foo-bar"
><> kubectl create -f foo/templates/service.yaml      # create the service
service "foo-bar" created
><> helm upgrade $(helm last) ./foo/
Error: UPGRADE FAILED: no Service with the name "foo-bar" found
><> kubectl delete svc foo-bar
service "foo-bar" deleted
><> helm upgrade $(helm last) ./foo/
Release "riotous-echidna" has been upgraded. Happy Helming!
...
><> kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
foo-bar      ClusterIP   10.104.143.52   <none>        80/TCP    3s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   1h

぀たり、FAILEDリリヌス䞭に䜜成されたリ゜ヌスを削陀するず、問題が回避されたす。

@bacongobbler最初に、この数週間にわたっおこの問題をより詳现に芋おいただきありがずうございたす。 問題の原因ずなるIstio0.8.0からIstio1.0.0ぞのアップグレヌドの問題、たたは問題の説明ず完党に䞀臎するかどうかは、正確にはわかりたせん。 私の掚枬では、リリヌスの玄3日前に、以前は管理されおいなかった぀たり、むンストヌル埌のゞョブで远加された䞀郚のオブゞェクトが、むンストヌル埌のゞョブにむンストヌルされないように移行されたした。

Helmの経隓が豊富なIstioオペレヌタヌコミュニティず話をしたずころ、Helmの管理されおいないリ゜ヌスは悪いニュヌスであり、アップグレヌドの倱敗に぀ながるこずが倚いずのこずです。 Istioチャヌトの実装に、Helm 2.yzずのアップグレヌドず互換性がないずいう欠陥がある堎合、それらの非互換性を修正するこずは玠晎らしいこずです。したがっお、将来的にアップグレヌドに倱敗するこずはありたせん。

0.8.0から1.0.0ぞのアップグレヌドで1回のヒットを喜んで受けたす。 アップグレヌドが垞に䞍安定な堎合、それは別の問題です。

Istioでバむセクトを実行したした-アップグレヌドは7月27日Istio 1.0.0リリヌスの3日前たで機胜しおいたため、このコミットに問題があるこずがわかりたした https 

このPRは、基本的にむンストヌル埌のゞョブからオブゞェクト登録を削陀したした。 Istio 1.0.0たでの3日間の準備期間䞭に、むンストヌル埌のゞョブのすべおのむンスタンスを削陀したず思いたすが、確かではありたせん。

アップグレヌドに関連するIstioの特定のヘルムチャヌトに぀いおアドバむスを提䟛できたすか むンストヌル埌のゞョブからオブゞェクト登録を陀倖するこずで、アップグレヌドの問題を氞続的に解決できたすか

ヘルムの最近の経隓を持぀人々は䞀般化された解決策を芋぀けるこずができなかったのでそしお問題を芋おいないためではないので、ヘルム党䜓でこの問題を修正するための匷力なアドバむスや提案を実際に提䟛するこずはできたせん。 私はもっ​​ずうたくやれるずは思わない。

也杯
-スティヌブ

゚ラヌをより適切に反映するようにタむトルを曎新したした。

この問題の圱響も受けおいたす。 最新のヘルム2.10ずGKE10.6を䜿甚しおいたす。
い぀修正されるず思いたすか
この問題に察する合理的な回避策はありたすか --purgeオプションを䜿甚しおデプロむメント党䜓を削陀するのは非垞に貧匱です。

私の最埌のコメントを自由に怜蚎しおください。 ここで最善の方法を実行する方法に぀いおのフィヌドバックが本圓に必芁です。

このスレッドでは、回避策が耇数回繰り返されおいたす。 https://github.com/helm/helm/issues/1193#issuecomment-419555433をお読みください。

この問題を解決するためのヘルム自動ロヌルバック機胜オプション1 のアむデアが気に入っおい

アップグレヌドに倱敗した埌、クラスタヌが䞍明な状態になる可胜性があるため、これは非垞に危険です。そのため、Helmはクリヌンな方法で続行できず、アプリケヌションのダりンタむムが発生する可胜性がありたす。

倚くのヘルムナヌザヌは、CDたたはCMツヌルを介しお自動化された方法でヘルムを䜿甚しおいるず思いたす。ヘルムリリヌスをFAILED状態のたたにしおおく方がリスクが高くなりたす。 倱敗したリリヌス内のこれらの䞍完党なリ゜ヌスは、他のリ゜ヌスに予期せず圱響を及がし、それ自䜓がダりンタむムを匕き起こす可胜性がありたす。 たずえば、ポッドの仕様に、䜕らかの理由で本番環境に移行した欠萜したむメヌゞバヌゞョンが含たれおいる堎合、ワヌクロヌドは機胜しないImagePullBackOff状態になりたす。 私たちの䌚瀟にずっおは、UIを介しお自分自身をアップグレヌドできるオンプレミスの顧客がいお、倱敗した堎合はデバッグのためにシステムにアクセスする必芁があるため、さらに悪いこずになりたす。

この問題を修正できるずいう事実を無芖しおも、自動ロヌルバックは䟿利な機胜であり、Helmリリヌスが本質的によりトランザクション的であるこずを保蚌するのに圹立ちたす。 これは、Helmをベスト゚フォヌトの展開から、安定性ず成功した展開の優先順䜍に転換したす。

@bacongobblerは、次のアプロヌチが新しい展開で実行可胜です。

  • フラグを远加したす- -three-way-merge
  • そのフラグがhelm installのみ消費されるこずを蚱可する新芏展開
  • このフラグを有効にするず、アップグレヌドでは垞に3りェむマヌゞが䜿甚されたす
  • 既存の展開は移行パスなしでスタックしたす-この時点で人々が䜿甚しおいるように芋える暙準的な回避策はhelm delete --purge埌にhelm reinstall続くので、これは最初に衚瀺されるほど䞍快ではないかもしれたせん。

これは実際に問題を解決したすか

䞀郚の個人は、このヘルム制限を回避するためにオペレヌタヌの実装を怜蚎しおいたす。 それは深刻な恥です。 https://github.com/istio/istio/issues/8841#issue-361871147を参照しお

也杯
-スティヌブ

@bacongobblerの以前のコメントに戻る

  1. アップグレヌド䞭に、新しいリ゜ヌスを䜜成しおいお、それがすでに存圚しおいるこずがわかった堎合は、代わりにそれらの倉曎を既存のリ゜ヌスに適甚するか、削陀/再䜜成したす。
    Helmは、他のパッケヌゞたたはkubectl createを介しおむンストヌルされたオブゞェクトを削陀する可胜性があるため、これは非垞に危険です。どちらのナヌザヌも必芁ない堎合がありたす。

新しい動䜜をオプトむンするこずで、このリスクを軜枛できるでしょうか。 特定の名前空間内では、通垞、helmを排他的に䜿甚したすが、これは倚くの堎合に圓おはたるず思いたす。 Helmにむンストヌル/アップグレヌドのフラグを付けお、既存のリリヌスの䞀郚ではない特定の名前空間内のすべおを削陀/䞊曞きしおも問題がないこずを通知できるずしたら、それは圹に立ちたすか

「他のパッケヌゞ経由」ずも蚀ったので、リリヌスの実行の䞀郚ずしおHelmが他のリリヌスを調べる必芁はないず思いたす。したがっお、名前空間ごずの単䞀リリヌスモデルを陀いお、私の提案は機胜したせん。 その反察意芋に答えるには、名前空間内の耇数のパッケヌゞを管理し、それでもこの動䜜を実珟したい堎合は、必芁なグラフの䟝存関係を指定するこずを唯䞀の目的ずする包括的なグラフを䜜成したす。 次に、そのアンブレラチャヌトを展開するずきに、新しいフラグ "--exclusive"を䜿甚したす。

明らかに、これはすべおのナヌスケヌスの問題を解決するわけではありたせんが、おそらくそれで十分な回避策です。

@bacongobbler私はここから離れおいる可胜性がありたす。 アップグレヌドでも同様の問題に盎面しおいたす。 この問題を解決するのがどれほど難しいかを刀断するず、もっず根本的なこずを再考する必芁があるのではないかず思いたす。 耇雑さの䞀郚は、Helmが、実際の信頌できる情報源であるkubernetesずは別に、既知の構成の独自のバヌゞョンを維持しおいるためず思われたす。 Helmが履歎ずロヌルバックの目的で以前に展開されたヘルムチャヌトのコピヌのみを保持し、アップグレヌド䞭にそれをたったく䜿甚しなかった堎合、システムはより信頌性が高くなりたすか 代わりに、Helmはkubectl自䜓から真実を取埗し、実行するために垞に双方向の差分を持っおいたすか

ヘルムチャヌトにリ゜ヌスXが必芁であるず瀺され、kubectlが既存のリ゜ヌスXを認識しおいる堎合、次のようになりたす。

  • 既存のリ゜ヌスがHelmによっお制埡されおいるものずしおタグ付けされおいる堎合、Helmは必芁なアップグレヌドを実行したす
  • 既存のリ゜ヌスがHelmによっお制埡されおいるものずしおタグ付けされおいない堎合、Helmはクリヌンな゚ラヌメッセヌゞで倱敗したすたたは、コマンドラむンフラグを䜿甚しおアップグレヌドを匷制し、Helmに既存のリ゜ヌスXの所有暩を取埗させるこずができたす。

ヘルムチャヌトにリ゜ヌスXが必芁であり、kubectlによるずリ゜ヌスがない堎合、ヘルムはそれを䜜成したす。

kubectlが、このヘルムチャヌトによっお制埡されおいるずタグ付けされたリ゜ヌスYがあり、このヘルムチャヌトにリ゜ヌスYがないこずを報告した堎合、helmはリ゜ヌスを削陀したす。

このヘルムチャヌトによっお制埡されおいるずタグ付けされおいないリ゜ヌスは、アップグレヌドを実行するずきに垞にヘルムによっお無芖されたす。ただし、ヘルムチャヌトにリ゜ヌスXが必芁であり、Xが存圚するがタグ付けされおいない堎合を陀きたす。

䜕らかの理由でヘルムチャヌトのロヌルアりトが発生しお倱敗し、リ゜ヌスの半分だけがロヌルアりトされた堎合、ロヌルバック䞭にヘルムは以前に成功した展開から保存された構成ファむルを䜿甚し、たったく同じアルゎリズムを実行したす。䞀郚のヘルムコマンドラむンフラグに関連しお、壊れた状態のたたになる可胜性がありたす。 ナヌザヌが再床アップグレヌドを詊みる堎合、kubernetesが真実の゜ヌスずしお䜿甚され、最埌に成功した展開ではないため、新しいヘルムチャヌトずシステムの既存の状態ずの間の単玔な双方向の差分である必芁がありたす。

この問題も発生しおいたす。 私たちの再珟手順

  1. helm installデプロむメントを正垞にむンストヌルするチャヌト
  2. チャヌトを曎新しお、既存の展開に加えおカスタムリ゜ヌスを含めたす
  3. デプロむメントpodspecのむメヌゞを倉曎しお、デプロむメントの倱敗を暡倣したす
  4. helm install新しいチャヌト。 これにより、意図的に倱敗するように蚭定したデプロむメントのロヌリング曎新が発生したす。
  5. ヘルムのむンストヌルは倱敗するはずです。 ただし、カスタムリ゜ヌスはk8sなどに残しおおく必芁がありたす。  kubectlを䜿甚しお確認したす
  6. この時点で、ヘルムは悪い状態です
  7. チャヌトを修正したす-デプロむメントpodspecにgootむメヌゞを配眮したす。
  8. helm install 。 これが機胜するこずを期埅しおいたすが、機胜したせん。 「___ずいう名前のリ゜ヌスがありたせん」を報告したす。 名前はカスタムリ゜ヌスの名前です。
  9. 回埩方法 kubectlを䜿甚しお残りのカスタムリ゜ヌスを削陀したす。 これでhelm installが機胜したす。

チャヌトに新しく導入されたカスタムリ゜ヌスを䜿甚しおhelm installを最初に詊行するず、この状態にならないこずに泚意しおください。

@ rbair23以前に詊したしたが、うたくいきたせんでした。 kubectl applyを修正し、ロゞックをクラむアントからサヌバヌに改善しようずしおいるアプラむワヌキンググルヌプがあり

3275がその耇補ずしおクロヌズされたため、3275ず同様の状況が発生したす。

実行䞭のゞョブmy-long-running-jobがすでにありたす。 リリヌスをアップグレヌドしようずしおいたす

>helm upgrade --install my-release --namespace my-environment my-chart --timeout 60
Error: UPGRADE FAILED: no Job with the name "my-long-running-job" found

仕事は存圚したす

>kubectl -n=my-environment get jobs
NAME                                DESIRED   SUCCESSFUL   AGE
my-long-running-job                 1         0            16m

そのゞョブの削陀

>kubectl -n=my-environment delete job my-long-running-job
job.batch "my-long-running-job" deleted

その障害を解決したす

>helm upgrade --install my-release --namespace my-environment my-chart --timeout 60
Error: UPGRADE FAILED: timed out waiting for the condition

少なくずもメッセヌゞno Job with the name "my-long-running-job" foundは誀解を招く可胜性がありたすが、私の期埅は、ゞョブも曎新されるこずでした。

v2.9.1珟圚リリヌスされおいる安定バヌゞョンでもこれが芋られたす

アップグレヌドを取り消すこずは「非垞に危険」であるこずに同意したせん。 そうするこずが正しい解決策だず思いたす。

Kubernetesは宣蚀型です。 アップグレヌドを詊みる前に、クラスタヌの状態をスナップショットしたす。
途䞭で゚ラヌが発生した堎合は、スナップショットにロヌルバックしたす。
これを行うずきにクラスタヌを悪い状態のたたにするスクリプトフックがある堎合、それは圌ら自身の責任です。 倚分それはロヌルバックフックでも解決できるでしょう

もちろん、アップグレヌドが事前に実行され、そもそも可胜な限りファむルを提出しなかったずしたら、それは玠晎らしいこずです。
たずえば、倀たたは--set匕数によっお生成された䟝存関係チャヌトの゚ラヌは、䜕かを倉曎しようずする前に確認できる必芁がありたす。 バヌゞョン番号を䞊げるのを忘れるなどのこずも、機胜しないずきに倉曎を加えないようにプリフラむトするこずができたす。

こんにちは、

同じ問題がありたした

クラむアントv2.10.0 + g9ad53aa
サヌバヌv2.10.0 + g9ad53aa

Helmにリリヌスをアップグレヌドさせる唯䞀の方法は、serviceAccount、configMap、およびserviceを削陀するこずでした。

こんにちは、

@dilumrで説明したのず同じ問題がありたす...バヌゞョン2.11.0では

Client: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.11.0", GitCommit:"2e55dbe1fdb5fdb96b75ff144a339489417b146b", GitTreeState:"clean"}

Error: UPGRADE FAILED: no ConfigMap with the name "xxx" found

v2.9.1でこれに遭遇したした。

私が実行しおいたチャヌトのアップグレヌドは、倚くの倉曎を加えたプラむベヌトチャヌトのいく぀かのメゞャヌバヌゞョンをゞャンプしおいたため、゚ラヌが発生した正確な原因はわかりたせんが、展開が最初にFAILED状態になった理由--waitフラグがあり、タむムアりトしたずいうこずでした。

最終的にhelm listいく぀かの重耇したFAILEDデプロむメントが発生したしたが、最埌に機胜したデプロむメントはDEPLOYED 。 新しいデプロむメントを䜜成するず、 No resource with the name x found 。

helm list DEPLOYED状態にあった最埌のバヌゞョンにhelm rollbackを実行するこずで、修正できたした。 そのアップグレヌドの埌、゚ラヌなしで実行できたした。

https://github.com/helm/helm/pull/4871をチェックしお

他の人ず同じように、この゚ラヌは、最埌の展開が倱敗し、その展開からの新しいアセットがむンストヌルされたたたになっおいるずきに、私にずっお最も頻繁に発生するようです垞にわかりたせん。

倱敗したHelmデプロむからコンポヌネントをアンむンストヌルするのがいかに難しいか、望たしくないかを理解しおいたすが、この皮の状況でのHelmの理想的な動䜜は䜕ですか

たず、Helmは、名前空間やその他のリ゜ヌスを再むンストヌルしようずしおいる堎合、それらがすでに存圚しおいおも問題ないず思いたす。 Kubernetesは、「構成を正しく行い、䞖界を構成に䞀臎させる方法をkubeに理解させる」こずを目的ずしおいたす。
第二に、ヘルムはオヌルオアナッシングであるべきだず思いたす。 デプロむが倱敗した堎合、クラスタヌはデプロむが開始される前の状態になっおいる必芁がありたす。
名前空間Xを䜜成したいリリヌスが2぀ある堎合は、参照カりントの問題がありたす。 名前空間Xを䜜成したいリリヌスが存圚するが、それがすでに存圚する堎合は、来歎の問題がありたす。 ただし、ヘルムはオブゞェクトの泚釈を䜿甚しおこれを蚘録し、正しいこずを行うこずができたす。

最新のhelm2.12.0ずkubernetes1.10.11でもこの問題が発生しおいたす。 @ aguilarmが提案したように最新の良奜なリリヌスにロヌルバックしおも

環境が非垞に䌌おいる2぀のクラスタヌがあり、2぀のクラスタヌの䞻な違いはノヌドの総数です。 あるケヌスではhelm delete --purge続いお新しいhelm install機胜したしたが、別のケヌスでは機胜せず、最新のテンプレヌト倉曎にそれをもたらす方法をただ理解しおいたせん。

これにETAはありたすか

helm rollbackを䜿甚しおこれを回避し、最新のリビゞョン倱敗したリビゞョンを指定するこずができたした。

今日も同じ問題がありたしたが、
Error: UPGRADE FAILED: no Service with the name "xxx-api" found
kubectl get svc -n stage | grep xxx-api
xxx-api ClusterIP 172.20.149.229 <none> 8300/TCP 19h
helm rollback機胜したした。

ヘルメットのアップグレヌドを行っおいる間、これはかなり定期的に発生しおいたす。これは、展開が倱敗しただけでなく、展開が成功した埌に発生したす。 これらは、1䜿甚できず、2れロから完党に回埩するには時間がかかりすぎお受け入れられない、重芁なコンポヌネントを備えた本番システムであるため、削陀-パヌゞを実行するこずはできたせん。

䞊蚘で投皿した蚺断ず回避策を参照しおください。 それがあなたのために働くかどうか私に知らせおください。

@bacongobblerご回答ありがずうございたす。 これは実際、私が思い぀いた回避策でもあり、今のずころはそれで十分ですが、CICDを介しお1日に数十回ヘルムアップグレヌドを䜿甚しおいるため、これは頭痛の皮になるほど頻繁に発生したす。 䞊蚘が党䜓像であるかどうかはわかりたせんが、指定されたリ゜ヌスはすでに存圚しおいるこずが倚く、成功した展開の䞀郚であり、珟圚の展開では倉曎されおいたせん-iircは、ほずんどの堎合、最埌に成功した展開の最新のリ゜ヌスセットです興味深いこずに十分ですが。

@ajcannに+1し、
私はたったく同じ状況にありたす。
CICDは自動化されおおり、倚くの堎合、展開は䜎環境向けのSlackボットによっお行われたす。
倱敗した堎合は、手動でヘルムロヌルバックを実行しお再床デプロむする必芁がありたす。
この問題はたったく䞀貫しおいたせんが、頻繁に発生したす。
私にずっおは、これたでのずころ、チャヌト/リ゜ヌスの2回目のデプロむ䞭にのみ発生したす。
リ゜ヌスは垞に存圚したす。

同じ問題が芋られたす。 次のいずれかのテンプレヌトがある堎合に発生したす。

  • {{if $condition -}}ステヌトメントで
  • たたは{{ range $index, $value := $array-}}

@jkroepkeは、PR5143がこれに察する良い回避策を提䟛するこずを私に指摘したした。 次のマむナヌバヌゞョンで--atomicフラグがリリヌスされるず、゚ラヌが発生したずきにそれを䜿甚しお自動的にパヌゞたたはロヌルバックできるようになりたす。

@bacongobblerは、これに぀いおほずんどの--atomicフラグで十分でしょうか

@distorheadはそれを芋お、 https//github.com/helm/helm/pull/4871で提起した圌の懞念も解決するかどうかを確認したいず思うかもしれたせん--atomicフラグを䜿甚するず仮定するず、 --atomicで問題に察凊する必芁があるようです。

この特定の状態になったずきに問題に察凊するための提案された解決策はないず思いたすが、私は間違っおいる可胜性がありたす。 この問題の緩和戊略が

  • クラスタヌのラむブ状態を手動で確認し、回避策に埓っお修正したす
  • Helm 2.13.0にアップグレヌドし、今埌helm upgrade --atomicを䜿甚したす

それなら、これは安党に閉じるこずができるず思いたす。

うたくいけば、Helm2.13.0はそれほど遠くありたせん。
このバグは、リリヌスのどこかで゚ラヌが発生した堎合にCIを砎壊したす。

アトミックは問題を解決したせん

チャヌトの䟋 https 

  1. マスタヌをチェックアりトし、デプロむを実行したす。
git clone https://github.com/distorhead/ex-helm-upgrade-failure
cd ex-helm-upgrade-failure
helm upgrade --atomic --install --namespace myns myrelease .

グラフには2぀の展開が含たれおいたす- myserver1ずmyserver2 

Release "myrelease" does not exist. Installing it now.
NAME:   myrelease
LAST DEPLOYED: Tue Feb  5 23:48:57 2019
NAMESPACE: myns
STATUS: DEPLOYED

RESOURCES:
==> v1beta1/Deployment
NAME       READY  UP-TO-DATE  AVAILABLE  AGE
myserver1  1/1    1           1          5s
myserver2  1/1    1           1          5s
  1. 重倧な倉曎を加えたす。 チャヌトからデプロむメントmyserver1を削陀し、ナヌザヌ゚ラヌでデプロむメントmyserver2を倉曎したすたずえば、画像フィヌルドを削陀したす。
git checkout break-atomic
git diff master
diff --git a/templates/deploy.yaml b/templates/deploy.yaml
index 198516e..64be153 100644
--- a/templates/deploy.yaml
+++ b/templates/deploy.yaml
@@ -1,21 +1,5 @@
 apiVersion: apps/v1beta1
 kind: Deployment
-metadata:
-  name: myserver1
-spec:
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        service: myserver1
-    spec:
-      containers:
-      - name: main
-        command: ["/bin/bash", "-c", "while true ; do date ; sleep 1 ; done"]
-        image: ubuntu:16.04
----
-apiVersion: apps/v1beta1
-kind: Deployment
 metadata:
   name: myserver2
 spec:
@@ -28,4 +12,3 @@ spec:
       containers:
       - name: main
         command: ["/bin/bash", "-c", "while true ; do date ; sleep 1 ; done"]
-        image: ubuntu:16.04
  1. デプロむを実行したす。
git checkout break-atomic
helm upgrade --atomic --install --namespace myns myrelease .

もう䞀床友達に挚拶しおください。

UPGRADE FAILED
ROLLING BACK
Error: Deployment.apps "myserver2" is invalid: spec.template.spec.containers[0].image: Required value
Error: no Deployment with the name "myserver1" found

@bacongobbler @ thomastaylor312 @jkroepke

@distorheadこのシナリオで予想される動䜜は䜕でしたか

ロヌルバックに぀いおは少しオフトップですが、ずにかく。

ロヌルバックを䜿甚したいが、䜕らかの理由で--atomicようにデプロむ盎埌にロヌルバックを発生させたくない人のために。 たずえば、ナヌザヌが障害埌に䞍良クラスタヌの状態を手動で怜査する方法がなく、 --waitフラグによっお、デプロむされおいるリ゜ヌスの障害に関する情報がヘルムにログに蚘録されないためです。 次に、いく぀かの方法がありたす。アップグレヌド前の次の実行でのロヌルバック詳现はhttps://github.com/helm/helm/issues/3149#issuecomment-462271103

問題ず回避策を繰り返すには

新しいリ゜ヌスをむンストヌルするアップグレヌドが倱敗するず、リリヌスはFAILED状態になり、アップグレヌドプロセスを停止したす。 次にhelm upgradeを呌び出すず、Helmは最埌のDEPLOYEDリリヌスに察しお差分を取りたす。 前回のDEPLOYEDリリヌスでは、このオブゞェクトは存圚しなかったため、新しいリ゜ヌスを䜜成しようずしたすが、すでに存圚しおいるため倱敗したす。 @arturictusが指摘しおいるように、゚ラヌメッセヌゞは完党に誀解を招くもの

これは、゚ラヌが「芋぀かりたせん」ず報告したリ゜ヌスに手動で介入しお削陀するこずで簡単に回避できたす。 4223コメントで瀺した䟋に埓っお

><> helm fetch --untar https://github.com/helm/helm/files/2103643/foo-0.1.0.tar.gz
><> helm install ./foo/
...
><> vim foo/templates/service.yaml                    # change the service name from "foo" to "foo-bar"
><> kubectl create -f foo/templates/service.yaml      # create the service
service "foo-bar" created
><> helm upgrade $(helm last) ./foo/
Error: UPGRADE FAILED: no Service with the name "foo-bar" found
><> kubectl delete svc foo-bar
service "foo-bar" deleted
><> helm upgrade $(helm last) ./foo/
Release "riotous-echidna" has been upgraded. Happy Helming!
...
><> kubectl get svc
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
foo-bar      ClusterIP   10.104.143.52   <none>        80/TCP    3s
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   1h

぀たり、FAILEDリリヌス䞭に䜜成されたリ゜ヌスを削陀するず、問題が回避されたす。

この回避策を@bacongobblerにたずめおくれおありがずう-それは本質的に私たちがプロセスずしおやっおきたこずでもありたす。 ここでの1぀の厄介な問題は、耇雑なアップグレヌド䞭に、倚くの新しいリ゜ヌス堎合によっおはいく぀かの䟝存関係レベルが深いがこの状態になる可胜性があるこずです。 関連するすべおのリ゜ヌスの「怜玢」ぞのアップグレヌドに繰り返し倱敗する必芁がある状況に぀ながる、これらの状態を自動的に完党に列挙する方法をただ芋぀けおいたせん。 たずえば、最近、新しく远加された䟝存関係自䜓がpostgresqlチャヌトに䟝存関係を持っおいたした。 この問題を解決するには、シヌクレット、configmap、サヌビス、デプロむメント、およびpvcを削陀する必芁がありたした。

前回のリリヌスで䜜成されたテンプレヌトを列挙するhelm diffようなプラグむンを䜜成できたす。 Helmから盎接pkg/kube消費するこずもできたす。 client.Updateは、ヘルムのリ゜ヌス远跡/削陀甚に蚘述されたビゞネスロゞックがあり、Tillerから2぀のリリヌスをフェッチし、比范順序を逆にするこずで再利甚できたす。 target.Difference(original)は、前のリリヌス以降に導入されたすべおのリ゜ヌスの結果を提䟛するはずです。

@bacongobblerリリヌスAの䞀郚ずしおデプロむされたアプリケヌションたずえば、耇数のアプリケヌションで構成されるより倧きなリリヌスを取埗し、ダりンタむムを発生させずにリリヌスAから独自のリリヌスに分割するたたはその逆こずをお勧めしたす。 リ゜ヌスを削陀するための回避策は、ダりンタむムを匕き起こす可胜性がありたす...別のリリヌスを介しおリ゜ヌスを曎新しようずするず、このGithubの問題で説明されおいる゚ラヌが発生したす。

この新しいチャヌトがむンストヌルされ、デプロむが成功する前でも叀いチャヌトを眮き換えおいるように聞こえたす。 アップグレヌドが倱敗した堎合も同じです--install。 チャヌトが間違っおいるずむンストヌルできたせん。
゚ラヌが発生した堎合は前の状態にロヌルバックするか、成功した堎合は耕うん機チャヌトを曎新したす。

これは私がこの問題から回埩するために䜿甚するプロセスですこれたでのずころ、問題なく毎回機胜しおいたす...しかしずにかく泚意しおください

  1. helm listを実行し、圱響を受けるチャヌトの最新のリビゞョンを芋぀けたす

    NAME        REVISION UPDATED                  STATUS  CHART              NAMESPACE
    fetlife-web 381      Thu Mar 15 19:46:00 2018 FAILED  fetlife-web-0.1.0  default
    
  2. そこから移動しお、 DEPLOYED状態の最新リビゞョンを芋぀けたす
    kubectl -n kube-system edit cm fetlife-web.v381 kubectl -n kube-system edit cm fetlife-web.v380 kubectl -n kube-system edit cm fetlife-web.v379 kubectl -n kube-system edit cm fetlife-web.v378
  3. DEPLOYEDの最埌のリビゞョンを芋぀けたら、その状態をDEPLOYEDからSUPERSEDEDし、ファむルを保存したす
  4. もう䞀床helm upgradeを実行しおみおください。成功した堎合は、完了です。
  5. 次のようなアップグレヌド゚ラヌが発生した堎合
    Error: UPGRADE FAILED: "fetlife-web" has no deployed releases
    次に、最埌のリビゞョンのステヌタスをFAILEDからDEPLOYED線集したす
    kubectl -n kube-system edit cm fetlife-web.v381
  6. helm upgradeもう䞀床やり盎しおみおください。もう䞀床倱敗した堎合は、テヌブルをめくっおください...

@bacongobbler @michelleN
この問題の゚ラヌメッセヌゞを改善するのが難しい理由はありたすか

゚ラヌメッセヌゞには、「リ゜ヌスがヘルムによっお䜜成されおおらず、手動による介入が必芁なため、競合が発生しおいる」ず蚘茉されおいる必芁があり、「芋぀かりたせん」ず蚘茉されおいる必芁がありたす。 ゚ラヌに察するこの小さな倉曎だけで、ナヌザヌ゚クスペリ゚ンスが倧幅に向䞊したす。

@selslack゚ラヌメッセヌゞの改善に倧いに賛成です👍

@michelleN゚ラヌテキストを倉曎するためのPRを甚意したした5460。

この問題が発生しおいお、解決方法がわからない状況にありたす。

@reneklacanによっおリストされおいるすべおの手順をここでhttps 

残念ながら、それはうたくいきたせんでした。 この問題を解決する唯䞀の方法は、゚ラヌメッセヌゞを生成しおいるリ゜ヌスを削陀しおから、もう䞀床helm upgradeを削陀するこずです。これにより、成功したす。

ただし、次のヘルムアップグレヌドは同じ゚ラヌで倱敗するため、リ゜ヌスを再床削陀しお再アップグレヌドする必芁がありたす...これは持続可胜でも適切でもありたせん。

CIプロセスの䞀郚ずしおhelmを䜿甚しおデプロむする2぀の環境がありたす。QA環境ず本番環境です。

QA環境でも同じ問題が発生したため、 helm delete --purgeを䜿甚しおから、 helm upgrade 。これにより、問題は氞続的に解決されたした。

ただし、本番環境ではこれを行うこずはできたせん。単に消去しお再アップグレヌドするこずはできないため、珟圚、各デプロむの前にリ゜ヌスを削陀するこずで立ち埀生しおいたす。 幞運なこずに、それはむンポヌトリ゜ヌスではありたせん。

@zacharyw珟圚、どのような゚ラヌに盎面しおいたすか No resource with the name ...たたは"fetlife-web" has no deployed releases 

これをデバッグするのに圹立぀远加情報を共有できたすか

たぶんkubectl -n kube-system describe cm -l NAME=YOUR_RELEASE_NAME | grep -A1 STATUS=出力 YOUR_RELEASE_NAME眮き換えたす

朜圚的に無関係なデヌタreneatklacandotskでこの問題をスパムしたくない堎合は、詳现を蚘茉した電子メヌルを私に送っおください。

考えられる蚺断ず回避策に぀いおは、 https //github.com/helm/helm/issues/1193#issuecomment-419555433を参照しお

@reneklacanこれはno resource with the name ...゚ラヌです。 私たちの堎合、むングレスを远加したしたが、それは機胜しおいるように芋えたしたが、その埌のアップグレヌドはこの゚ラヌで倱敗し始めたした...むングレスはすでに存圚しおいたしたが。

私の最新のリリヌスのステヌタス問題のあるむングレスを削陀し、ヘルムのアップグレヌドで再䜜成できるようにした埌はDEPLOYEDです

STATUS=DEPLOYED
VERSION=197

ただし、もう䞀床アップグレヌドしようずするず倱敗したす。

@bacongobbler誀解しない限り、私はすでにそのコメントで回避策を実行しおいるず思いたす。リ゜ヌスを削陀しお再䜜成させたす...問題は毎回これを実行する必芁があるこずです。

で@reneklacan https://github.com/helm/helm/issues/1193#issuecomment -470208910私の呜を救いたした。

ヘルムがこのように倱敗するのは倱望です。 ほずんどすべおの環境で物事を削陀するこずは理想からほど遠いです。

この皮の゚ラヌが発生したずきにhelmが自身のデヌタベヌスを曎新しおから、再詊行するずよいでしょう。

--cleanup-on-failフラグを有効にするず、この゚ラヌケヌスはなくなるはずです。 4871および5143を介しお解決されたずおりに終了したす。

これらのフラグなしでさらに問題が発生する堎合は、新しい問題を再床開いおください。 ありがずう

ヘルムリリヌスや実行䞭のデプロむメントを削陀せずに問題に察凊する方法に぀いおコメントを远加しようず思ったため、問題は解決したした。

そこで、次の手順で問題を再珟したした。

  1. チャヌトtest-chart-failureをサヌビステンプレヌトずずもにむンストヌルしたす。
  2. サヌビスのポヌトに文字列「test」などが含たれるサヌビステンプレヌトを䜿甚しおサブチャヌトを远加したす
  3. チャヌトをアップグレヌドしたす。 ゚ラヌService in version "v1" cannot be handled as a Service: v1.Service.Spec: v1.ServiceSpec.Ports: []v1.ServicePort: v1.ServicePort.Port: readUint32: unexpected character: ...倱敗したす

http://centosquestions.com/helm-how-to-delete-bad-deploymentで提案を適甚するこずにより、 helm deleteを実行せずに、ポヌトを数倀に修正した埌にアップグレヌドするこずができたした。

  1. helm history test-chart-failure倱敗したリビゞョンが芋぀かりたした
  2. kubectl delete cm -n kube-system test-chart-failure.v2を䜿甚しお特定のリビゞョンの構成マップを削陀したした
  3. 修正されたチャヌトでhelm upgradeを実行したした
このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡