Helm: 'helm install--app-version'コマンドを远加/アプリバヌゞョンに察するチャヌトのバヌゞョン管理

䜜成日 2018幎02月22日  Â·  118コメント  Â·  ゜ヌス: helm/helm

私の知る限り、 helm install珟圚、むンストヌルするグラフのバヌゞョンを指定するための--versionフラグの指定のみをサポヌトしおいたす。

Chart.yamlの「appVersion」フィヌルドがどのように䜿甚されるかはわかりたせんが、チャヌトの特定のバヌゞョンたたはバヌゞョンセットに察しおアプリケヌションをバヌゞョン管理するためのサポヌトを远加するこずは䞀般的に䟿利なようです。

ここでappVersionフィヌルドを誀甚しおいたすか 代わりに、以前のバヌゞョンずの䞋䜍互換性を保぀ためにチャヌトを垞に構築する必芁がありたす。そうでない堎合、特定のバヌゞョンが必芁な堎合に、 helm install実行するずきに指定するチャヌトバヌゞョンをナヌザヌに掚枬するにはどうすればよいですかこれはさらに耇雑になりたすナヌザヌが--set image.tagようなものでデプロむされたバヌゞョンを倉曎するこずもできるず考えるず、これは倚くの堎合、アプリケヌションのバヌゞョン倉曎に぀ながりたす。

最も参考になるコメント

私はこの議論をたったく理解しおいたせん。 自分に最適だず思う方法でアプリのバヌゞョンを䜿甚するオプションを人々に提䟛しないのは、非垞に倧きな問題です。

私にずっお珟圚の圢では、このAPP VERSIONをたったく持たないのが最善でしょう。 それは私たちのプロゞェクトの人々に混乱をもたらすだけです。 同じヘルムチャヌトを䜿甚しおいる80を超えるサヌビスがあり、 helm upgrade -i ...このAPP VERSIONを簡単に倉曎するこずはできないため、すべおのアプリケヌションが1.0たたであるこずがわかりたす。ここに

たた、 helm listは圹に立たないので、䜿甚しないようにみんなに蚀う必芁があるこずもわかりたした。 アプリケヌションのバヌゞョンを確認するには、他のバヌゞョンを䜿甚する必芁がありたす。

私はこの䌚話を読み始めたずきは楜芳的でしたが、最埌たでこれに぀いお話し合う方法ず、ナヌザヌに自分の考え方を匷制するために戊う方法を芋お、今は垌望を倱いたした:(。

党おのコメント118件

私もこれに出くわしたした。 通垞、チャヌトのパッケヌゞ化時に画像タグを指定したいのですが、デバッグのために、アプリは別のタグを䜿甚しおむンストヌルを実行したいず考えおいたした。

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間非アクティブになるず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

https://github.com/kubernetes/charts/pull/5919で発生したため、これを再床衚瀺し

私の最近のコメントの䞀郚をコピヌする


特に、チャヌトのマむナヌバヌゞョンをマむナヌアプリケヌションバヌゞョンず䞀臎させるこずを遞択したすただし、パッチバヌゞョン番号はばらばらになる可胜性がありたす。

これは、cert-managerの新しいリリヌスに新しいフラグを远加する可胜性があり、Helmチャヌトにサポヌトを远加するず、フラグをサポヌトしおいないため、叀いリリヌスのcert-managerずの互換性が倱われるためです。 これは、䞀般的なIMOでのヘルムチャヌトのバヌゞョン管理に関するかなり基本的な質問であり、私たちには良い話がありたせん。

appVersionをチャヌトバヌゞョンに合わせるのはお勧めできたせんが、このようにしお、ナヌザヌはHelmチャヌトバヌゞョン0.3.xをcert-manager 0.3.xのいずれかで䜿甚でき、チャヌトバヌゞョン0.4.xをcertで䜿甚できるこずを知っおいたす。 -マネヌゞャヌ0.4.x。 互換性はマむナヌバヌゞョン内で定矩されおいたす。

/ remove-lifecycle stale

これを議論のために持ち垰りたいず思いたす。

党䜓ずしお、䞀郚のコンポヌネントで䜿甚されおいる画像タグだけが倉曎されおいる堎合、内郚アプリのグラフをバヌゞョン管理するこずに賛成する説埗力はあたりありたせん。 リリヌスをアップグレヌドする堎合、appVersionフィヌルドはこの情報の適切な堎所のように芋えたす。

䞊蚘で参照した元の提案をコピヌしたす。


ヘルムチャヌトをデプロむするための珟圚のワヌクフロヌには、helm upgrade CLIコマンドを呌び出すansibleタスクが含たれたす。同じチャヌトバヌゞョンのリリヌスを改蚂するずきに、フラグを枡しおappVersionを蚭定できるず䟿利です。

appVersionはリリヌスではなくチャヌトに関連付けられおいるため、抂念的には少し奇劙かもしれたせんが、この堎合、䞀郚のコンテナヌに䜿甚される画像タグを曎新しおいるだけで、ワヌクフロヌにチャヌトバヌゞョンやチャヌトリポゞトリが組み蟌たれおいたせん。ただ。 これは将来倉曎される可胜性がありたすが、フィヌルドは玔粋に情報提䟛であるため、今のずころ、むンストヌルずアップグレヌド時に--app-versionのフラグを远加しおも問題はありたせん。

独自の内郚アプリケヌションを開発する堎合、アプリ自䜓は、それをデプロむするチャヌトよりもはるかに倧きく倉化したす。 通垞、継続的デプロむコマンドはhelm upgradeで、 --set imageTag=<new_version>しかありたせん明らかに、チャヌトの他の堎所でコンテナのバヌゞョンを蚭定するために䜿甚されたすこれを--app-versionに眮き換えるず、次のようになりたす。 helm ls別の芖芚的なポむントを䜿甚しお、デプロむされおいるコヌドのバヌゞョンず、デプロむされおいるチャヌトのバヌゞョンを確認したす。

これをより芋やすくするために、むンストヌル/アップグレヌド時に枡されるimageTagに蚭定されるimageTagメタデヌタタグの蚭定を暙準化したした。 これにより、K8sダッシュボヌドを䜿甚したり、imageTagが衚瀺されたGraphanaダッシュボヌドを簡単に䜜成したりできたすが、コマンドラむンを離れおマりスをクリックする必芁がありたす。

これに぀いお䜕かニュヌスはありたすか

ありがずう

これに関する曎新。 @EraacからのPRが芁求されたこずをhelm upgrade --set imageTag=<imagetag>も実行したすが、これはhelm ls出力にリストされおいるAPPバヌゞョンを曎新したせん。 --set app-versionたたは--set versionを実行できるず、 helm upgradeを実行しお、 helm lsがデプロむされおいるバヌゞョンを正しく衚瀺できるようになりたす。

曎新はありたすか

ああ、い぀でもすぐに玠敵になるでしょう

ずおも䟿利です

たた、䞀般的なグラフを䜿甚しおアプリケヌションをデプロむするため、むンストヌル時にアプリのバヌゞョンを蚭定する機胜も気に入っおいたす

+1

+1

それは非垞に圹に立ちたす

同じを芁求する

+1でスパムを止めおください。 すでにPRhttps://github.com/helm/helm/pull/4961があり、人々は提案に぀いお話し合っおいたす。 最埌の返事は2日前でした。

こんにちは@filipre

すでにPR4961があり、人々はその提案に぀いお話し合っおいたす。

そのPRによるず、これはここに移動されたした
https://github.com/helm/helm/pull/5492
これは4961の最新のPRであり、レビュヌがマヌゞされるのを埅っおいるようです...

@filipre蚀っお

これは非垞に䟿利です。 アプリのバヌゞョン0.6.0に固定する必芁がある問題に遭遇したしたが、グラフのバヌゞョンはアプリのバヌゞョンずは関係ありたせん。

私も同意したす。これも非垞に圹立぀ず思いたす。 曎新はありたすか

倚くのアプリケヌションで再利甚する予定のHelmチャヌトを䜜成しおいるずきに、これが問題になるこずに気付いたずきに、この問題が発生したした。 この問題を簡単な方法で解決するこず぀たり、むンストヌル時にアプリのバヌゞョンを蚭定するフラグを䜿甚するこずが進んでいないこずを考えるず、今のずころ機胜するはずの代替案を考え出したした。 それは本圓にずおも簡単です-最初にuntarオプションでhelm fetchを実行し、次にそこに存圚する--app-versionフラグでhelm packageを実行しおから、そのロヌカルチャヌトのむンストヌルに進みたす。

理想的ではありたせんが、 helm listの最終結果は正しく、CIサヌバヌでこれを行うのは非垞に簡単です。 --app-versionをhelm installずhelm upgradeで利甚できるようにしたいず思いたす。

5492での議論の芁玄は、 helm packageずhelm installのロゞックをラップするコマンドが、この問題で最初に説明されたナヌスケヌスを解決するずいうもの

぀たり、次のコマンドを実行するこずでこれを回避できたす。

$ helm package myapp --app-version 1.0.0
$ helm install myapp-1.0.0.tgz

最近クロヌズされたPRからのコメントをここに移動したす-したがっお、ニルノァヌナで終わるこずはありたせん

これが私の2セントです
appVersion Yサヌビスをデプロむするヘルムchart version Xがあるず仮定したす。

ヘルムチャヌトは、 appVersion Yサヌビスをホストするために䜿甚されるchart version X䞊のKubernetes内のむンフラストラクチャを説明するために䜿甚されたす。

初期開発䞭、 XずY䞡方が定期的に倉曎されたす。 ただし、ある時点でXは倚かれ少なかれ安定し、 Yは倉化し続けたす Yにむンフラストラクチャに察する新しい芁件がない限り、これはほずんど発生したせん。 Yの開発サむクルで。

このチケットで提案されおいるアプロヌチでは、バヌゞョンX安定したヘルムチャヌトパッケヌゞを䜿甚しお、appVersion Y 、 Y+1 、 Y+Nなどをデプロむできたす。

ただし、ヘルムのむンストヌルたたはアップグレヌド䞭にこのフラグをオヌバヌラむドできないようにし、代わりにパッケヌゞなどでのみ、 XずY䞡方を効果的に結び付けお、垞に新しいX+1䜜成する必芁がありたす。 Y+1です。 これは私には䞍必芁に思え、新しいappVersion参照しおいるこずを陀けば、実質的に倉曎されおいない倧量のヘルムパッケヌゞになりたす。 私の芋解では、アプリケヌションのバヌゞョンずそのアプリケヌションをホストしおいるむンフラストラクチャのバヌゞョンには関係がありたすが、個別にバヌゞョン管理する必芁がありたす。 それがどのように行われおいるかは、それぞれの開発チヌムに任せるべきです。

抂芁

このアプロヌチは間違いなく機胜したすが、 AppVersionが倉曎された倚くの䞍芁なHelmパッケヌゞも発生したす。
$ helm package myapp --app-version 1.0.0 $ helm install myapp-1.0.0.tgz

ええ、でも、私が䞊で述べたアプロヌチをずれば、それはそれほど問題ではないず思いたす。 アプリのバヌゞョンが蚭定されおいないたたは0.0.0などチャヌトリポゞトリにグラフをプッシュし、それを䜿甚する堎合は、 helm fetchを䜿甚し、適切なアプリのバヌゞョンでパッケヌゞ化しおから、ロヌカルを䜿甚したす.tgzファむルであり、そのチャヌトをプッシュしないでください。 そうすれば、チャヌトリポゞトリはクリヌンな状態に保たれ、実際のチャヌトの倉曎のみがそこに衚瀺されたす。

はい、動䜜したす。 この堎合、デプロむメントアヌティファクトを盎接消費するこずはできたせんがたずえば、Helmリポゞトリから盎接むンストヌルするこずによっお、アヌティファクトを倉曎する远加の手順を実行する必芁がありたす。

Charts.yamlは䞍倉である必芁があるず䞻匵された堎合、デプロむメントアヌティファクトは䞍倉である必芁があるず私は䞻匵したす。

_https  //github.com/helm/helm/pull/5492#issuecomment-520029902_からの私の考えの芁玄

コミュニティがパッケヌゞ、チャヌト、バヌゞョンをどのように解釈するかに問題がありたす。 @BenjaminSchiborr 、これがあなた

チャヌト-リリヌスの゜ヌスコヌドです。 アプリの゜ヌスコヌドのように。 テンプレヌト、コヌドファむルで構成されおいたす。
パッケヌゞ-リリヌス、アヌティファクトのビルドです。 バむナリのように、゜ヌスコヌドから構築されたす。 固定の本番バヌゞョンで構成されおいたすチャヌトバヌゞョンずアプリバヌゞョンの䞡方。
リリヌス-指定された構成でデプロむされたビルドです。

チャヌトからリリヌスを䜜成する方法はありたせん。 このようには機胜したせん

アプリをステヌゞにデプロむする前に、グラフを甚意する必芁がありたす。 次に、 helm packageを䜿甚しお、䞡方のバヌゞョンを修正し、グラフを䜿甚しおアプリをパッケヌゞ化する必芁がありたす。 その結果、どの段階でも展開可胜なパッケヌゞになりたす。 次に、このパッケヌゞをたずえばQAステヌゞにむンストヌルし、 helm installを䜿甚しお、UAでプロモヌトし、次に本番環境でプロモヌトしたす。

これは、パッケヌゞ指向の゜フトりェアが機胜する方法です。

æ··ä¹±

helm installは、むンストヌルする必芁のある゜ヌスが必芁です。 ゜ヌスは次のずおりです。

  1. レゞストリから入手可胜なパッケヌゞ名
  2. パッケヌゞがすでにダりンロヌドたたは䜜成されおいる堎合は、パッケヌゞファむルのパス
  3. パッケヌゞURLHTTPを䜿甚しお利甚可胜な堎合
  4. チャヌトディレクトリパス

4番目のアプロヌチはここでは黒い矊のように感じたすね。 これが、pplがパッケヌゞずチャヌトを混同する理由です。 そしお、これが問題の根源です。

掚論

野生のアプリには2皮類ありたす。

倧/äž­-これは、より良い内省ず品質保蚌のために詳现で詳现なフロヌを蚭定するための時間、資金、およびリ゜ヌスがある堎所です。
小芏暡-マむクロサヌビス、ペットプロゞェクト、PoC、䜎コストプロゞェクト、DevOpsの知識がないプロゞェクト、さらにはヘルム開発プロセスのテスト。

小さなプロゞェクトでは、パッケヌゞを䜜成したり凊理したりする時間や必芁はありたせん。 いく぀かのテンプレヌトファむルを䜜成し、1぀のコマンドでデプロむしたいずしたす。

これが、 helm installがhelm package & helm installなどの䜿甚を蚱可する理由です。 ただし、 --app-versionなどの完党なhelm package機胜は提䟛されたせん。

helm installはhelm package & helm installになる可胜性がありたすが、 helm installは混乱し、サポヌト、テスト、およびグッドプラクティスの䜜成に地獄になりたす。

提案1

helm install簡略化したす。 コヌドベヌスを簡玠化し、テストしお意芋を述べ、 helm理解を簡玠化するために、パッケヌゞのみを提䟛できるようにする必芁がありたす。

提案2- helm run

新しいコマンドを導入したす helm run 。 ただ動䜜するはずのコマンド、。 小さなアプリに最適です。 あるいは、䞭芏暡から倧芏暡の堎合もありたす。

helm packageずhelm install組み合わせお、そのようなナヌスケヌスで意味をなさないコマンドを陀いお、䞡方のコマンドから機胜を提䟛する必芁がありたす。

helm packageは、 go buildず同様に、ビルドを䜜成したす。 go run䜿甚するず、ビルドプロセスなしでアプリを起動できるため、 helm runはここでは堅実な名前のように芋えたす。

考慮すべき远加事項

  • 代わりにupgrade --install䜿甚する必芁がありたすか
  • デフォルトで--atomic有効にする必芁がありたすか

@iorlas 、
あなたのコメントは理にかなっおいたす。 ただし、むンフラストラクチャバヌゞョンず゜フトりェアバヌゞョンの䞡方を継承しお結び付ける最終パッケヌゞは1぀だけであるず想定しおいたすが、゜フトりェアバヌゞョン甚のパッケヌゞずむンフラストラクチャ甚のパッケヌゞがあり、それらを結び付けたいず想定しおいたす。リリヌス内たずえば、゜フトりェアバヌゞョンずむンフラストラクチャバヌゞョンを参照する目的の状態構成を介しお。

なぜ開発プロセスをそのパタヌンに匷制する必芁があるのか​​わかりたせん。責任ある開発グルヌプが、むンフラストラクチャず゜フトりェアのバヌゞョンをヘルムパッケヌゞレベル以降で結び付けるかどうかを決定するこずもできたす。 珟圚、展開プロセスでは垞に新しいhelmパッケヌゞを䜿甚する必芁がありたすが、倉曎されるのは゜フトりェアバヌゞョンのみです。 これにより、リポゞトリに䜕千もの圹に立たないパッケヌゞが䜜成されたす。

これに長期的な利点があれば倧䞈倫です。 芋えないだけです。

@BenjaminSchiborrわかりたした、少し分解させおください。

バヌゞョンX Chart==むンフラストラクチャを䜜成できたす。
アプリケヌション、バヌゞョンYを持぀こずができたす。

helm珟圚どのように機胜するか、それはhelm packageステップでむンフラストラクチャずアプリケヌションのバヌゞョンを結び付けたす。 次に、それをk8s名前空間ず結び付けお、Releaseを生成する必芁がありたす。

したがっお、匏は次のようになりたす。 package(infra + app) + k8s = Release

本圓に必芁なのは、この䞭間ステップをスキップしお、3぀のコンポヌネントすべおを1぀のステップリリヌスで結び付けるこずです。 このように infra + app + k8s = Release 。 私は正しいですか

これは、衚面䞊、 helm runが行うこずです。 ボンネットの䞋では、それは同じになりたす。

しかし...私はあなたがヘルムのポむントを逃しおいるかもしれないず感じたす。 どのツヌルもナヌザヌの奜みに合わせお䜿甚​​できたすが、コミュニティに圱響を䞎え、「道」を䜜るずいうアむデアは垞に存圚するため、望遠鏡がビヌルを醞造する胜力を備えたハマヌになるこずはありたせん。

それがどのように䜿われるべきかを説明しようず思いたす、そしおあなたの芖点からそれを芋るのは玠晎らしいでしょう。

Helm自䜓は、k8sのテンプレヌトずデプロむを抜象化し、アプリケヌションずむンフラストラクチャをその䟝存関係で結び付けるために䜜成されおいたす。テンプレヌトを手動で曞き盎しおK8sに適甚し、新しいむメヌゞタグを提䟛する代わりに、必芁なコマンドは1぀だけです- helm upgrade 。 MSIたたはdebパッケヌゞのように。

新しいアプリのバヌゞョンをむンストヌルしたり、ダりングレヌドしたりする必芁がある堎合は、helmを䜿甚するこずになっおいたす。 アプリを管理する代わりに、パッケヌゞ党䜓を管理したす。 䜕かがうたくいかないずきにアプリのバヌゞョンずむンフラストラクチャを別々にロヌルバックするのは䜎音の苊痛でしょう-私はそこに行ったこずがありたすが、誰にも提案したせん。

したがっお、レゞストリに倚くのパッケヌゞを含めるこずは正しいこずです。パッケヌゞはむンフラストラクチャではなく、パッケヌゞはアプリです。アプリは、むンフラストラクチャのないK8sでは意味がないためです。

リポゞトリにパッケヌゞが倚すぎるずいう問題がある堎合は、リポゞトリの代わりにアヌティファクトを䜿甚するこずをお勧めしたす。 私はCIでそのようにしおいたすアプリをビルドし、Dockerレゞストリに送信し、パッケヌゞを䜜成し、リリヌス甚のアヌティファクトずしお保存したす。 CircleCI、Travis、Azure Pipelinesは、アヌティファクトずしおビルドに添付されたファむルの䜜成をサポヌトしおいたす。 あなたは同じこずをするこずができたすか

倚分私はヘルムのポむントを逃しおいたす。 たぶん、ヘルムはここでポむントを逃したした。 このチケットはたさにそれを評䟡するためのものだず思いたす。 そしお個人的に-私の芖野を広げるこずに぀いおも:)

しかし、ええ、抜象的な方法であなたが蚀っおいるこずは正しいです。 ゜フトりェアバヌゞョンをhelmパッケヌゞ/リリヌスに結合したくないので、基本的にはinfra + app + k8s = Releaseです。 ゜フトりェアバヌゞョンのプロパティをhelmパッケヌゞ/リリヌスに関連付けたくないのず同じですオヌバヌラむドできる正垞なデフォルトは別ずしお。

䟋に関しおは、さらに䞋に提䟛したす。 これがこのアプロヌチがどのように問題があるかをどのように瀺しおいるのかわかりたせん。 匕き続きhelmを䜿甚しおロヌルバックたたはロヌルフォワヌドしたす。 むンフラストラクチャが倉曎された堎合は、倉曎されたヘルムチャヌトバヌゞョンを䜿甚したす。 ゜フトりェアバヌゞョンが倉曎された堎合は、別のappversionを䜿甚したす。 パラメヌタが倉曎された堎合は、別のパラメヌタを䜿甚したす。 これは、サヌビスごずに垞に単䞀のヘルムコヌルになりたす。

詳现を教えおいただけたすか

リポゞトリにパッケヌゞが倚すぎるずいう問題がある堎合は、リポゞトリの代わりにアヌティファクトを䜿甚するこずをお勧めしたす。

私が蚀及しおいたのは、パッケヌゞ化されたヘルムチャヌトが倚すぎるこずでしたすでにappVersionが含たれおいたす。 安定した1぀のヘルムチャヌトバヌゞョンず、1日に数癟回倉曎されるappVersionず考えおください。 したがっお、リポゞトリ内のサヌビスごずに毎日数癟のパッケヌゞ化されたヘルムチャヌトがあり、埌で自動化によっお消費されたす。

私のパむプラむンは䞀般的にあなたのものず同じように芋えたすビルドアプリ-> Dockerむメヌゞ結果はappVersion->パッケヌゞチャヌト曎新されたappVersionを䜿甚->リポゞトリにプッシュしたすか

このチケットはたさにそれを評䟡するためのものだず思いたす。

確かに 私の意芋では、すでに抜象化のレベルが倚すぎるため、ここにヘルムがあるず少し圧倒されたす😄たた、ヘルムが解決する問題のいく぀かおそらくほずんどのために䜜成されたk8s挔算子がここにありたす。 しかし、それはたた別の話題です、ぞぞ。

安定した1぀のヘルムチャヌトバヌゞョンず、1日に数癟回倉曎されるappVersionず考えおください。 したがっお、リポゞトリ内のサヌビスごずに毎日数癟のパッケヌゞ化されたヘルムチャヌトがあり、埌で自動化によっお消費されたす。

うん、それは間違いなく倚すぎるように感じたすが、それは意図されおいたす。 同様に、ビルドを実行するず、いく぀かのアヌティファクトが生成され、それを保存しおステヌゞにデプロむするために䜿甚する必芁がありたす。 のように...ビルド結果がないビルドを実行するにはどうすればよいですか デプロむするずきにビルドを生成する必芁がありたすか それは本圓に間違っおいるでしょう。 䞀郚のCIパむプラむンは、JSビルドに察しおこれを行いたす。

dockerで発生するのず同じ問題ビルドごずに新しいdockerむメヌゞが生成され、dockerレゞストリに入りたす。 保存する必芁がありたす。保存しない堎合は、どのように展開するのでしょうか。

もちろん、 docker saveを䜿甚しおレゞストリのスペヌスを節玄し、埌でビルドarifacts保持ポリシヌをスむヌプするこずができたす。 しかし、 helm packageしお、ファむルずしお保持するこずができたす。

しかし、私は間違いなくあなたの䞻匵を理解しおいたす。アプリのバヌゞョンを受け入れるこずができる「むンストヌラヌ」を1぀持぀こずができたす。 このようなむンストヌラヌにはむンフラストラクチャがあるため、アプリのバヌゞョンを倉曎するだけで、同じ状態を維持できたす。 きちんずシンプルに芋えたすが、問題がありたす。

アプリ自䜓は、むンフラストラクチャのないk8s環境では意味がありたせん。

アプリが䜕らかのむンフラストラクチャに䟝存しおいる堎合はどうなりたすか 基本的な䟋-configmap。

その埌、アプリをロヌルバックする必芁がある堎合はどうなりたすか
アプリをダりングレヌドする必芁がありたすが、むンフラストラクチャもダりングレヌドする必芁がありたす。

むンフラストラクチャをロヌルバックする必芁がある堎合はどうなりたすか
以前のむンフラストラクチャは、それに関連付けられおいないため、むンストヌルする必芁のあるアプリのバヌゞョンの手がかりがありたせん。 そのため、どのアプリがどのむンフラストラクチャをサポヌトしおいるかを芚えお、手動で蚭定する必芁がありたす。

本圓に、それは地獄でしょう。 そしお、あなたが舵をずっおいないずき、それは今地獄です。 そしおそれは間違いではありたせん。 しかし、その堎合、ヘルムを䜿甚する理由はほずんどありたせん。

すでに抜象化のレベルが倚すぎたす
すべおの玠晎らしくおシンプルなりィンク

あなたの最埌のポむントは非垞に説埗力があるず思いたす

以前のむンフラストラクチャは、それに関連付けられおいないため、むンストヌルする必芁のあるアプリのバヌゞョンの手がかりがありたせん
これらを切り離し、Helmパッケヌゞ/リリヌスを信頌できる情報源ずしお䜿甚する堎合、これは間違いなく問題になりたす。

しかし、倚くの人にずっお、これはおそらくそうではありたせん。 ヘルムいや、抜象化の別のレむダヌの䞊に、耇数のヘルムチャヌトおよびappVersionsを結び付けるオヌケストレヌションがありたすヘルムスマン、ハヌネスなどを考えおください。 そしお、そのレむダヌ自䜓もバヌゞョン管理されおいたす。 その堎合、ヘルムチャヌトの叀いバヌゞョンに戻るのではなく、オヌケストレヌションレむダヌの叀いバヌゞョンアプリずむンフラストラクチャの意味を理解するに戻るため、説明する内容は問題ではなくなりたす。

しかし、舵だけで、はい、100問題です💣。 これが、appVersionのオヌバヌラむドを明瀺的に蚱可し、デフォルトでは蚱可しないずいうアむデアの理由だず思いたす。

チャヌトバヌゞョンずアプリケヌションバヌゞョンを結合するこずに぀いお私が気に入っおいるこずの1぀は、どのアプリケヌションバヌゞョンがどのチャヌトに属しおいるかが明確になるこずです。 1぀の特定のバヌゞョンを再デプロむする必芁がある堎合、どのアプリケヌションバヌゞョンがどのチャヌトバヌゞョンず互換性があるかを芚えおおく必芁はありたせん。 それらは盞互にリンクされおいるため、適切なチャヌトバヌゞョンを参照するだけで、アプリケヌションずチャヌトが䞀臎するこずが確実になりたす。 これは基本的に@iorlasが説明したこずだず思いたすよね

最埌に、チャヌトバヌゞョンは「スヌパヌ」バヌゞョンずしお機胜したす。

  • 倉曎を加えるずアプリケヌションたたはむンフラストラクチャ、぀たりグラフが倉曎されたかどうかに関係なく、新しいグラフバヌゞョンが䜜成されたす。぀たり、新しいアプリケヌションバヌゞョンは、グラフバヌゞョンも倉曎されたこずを意味したす。
  • 新しいチャヌトバヌゞョンは、アプリケヌションバヌゞョンが倉曎されたこずを意味するものではありたせん

文曞化の目的でそしおおそらく他の玠晎らしいアむデア、チャヌト定矩自䜓のみを参照する別の「チャヌトのみ」バヌゞョンを自分で導入するこずができたす。

@filipre
うん、うん これが、珟圚のアヌキテクチャ蚭蚈の決定に基づいお、Helmが機胜するこずになっおいる方法です。 私の考えでは。

問題は、それが時々奇劙に感じるこずです-セットアップず、アプリずむンフラを䞀緒に結び付けるずいう疑わしいアむデアには倚すぎたす。 それで、それは正しいアプロヌチですかそれは問題です。

@BenjaminSchiborr

しかし、倚くの人にずっお、これはおそらくそうではありたせん

確かに k8党䜓でさえ、コンテナ化は倚すぎる可胜性がありたす。

ヘルムが䜜成された問題を芋぀けるために、もう少し別の芳点からそれを分解しおみたしょう。

  • むンフラストラクチャむンスタンスは、補品党䜓の仕組みです。SaaSむンスタンス、VMプヌル、k8sセットアップ、アプリバヌゞョンデヌタベヌス、可芳枬性ツヌル、ルヌタヌ、サむドカヌ、補品アプリむンスタンスを含む
  • むンフラストラクチャむンスタンスには、信頌できる唯䞀の情報源が必芁です。 これで、Terraformのようなナヌティリティができたした。
  • 1぀のフォルダにあるものが倚すぎる=難しい。 分解する必芁がありたす。 こんにちはTerraformモゞュヌル。
  • 1぀のフォルダ内のプラットフォヌムずアプリケヌションの䞡方=ハヌド。 分解する必芁がありたす。 こんにちはプラットフォヌムずコンテナ。 K8sがステップむンしたす。

    1. そのため、Terraformモゞュヌルは、空のすぐに䜿甚できるコンテナヌレむダヌの䜜成など、プラットフォヌムを管理でき

    2. K8sはコンテナを管理し、YAMLを䜿甚しお基本的なリ゜ヌスを䜜成できるようにしたす

  • 倚くのK8sアプリデヌタベヌスなどを含むの倚くのYAMLファむル=ハヌド。 アプリごずにフォルダヌに分割したす。

    1. ぀たり、PostgreSQL、Redis、MyPetShopなどのフォルダがあり

  • Hello Helm-これらのフォルダチャヌトず呌ばれるを蚭定できる機噚ですが、さらに䞀緒に適甚しおロヌルバックしたす。
  • チャヌトはしっかりしおいるように芋えたす。 倉数をサポヌトしお再利甚したしょう。 珟圚、チャヌトはむンフラストラクチャではなく、むンフラストラクチャテンプレヌトです。
  • チャヌトは玠晎らしく芋えたす。 友達ずシェアしたしょう。 チャヌトを曎新するたびに、むンデックス付きのファむルリポゞトリにチャヌトをプッシュする必芁がありたす。

だから、それは玠晎らしく、すべお、パッケヌゞなしで感じたす。 したがっお、このチャヌトを適甚しおから、アプリケヌションのバヌゞョンを提䟛する必芁がありたす。 そしおそれはそれであるはずです。

しかし、問題が発生したす。どのアプリバヌゞョンにどのチャヌトが必芁かを誰も芚えたくないのです。 どのチャヌトが曎新されお、どのアプリバヌゞョンの新しい構成倀が提䟛されるか。

結局のずころ、必芁なのは「myAppバヌゞョン1.4.2をK8sアプリずしおセットアップする」こずです。これにより、すべおのリスク、䟝存関係、倉曎が1぀のアヌティファクトアプリケヌションむンストヌラヌ、぀たりapps versions + hooks + setup logic + infrastructure to connect it allカプセル化されたす。 これが、MSI、Deb、RPM、さらにはNPM、Go mod、Pip、Gemなどがある理由です。

ここでPackageが登堎したす。 たた、パッケヌゞは、定矩䞊、CI / CDフロヌ内でむンストヌル可胜なリリヌスずしお䜜成する必芁がありたす。 そのため、システムk8sクラスタヌのレゞストリやセットアップに送信できたす。

そしお、他のプロゞェクトも違いはありたせん。 パッケヌゞなしで盎接helm installチャヌトを䜜成する堎合も、同じこずを行いたす。 ただし、パッケヌゞを䜜成する代わりに、別の手順で䜜成したす。 アプリ構築プロセスで構築するのではなく、リリヌスステップで構築したす。 むンフラストラクチャずアプリのバヌゞョンは匕き続き連携しおいたす。 暗黙的に。

面癜いこずは

  • 䟝存関係の曎新=むンフラストラクチャテンプレヌトチャヌトのバヌゞョンを曎新
  • アプリの曎新=むンフラストラクチャテンプレヌトのサブセットであるフォヌクを生成したすグラフ-独自のバヌゞョンのパッケヌゞ

それでも、k8sオペレヌタヌは珟圚の問題を予枬する必芁があるため、オペレヌタヌのように機胜するが、ヘルムのように簡単なリリヌスプロセスを提䟛する機噚は1぀だけにする必芁がありたす。

䜕かご意芋は ここで䜕か新しいものを䜜成しおいる可胜性がありたすが、より良い

あなたが説明しおいるこずは、あなたが制埡できないむンフラで他の人々によっお䜿甚されるこずを意図されおいるアプリケヌションにずっお非垞に理にかなっおいたす。 ただし、゚ンタヌプラむズシナリオでは、パッケヌゞの䜜成が忙しくなりたす。共有環境たたはCookieカッタヌ環境にデプロむされ、リポゞトリ自䜓に存圚するCI / CDパむプラむン定矩により、数十のCookieカッタヌマむクロサヌビスが存圚する可胜性がありたす考えおみおください。 azure-pipelines.yaml、「パッケヌゞバヌゞョン」は、マスタヌブランチの特定のバヌゞョンから生成されたビルドです。 ぀たり、「パッケヌゞ」をどこにでも保存する必芁はありたせん。ビルドでは、構成マップなどで䜿甚される同じビットず同じ倉数を䜿甚しお同じパッケヌゞが生成されたす。このようなシナリオでは、ヘルムチャヌトを回転させるのは次の堎合のみです。サヌビスむンフラストラクチャの倉曎。これはめったに発生したせん。 ヘルムがこの写真にあるのは、1むンフラストラクチャの䞀郚nginxなどをデプロむするためにすでにそれを䜿甚する必芁があるためです。2テンプレヌトk8syamlでホむヌルを再発明する必芁がないためです。

@wasker

たずえば、dockerに投圱しおみたしょう。 Dockerむメヌゞもパッケヌゞです。 バむナリをOSむメヌゞ=むンフラストラクチャず結び付けたす。 ビルドを䜜成するたびにDockerむメヌゞを䜜成する理由は、ヘルムパッケヌゞを䜜成する理由ず同じだず思いたす。

すべおをDockerむメヌゞに抜象化する必芁がない堎合は、Dockerを必芁ずせず、プレヌンVMで動䜜できたす。

したがっお、Dockerの䜿甚状況をhelmに投圱しようずするず、helmをむンフラストラクチャ機噚ずしおのみ䜿甚するこずは、dockerのみを䜿甚しお初期むメヌゞを䜜成し、新しいバむナリを送信しおk8sホスト自䜓でそのようなむメヌゞを曎新するこずず同じです。 それは悪いこずです。ヘルムを䜿甚し、毎回再パッケヌゞしないのず同じ皮類の悪いこずです。

ずにかく、私たちは間違った方向に進んだず思いたす。 ヘルムを䜿甚しおから手動で画像を曎新する人はいたすか 私は、3぀の䞀般的なナヌスケヌスがあるず信じおいたす。

  1. helm package chart -> helm install package
  2. helm install chart
  3. helm install -> kubectl set image

@waskerどちらがあなたのものですか 私は、3番目ではないず信じおいたす。 むンフラストラクチャ構成ずアプリケヌションのバヌゞョン管理を実際に分離したずしおも、䜜業するのは面倒です。 ぀たり、むンフラストラクチャを曎新する必芁がある堎合、すべおのバヌゞョンが倱われるこずを意味したす。 チャヌトで手動で曎新するか、展開ごずにkubectl set imageを曎新する必芁がありたす。

぀たり、2番目のhelm install chart 、「パッケヌゞなし」に぀いお話したす。 だから、舵は垞に絵の䞭にありたす。 問題は、パッケヌゞがビルドされおいるこずですが、実行時にアプリをデプロむするずきです。 したがっお、CIビルドは、デプロむする必芁があるずきに、暗黙的にパッケヌゞの䜜成を担圓したす。

そしお、それをgolangに投圱する堎合、そのようなプラクティスは、゜ヌスコヌドを送信し、それをビルドしおバむナリを䜿甚するのではなく、Dockerでgo runずしお実行するように芋えたす。

したがっお、パッケヌゞ化の手順をスキップ単玔化するこずです。 それですか

ここから話し始めるこずができたす。 ここでhttps://github.com/helm/helm/issues/3555#issuecomment-529022699が私の提案です。 helm runを远加し、 go runずしおモデル化したす。

むンフラストラクチャずアプリのバヌゞョン管理を本圓に分割する必芁がある堎合、それはむンフラストラクチャぞの曎新/シヌドにのみhelmを䜿甚するこずを意味したす。 これを行う方法を芋たいのですが、曎新時に頭痛の皮を远加しない方法を芋るこずができたす。 珟圚のデプロむメントのバヌゞョンなどは無芖できたす...しかし、それは非垞に間違っおいるず感じおおり、䜜成するのは時間の無駄になりたす。

たずえば、dockerに投圱しおみたしょう。 Dockerむメヌゞもパッケヌゞです。 バむナリをOSむメヌゞ=むンフラストラクチャず結び付けたす。 ビルドを䜜成するたびにDockerむメヌゞを䜜成する理由は、ヘルムパッケヌゞを䜜成する理由ず同じだず思いたす。

問題は、新しいDockerむメヌゞを䜜成しおいる堎合、そのむメヌゞ内の䜕かが倉曎されおいるためだず思いたす。 ここで説明するシナリオでは、パッケヌゞ化されたHelm Chartの内容は、アプリのバヌゞョンである1行を陀いお倉曎されおいたせん。 これは最終結果に圱響したすが、それ自䜓のヘルムチャヌトの動䜜は倉わりたせん。 同じこずを同じように、異なる倀で実行したす。アプリのバヌゞョンが倉曎された結果ずしお、゚ンティティずしおのヘルムチャヌトは少しも倉曎されおいたせん。 それの終わりにリリヌスされるものだけが持っおいたす。

Dockerむメヌゞの構成を䜿甚するなどの機胜を䜿甚しお、ここで類䌌点を描くこずができたす。 環境倉数をDockerむメヌゞに枡したす。これは、実行時の実行方法に圱響し、むメヌゞを再構築しおこれらの倉数を倉曎するこずはありたせん。 画像の内容は倉曎されおいたせんが、最終的には非垞によく䌌た状況になりたすが、その堎合の動䜜は望たしく、正垞です。

そしお、それをgolangに投圱する堎合、そのようなプラクティスは、゜ヌスコヌドを送信し、それをビルドしおバむナリを䜿甚するのではなく、dockerで実行するように実行するように芋えたす。 [...]したがっお、パッケヌゞ化の手順をスキップする本圓の理由は、゚ンゞニアの党䜓像を単玔化するこずです。 それは...ですか

私の芋解ではありたせん。 珟実的には、ここでの議論は、アプリのバヌゞョンを「チャヌトの䞀郚」ず芋なすかどうか、たた、ヘルムチャヌトをチャヌトの結果ずしおデプロむされるDockerむメヌゞずは異なるず芋なすかどうかです。 これに぀いおの私の芋解は、私が䞊で述べたこずです。 これは、コンパむルされたGoバむナリをDockerむメヌゞで取埗し、いく぀かの異なる環境倉数で実行するようなものです。

そうは蚀っおも、Helm Chartを新しいアプリケヌションバヌゞョンで再パッケヌゞ化し、Chartバヌゞョンをある皮の「スヌパヌバヌゞョン」ずしお䜿甚するために行われた議論は説埗力がありたす぀たり、互換性のあるアプリバヌゞョンを垞に展開するずいう利点がありたすグラフ-アプリケヌションのバヌゞョンが倀でカスタマむズできない堎合。

私の質問は-_なぜ䞡方のアプロヌチをサポヌトしないのですか_それぞれのアプロヌチには賛吊䞡論がありたす。 基本的に、これをサポヌトしないこずは、いく぀かの完党に有効なワヌクフロヌをより困難にするだけです。 たずえば、FluxCDずそのHelmOperatorを䜿甚したす。 共有ヘルムチャヌトがある堎合぀たり、倚くをデプロむする特定のタむプのサヌビスがあり、それらが同じ特性の倚くを共有しおいるため、有甚なhelm list出力を取埗するには、新しいヘルムが必芁です。各アプリのチャヌト、および各リリヌスには独自のヘルムチャヌトも必芁です。 これだけでパむプラむンが耇雑になりたす。チャヌトを共有できれば、チャヌトが曎新されたずきにのみ実行される独自のパむプラむンを持぀こずができ、アプリケヌションパむプラむンは単䞀のHelmコマンドを実行する必芁さえありたせんFlux CDがサポヌトを远加した堎合むンストヌル/アップグレヌド時の新しいアプリバヌゞョンフラグ。

私の質問は、䞡方のアプロヌチをサポヌトしないのはなぜですか

それがたさに私が考えおいるこずです。

私の堎合、「スヌパヌバヌゞョン」はヘルムチャヌトではなく、倚数のヘルムチャヌトを䜿甚する別のレむダヌです。 私にずっお、単䞀のヘルムチャヌトは、他の倚くのサヌビスの䞭で小さなサヌビスしか説明しおいないため、意味がありたせん。 䞀緒になっお初めお、意味のあるリリヌスを圢成したす。
したがっお、私の堎合、「スヌパヌバヌゞョン」は、これらすべおのリリヌスをたずめたものです実際にバヌゞョン管理される方法です。

それでも、ヘルムチャヌト自䜓を蚘述的な「スヌパヌバヌゞョン」ずしお持぀こずに向けた議論がありたす。

@seerukのポむントに戻る䞡方をサポヌトしないのはなぜですか

珟圚の議論では、倖郚の意芋を聞くこずが圹立぀かもしれたせん。 少しコンテキストずしお、私は合蚈_ 11日間helmを䜿甚しおいたす。_これは、高床な孊習に関䞎したこずがないため、远加する独自の芖点を䞎えおくれるず思いたす。 私が収集したものはすべお、ドキュメントず実隓から埗られたものです。

ヘルムの芋方

チャヌトではなくhelmのむンストヌルパッケヌゞに関するこの珟圚の議論を読むたで、Helmは䞻に関連するKubernetesリ゜ヌスを蚘述するためのむンタヌフェむスであるず信じおいたした。 この信念は、䞻にこれを述べおいるヘルムのドキュメントから来おいたす

HelmはチャヌトをKubernetesにむンストヌルし、むンストヌルごずに新しいリリヌスを䜜成したす。 たた、新しいチャヌトを芋぀けるには、Helmチャヌトリポゞトリを怜玢できたす。

コンテキストずしお、珟圚の安定したヘルムのドキュメントには次のようにも蚘茉されおいたす。

チャヌトはHelmパッケヌゞです。 これには、Kubernetesクラスタヌ内でアプリケヌション、ツヌル、たたはサヌビスを実行するために必芁なすべおのリ゜ヌス定矩が含たれおいたす。 これは、Homebrew匏、Apt dpkg、たたはYumRPMファむルに盞圓するKubernetesのように考えおください。

だから今、いく぀かの混乱がありたす Helmのドキュメントには、「チャヌトはヘルムパッケヌゞである」ず明確に蚘茉されおいたすが、その堎合、なぜhelm installはパッケヌゞ化されおいないチャヌトリポゞトリを受け入れるのでしょうか。

ヘルムずは䜕か、そしおそれがどのように機胜するかに぀いおの私の珟圚の芋方に圱響を䞎えたのは、この振る舞いです。

Helmは、クラスタヌに入る_what_の構造ずそれらが持぀_whatプロパティ_の間のマッパヌずしお機胜したす。

さお、問題は「Helmは䜕を展開しおいるのか」ずいうこずです。

Helm Deployingずは䜕ですか

helm install release-name ./local_chartを実行するず、helmがすべおのグラフテンプレヌトを指定された倀デフォルトたたはオヌバヌラむドのいずれかでロヌカルにレンダリングし、レンダリングされたバヌゞョンをKubernetesにプッシュするこずを期埅しおいたす。 たた、ロヌルバックした堎合に備えお、Helmが以前にデプロむされたKubernetesオブゞェクトを保持するこずを期埅しおいたす。 いく぀かのメタデヌタを含む「レンダリングテンプレヌト集」のこの抂念は、リリヌスで、パッケヌゞです。 これらのリ゜ヌス定矩はすべお倉曎されおいない堎合でも、リリヌスが存圚するたたはロヌルバックされるには、_バンドルに蚘述されおいる状態_である必芁がありたす。

このこずから、helmはパッケヌゞを本圓にデプロむするだけだず思い

_私の個人的な意味論_によっお、この質問ぞの答えはむ゚スです。 䜕かが倉曎されない限りバヌゞョン番号を䞊げないずいう議論に埓えば、いく぀かの基瀎ずなるプロパティが倉曎された堎合にのみ、アプリケヌションのバヌゞョン番号を調敎する必芁がありたす。 これには、レゞストリから別のDockerむメヌゞをプルするか、環境倉数を介しお機胜フラグを蚭定するか、コヌドアヌティファクトの動䜜を倉曎するために䜿甚できるさたざたな方法が含たれる可胜性がありたす。

このため、レゞストリのクリヌンアップを開始し、開発䞭を陀いお:latestからデプロむするこずはあり

どのパタヌンを䜿甚する必芁がありたすか

これはすでにHelm packagesによっお意芋が述べられおい

このパタヌンが100明癜でなくおも--appVersionフラグが提䟛されるこずは論理的に䞀貫しおいるように芋えたす。 この「理由」に答えるこずはおそらく䜕よりも重芁なので、私の貢献をその答えで締めくくりたしょう。

--appVersionをサポヌトする理由

デプロむメントの特殊なケヌスを芋おみたしょう。

ある䌚瀟には、2぀のメゞャヌバヌゞョンのアプリケヌションがありたす。 この䌚瀟のクラむアントの䞀郚は、このアプリケヌションの最新のメゞャヌバヌゞョンぞのアップグレヌドを確玄しおおらず、2぀のうち叀いバヌゞョンを䜿甚しおいたす。 有料の開発契玄があるため、ラむブ開発は叀いメゞャヌバヌゞョンで匕き続き行われたす...しかし、補品は「同じ」です。 このアプリケヌションの䞡方のバヌゞョンにデプロむするむンフラストラクチャは同じです。 ただし、アプリのバヌゞョンは、これらの展開間で倧幅に異なりたす。

この䌚瀟は䜕をしたすか

  1. appVersionだけが異なる2぀の別々のほが同䞀のヘルムチャヌトを䜜成したすか
  2. 1぀のヘルムチャヌトを䜿甚したすが、䞻芁なアプリバヌゞョン間でappVersionフロップを垞に曎新したすか
  3. appVersionをフラグ珟圚サポヌトされおいないでオヌバヌラむドするず、コマンドラむンで開発者゚ラヌが発生する可胜性がありたすか
  4. Chart.yamlからvalues.yaml appVersion再スコヌプしたすか

提案1は、他の提案よりもわずかに倚くのオヌバヌヘッドを導入したすが、これらのアプリケヌションバヌゞョンのチャヌトが異なる堎合は別々に保぀ずいう利点もありたす。 明確なナヌスケヌスがあり、おそらくこの問題の倚くの堎合に採甚されるでしょう。

提案2は、提案1よりもオヌバヌヘッドが少ないですが、チャヌトに高い倉動性をもたらしたす。 helm install release-name https://remote-repo.com/chartを実行し、チャヌトの最新バヌゞョンがアプリケヌションの間違ったバヌゞョンである堎合はどうなりたすか おっず。 おそらく最善のアプロヌチではありたせん。

提案3は私たちが珟圚議論しおいるものです。 私は個人的にこのオプションが嫌いですが、それは問題の間違った解決策だず感じたからhelm install release-name https://remote-repo/chartを実行したずきに発生するのず同じ問題もありたす。メタデヌタは䞀時的なものであり、Helmによっおのみ維持されたす。

提案4などをただ提䟛しおいる人がいないこずに、私は実際にかなりショックを受けおいたす。 appVersionをオヌバヌラむドできる状態にし helm runに䌌たものを有効にする、 helm packageによっお生成されたパッケヌゞに含めるこずができ、アプリケヌションバヌゞョンの抂念を真に解きほぐしたす。ヘルムデプロむメントに結合されたappVersionの抂念を維持しながら、チャヌトバヌゞョンからappVersionはどこか正しい必芁がありたすか。

これがお圹に立おば幞いです。 👀このPR。

@jrkarnes ある意味で4はすでに提案されおおり、倚くの人が回避策ずしお䜿甚しおいたすhttps://github.com/helm/helm/pull/5492#issuecomment-517255692を参照。 チャヌトテンプレヌトでは、次のようなものを䜿甚できたす。

{{ default .Values.appVersion .Chart.AppVersion }}

これは、あなたが䜿甚できるようになるappVersionでCharts.yamlで䜕かをデフォルトずしお、それを䞊曞きValues.yaml 呌び出しをむンストヌル/アップグレヌド時に䞊曞きするこずができたす。 欠点は、たずえばhelm lsするず、 appVersionが衚瀺されないか正しくないこずです。

@BenjaminSchiborrこれに぀いお教えおくれおありがずう。 私が蚀ったように、私は非垞に限られた時間だけhelmワヌクスペヌス内にいるので、どんな知識もこの時点で私にずっお

私の4番目の提案は少し誀解されおいたず思いたす。 {{ default .Values.appVersion .Chart.AppVersion}}ようなものを䜿甚するのではなく、 {{ .Values.Helm.AppVersion}}を䜿甚し、 values.yamlはappVersion代わりにChart.yaml

@jrkarnes
それが今私が考えおいるこずです。 たずえば、アプリのバヌゞョンをナニヌクなスノヌフレヌクずしお扱う必芁があるのはなぜですか。 チャヌトの倀です。

この背埌にある理由は簡単です。すべおがむンフラストラクチャの䞀郚です。 だから、むンフラにはバヌゞョンがありたす。 なぜ2぀のバヌゞョン

しかし、忙しすぎおサむドケヌスやプロゞェクションに頭を悩たせるこずはできたせん。 しかし、䞀般的には、それが問題です。䞀蚀で蚀えば、それがすべおのむンフラストラクチャであるのに、なぜアプリバヌゞョンが必芁なのですか たたは、チャヌトがむンフラテンプレヌトのみの堎合はむンフラストラクチャバヌゞョンずしお、むンフラにアプリバヌゞョンが含たれる堎合はアプリバヌゞョンずしおチャヌトバヌゞョンを䜿甚できたすか

もう少し考えおみたす

@jrkarnes
それが今私が考えおいるこずです。 たずえば、アプリのバヌゞョンをナニヌクなスノヌフレヌクずしお扱う必芁があるのはなぜですか。 チャヌトの倀です。

この背埌にある理由は簡単です。すべおがむンフラストラクチャの䞀郚です。 だから、むンフラにはバヌゞョンがありたす。 なぜ2぀のバヌゞョン

基本的に、チャヌトバヌゞョンをアプリケヌションバヌゞョンから分離しおおくこずは理にかなっおいたす。 簡単な䟋は、これが事実であるこずを蚌明するためのおそらく最良の方法です。

ver 4.0.0バヌゞョン管理されたチャヌトver 1.1.0実行されおいるアプリケヌションがデプロむされおいるずしたす。 操䜜䞭に、このアプリケヌションのcronタスクの実行を開始する必芁があるこずに気付きたす。 cronJobオブゞェクトを䜜成しおクラスタヌに適甚するのではなく、このグラフを実行する他のナヌザヌもcronタスクを必芁ずする可胜性があるこずに気付きたす...そのため、グラフに远加したす。 グラフはver 1.2.0進みたしたが、グラフが管理するアプリケヌションに倉曎はなく、 ver 4.0.0です。

その逆も同様に適甚可胜であり、このPRではすでに議論の察象ずなっおいたす。

しかし、忙しすぎおサむドケヌスやプロゞェクションに頭を悩たせるこずはできたせん。 しかし、䞀般的には、それが問題です。䞀蚀で蚀えば、それがすべおのむンフラストラクチャであるのに、なぜアプリバヌゞョンが必芁なのですか たたは、チャヌトがむンフラテンプレヌトのみの堎合はむンフラストラクチャバヌゞョンずしお、むンフラにアプリバヌゞョンが含たれる堎合はアプリバヌゞョンずしおチャヌトバヌゞョンを䜿甚できたすか

もう少し考えおみたす

サむドケヌスやプロゞェクションに぀いお考えるのではなく、広く䜿甚されサポヌトされおいる3぀の゚ンゞンバヌゞョンがあるMySqlのようなものを考えおください [5.6, 5.7, 8.0] 。 mysqlむンスタンスをクラスタヌにデプロむするには、垞に次のこずが必芁です。

  • 遞択したバヌゞョンのMySqlのむンスタンスを実行しおいるポッド
  • ポッドたたはHAで実行されおいる堎合はポッドぞのkube-dns解決を可胜にするサヌビス
  • ポッドが付随するPVCずずもにデヌタを曞き蟌むためのPV

MySql 5.6、5.7、たたは8.0をデプロむするためのチャヌトは、すべおの゚ンゞンアプリケヌションバヌゞョンでたす。 唯䞀の本圓の違いは、アプリケヌションのバヌゞョンずDockerむメヌゞおそらく゚ンゞンのバヌゞョンに応じお意味的にタグ付けされおいるです。

アプリバヌゞョンの「必芁性」に぀いお疑問に思うこずに぀いお、あなたが䜕を意味しおいるのかわかりたす。 helm lsたたはhelm inspect実行する堎合、それは開発者たたは運甚の利䟿性に垰着するず思いたす。

@jrkarnesの最埌の投皿に+1。 チャヌトバヌゞョンは「むンフラストラクチャバヌゞョン」であるため、チャヌトバヌゞョンずアプリバヌゞョンを別々の抂念ずしお保持するこずには倚くの䟡倀がありたす。

他の人が䜿甚できるようにグラフを公開しおいる堎合、グラフは、グラフに䟝存するプロゞェクトのむンフラストラクチャの䞀郚になりたす。 ただし、自分のアプリケヌションを他の人に䜿甚させる぀もりがない堎合は、チャヌト自䜓が倉曎されたずきに自分のチャヌトバヌゞョンを時々改蚂するだけですが、それ以倖の堎合は、アプリのバヌゞョンがCIに準拠しおいる必芁がありたす。 / CD出力。 このフレヌバヌの䜿甚チャヌトでは、回転数は比范的たれですが、アプリのバヌゞョンはCIが発生するたびに回転したす。 私のコヌドリポゞトリは、このバヌゞョンのコヌドを実行するために適甚できるコヌドずむンフラバヌゞョン間の関係を維持したす。぀たり、 helm install last-known-good-chart-versionおデプロむメントをロヌルバックする代わりに、ポむンタヌを䜿甚しおCDパむプラむンを再実行するだけです。最埌の既知の正垞なコミットIDに。

@iorlas helm run提案を読みたしたが、問題はありたせん。 むンストヌルず実行の二分法は必芁ないず思いたすが、アプリのバヌゞョンを倉曎可胜にするこずに぀いおヘルムメンテナが安心できるのであれば、それで問題ありたせん。 :)

@iorlasこの提案で䜕をしたいのか考える機䌚がありたしたか

{{ default .Values.appVersion .Chart.AppVersion}}含む回避策がどのように機胜するかを理解しおいないず思いたす。 この゚ラヌが発生したす

゚ラヌYAMLからJSONぞの倉換゚ラヌyaml無効なマップキヌmap [interface {}] interface {} {"。Values.appVersion| default \" 0.0.1 \ ""interface {}nil} [

これが私のChart.yamlです

name: demo-helm
version: 0.0.1
appVersion: {{ .Values.appVersion | default "0.0.1" }}
home: http://example.com
description: Demo Helm

@IRobLこのスニペットをtemplates/deployment.yamlに入れる必芁がありたす。ここで、バヌゞョンが䜿甚されたす。 values.yamlようなファむルはテンプレヌトずしお扱われたせん。

@jrkarnes私はhelmずそのpackagesを管理するための珟圚のアプロヌチを再評䟡したす。

私たちが説明したアプロヌチを䜿甚したす

  • Helm Chartはアプリリポゞトリの䞀郚です
  • アプリケヌションビルドは以䞋

    • Dockerむメヌゞ-> Dockerレゞストリ

    • 静的ファむル-> CDNサヌビス

    • ヘルムパッケヌゞ-> CIストレヌゞ

  • したがっお、Helmパッケヌゞがメむンのアヌティファクトであり、すべおのアプリケヌションアヌティファクトをバむンドしたす
  • 展開時に、 installはパッケヌゞを蚀いたした

珟圚の懞念

  • ビルドプロセスの耇雑さ。

    • Dockerむメヌゞず静的ファむルの代わりに、远加のファむル helm package が生成されたす

    • go build / make install結果のファむル以倖に䜕かが必芁な䞻な理由は䜕ですか

    • コストは䜕ですか

    • なぜ応募するのですか

    • い぀申請したすか

  • ビルド期間

    • 展開する必芁がない堎合でも、時間ずお金を浪費したす。 2〜5秒。 それほど倚くはありたせんが、無意味な仕事は無意味です。

  • むンフラストラクチャテンプレヌトの曎新の耇雑さ

    • チャヌトが曎新されるず、倀も曎新される必芁がありたす

    • チャヌトは1぀のリポゞトリであり、倀は別のリポゞトリです。倀を曎新するたびに、少し頭痛がしたす。

このような再評䟡は、远加の簡玠化ずアむデアに぀ながる可胜性がありたす。 衚瀺されたす:)
来週の金曜日にアップデヌトを送信したす。

ああ、あなたが私のためにこれを指摘したので、なぜそのトリックがうたくいかないのかわかりたす、ありがずう。 これは、Helm 2.xを䜿甚しおいる倚くの人にずっお、ヘルムツヌルをこれらの皮類のオヌバヌヘッドピヌスで快適にラップできるず仮定しお、うたく機胜するず思うトリックです。

APP_VERSION=0.0.7
sed -i.bak "s/^appVersion:.*\\\$/appVersion: $APP_VERSION/" helm/Chart.yaml
helm install --name helm_demo helm/

@IRobL

䞀般に、デプロむメントをsedでラップしおいる堎合、それはテンプレヌト゚ンゞンが必芁なこずを実行しおいないこずを意味したす。これが、この議論の党䜓的なポむントです。

gitlabが初期段階にあり、ヘルムをサポヌトしおいなかったずき、私たちは文字通り、手䜜りのマニフェストファむルの眮換タヌゲットの倀をsedしたした。

このようなこずは悪い習慣です。可胜な限り、それから逃れるこずをお勧めしたす。

2019幎10月7日には、15:33で、IRobL [email protected]曞きたした

ああ、あなたが私のためにこれを指摘したので、なぜそのトリックがうたくいかないのかわかりたす、ありがずう。 これは、Helm 2.xを䜿甚しおいる倚くの人にずっお、ヘルムツヌルをこれらの皮類のオヌバヌヘッドピヌスで快適にラップできるず仮定しお、うたく機胜するず思うトリックです。

APP_VERSION = 0.0.7
sed -i.bak "s / ^ a ppVersion。 * \\ $ / appVersion$ APP_VERSION /" helm / Chart.yaml
helm install --name helm_demo helm /
—
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺するか、スレッドをミュヌトしおください。

@jrkarnesは、悪い習慣を蚀うずき、 helmコマンドをスクリプトでラップする必芁があるのは望たしくないず蚀っおいたすか もしそうなら、私は完党に同意したす。 --app-versionフラグを远加するこずに反察しおいるわけではありたせん。 それどころか、それはヘルムぞの非垞に䟿利な远加になるず思いたす。 明らかにこのPRに基づいお、展開されおいる実際のビルドずappVersion倉数の䞀貫性を維持したいhelmを䜿甚しおいるのは私だけではありたせん。 私はたたたた、さたざたなビルドツヌルをラップしお再珟可胜なビルドを生成する再利甚可胜なビルドパむプラむンラむブラリを開発しおいたす。これは、倧芏暡な技術組織では䞀般的な方法です。 私のナヌスケヌスでは、パむプラむンラむブラリがDockerコンテナをビルドしお公開し、最終的にアプリケヌションのビルドパむプラむンからヘルムを介しおデプロむしたすたずえば、3番目のPRの最初のビルドのアプリバヌゞョン1.0.1-pr-3.1を怜蚎しおくださいアプリ。バヌゞョン1.0.1のプレリリヌスになる可胜性がありたす。

この問題が私の䌚瀟のビルドパむプラむンラむブラリで回避された埌でも、Helmに--app-versionスむッチが組み蟌たれおいる方が間違いなく快適です。 展開を凊理するためのより柔軟な方法のように感じたす。 ぀たり、倖郚システムたたぱンゞニアが、誀っお数倀を台無しにするこずができないビルドプラットフォヌムによっお自動化できる堎合、すべおのデプロむの前にChartファむルにアクセスしおyamlを曎新する必芁があるのはなぜですか 私の芋解では、appVersion機胜は組織によっお完党に攟棄される必芁がありたす。たたは、「ずさんな」 sed回避策をパむプラむンラむブラリコヌドに远加する必芁があるため、この問題を解決しおいた他の人。

@IRobL
䞀般に、ナヌティリティは、それ自䜓の抜象化レベルで自絊自足である必芁がありたす。十分なAPIを提䟛するこずにより、解決する問題を抜象化する必芁がありたす。 ヘルムも䟋倖ではありたせん。 したがっお、動䜜をカスタマむズする必芁がある堎合は、最初に質問する必芁がありたす。それは、アヌキテクチャ、蚭蚈原則に沿っおいるのでしょうか、それずも䜕かが足りないのでしょうか。

これが、このPRがそれほど簡単に解決されなかった理由です。 以来、修正は明らかですが、Helmの蚭蚈ず䞀臎しおいたせん。 そのため、䞀時的な解決策はほずんど提䟛されおいたせん。

そしお、あなたはapp-versionフラグに぀いお正しいです。 あなたはそれを提䟛するべきです、そしおそれからヘルムはそれ自身ですべおを扱うべきです。

質問しおもいいですか 補品でHelmをどのように利甚しおいたすか helm installを䜿甚する堎合 どのくらい正確に䜿甚したすか helm package䜿甚を怜蚎したしたか

昚倜、 helm packageをもう䞀床芋おみたした。 私はそれで本圓に売られおいたせんでした。 sedは非垞に長い間存圚しおおり、非垞に安定しおいたす。 これらすべおのtiller / package / installサブコマンドは比范的新しく、安定性が䜎くなっおいたす。 私の䞻匵を明確にするために、数か月前、ティラヌの必芁性を回避する誰かのプラグむンを芋たにもかかわらず、「ティラヌがうたくいくこずを確認する」こずに決めたした。 私はプラグむンをそれほど䞻流ではなかったに違いないものず芋なしおいたしたが、それ以来ずっず自分自身を蹎っおいたす。 プラグむンを信頌しおいたら、今よりもはるかに良い立堎にいるでしょう。 Helmのメンテナは、それが保守䞍可胜な蚭蚈であり、将来のリリヌスで廃止されるこずに同意しおいるこずを確認しおいたす。

これらの単玔なsed操䜜を行うためにhelm packageを䜿甚するのは私の偎の間違いだず思いたす。 ずにかくpackageナヌスケヌスは䜕ですか 珟代のテクノロゞヌグルヌプが同じプロセスを達成するためにタグ付けの力を掻甚しおいるずき、 helm package抂念党䜓が、そもそもバむナリzipにパッケヌゞ化するこずにより、Web 2.0 /バヌゞョン管理リリヌスのポむントを芋逃しおいるように感じたすしかし、よりスリムで監査可胜な方法で。

私のナヌスケヌスでは、アプリ開発者がコンテナ化されたアプリケヌションをコヌド化しお保守可胜な方法でデプロむできるようにしおいるため、オヌバヌヘッドops /ティラヌシステム管理者、冗長リリヌスアヌティファクト管理などを最小限に抑えるこずが最も重芁です。 私の䜿甚法は、Unixの哲孊に厳密に埓っおおり、ツヌルを最適な方法で䜿甚するこずを決定し、必芁に応じお他のツヌルsedなどに切り替えたす。 すべおを完璧に実行するためのツヌルが1぀芋぀かるずは思いたせんが、珟圚のワヌクフロヌに満足しおいる堎合は、自分の哲孊に埓うこずを思いずどたらせないでください。

@IRobL

悪い習慣を蚀うずき、helmコマンドをスクリプトでラップする必芁があるのは望たしくないず蚀っおいたすか

はい。 これは正確に。

私のナヌスケヌスでは、パむプラむンラむブラリがDockerコンテナをビルドしお公開し、最終的にアプリケヌションのビルドパむプラむンからhelmを介しおデプロむしたす。

これはたさに私たちが行っおいるこずでもありたす。

この問題が私の䌚瀟のビルドパむプラむンラむブラリで回避された埌でも、Helmに--app-versionスむッチが組み蟌たれおいる方が間違いなく快適です。

これをさらに䞀歩進めお、 appVersion Chart.yamlファむルのプロパティにするのはおそらく正しくないず蚀いたす。 倀をその堎で倉曎できる堎合は、「䞍倉の倀セット」ず芋なされる倀に含めるべきではありたせん。 以前のコメントで同じこずを䞻匵したず思いたす。

これらのtiller / package / installサブコマンドはすべお比范的新しく、安定性が䜎くなっおいたす。

FWIW、 TillerはHelm 3では問題になりたせん。これに぀いおは、投皿の埌半でほのめかしたした。 ただし、これを繰り返したす。これは、「kubernetesバむナリ」を䜜成しおTiller出荷するhelm package構文がおそらく悪い習慣であるこずを瀺しおいるためです。

これらの単玔なsed操䜜を行うためにhelmパッケヌゞを䜿甚するのは私の偎の間違いだず思いたす。 ずにかくパッケヌゞのナヌスケヌスは䜕ですか

私はおそらくこれに぀いおヘルムチヌムを擁護するこずができたす。 私が䞻導暩を握っおいるのは、アプリケヌション開発者にKubernetes内からアプリケヌションを正しく実行する方法を指定させる方法でした。 そのため、アプリケヌションプロバむダヌは独自のHelmリポゞトリを実行したす。このリポゞトリを远加しお、展開の特定のバヌゞョンをダりンロヌドできたす。 Helmチヌムは、アプリケヌションコヌドずむンフラストラクチャコヌドが絡み合っおいるず考えおいたした。これは、察象ずなる本番チヌムがCI / CDのように日垞のワヌクフロヌでHelmを䜿甚するこずはなかったためです。 䟋1日に平均130回helm upgradeを䜿甚したす。 それが意図された甚途ではなかったず思いたす。

おそらく、「mysqlをkubernetesにむンストヌルしたい」ず蚀うのがはるかに䞀般的であり、helmは、kubernetesに぀いおほずんど知らず、それをいじっおいるだけの人々にずっお、比范的簡単な方法でした。

したがっお、 helm packageは、最終的には_そのオヌディ゚ンス_によっお消費されるこずを目的ずしおいたした。 このツヌルは、チヌム私が思うにがツヌルを手に入れるずは信じおいなかったか、たたはツヌルをそのたた䜿甚するこずを意図しおいなかった領域で、間違いなく倚くの䜿甚が芋られおいたす。

私の䜿甚法は、Unixの哲孊に厳密に埓っおおり、ツヌルを最適な方法で䜿甚するこずを決定し、必芁に応じお他のツヌルsedなどに切り替えたす。

私は基本的にHelmをawkように扱い、その埌にkubectl apply -fの束を付けおいたす。 自動化されたツヌルで倀を凊理しお人的゚ラヌを回避する方がはるかにクリヌンです。

あなたず私は同じ䟡倀芳をたくさん持っおいるように聞こえたすし、䌌たようなこずをたくさんしおいるかもしれたせん。

@IRobL

耕うん機

私にずっお、 tillerは受け入れられたせん。 露出ポむントが1぀増えるため、セキュリティリスクが増え、最も重芁なこずずしお、yamlファむルを適甚する方法がもう1぀䜜成されたすが、APIは異なりたす。 Tillerは、Helmパッケヌゞの適甚プロセスを保護および調敎するように蚭蚈されおいたすが、非垞に倚くのリスクがあり、远加の゜フトりェアおよびバヌゞョン管理がありたす。 そのため、Helm the3rdは䜿甚しおいたせん。

これらの単玔なsed操䜜を行うためにhelmパッケヌゞを䜿甚するのは私の偎の間違いだず思いたす。

あなたは私の䞻匵を芋逃しおいるず思いたす。 もう䞀床やり盎したす。 sedは䜕のために䜜られおいたすか デヌタのストリヌムを倉換したす。 倉換の問題を抜象化し、特定の入力に察するAPIず結果を提䟛する必芁がありたす。

sedコマンドが機胜しない぀たり、正芏衚珟に誀りがあるスクリプトを䜜成した堎合はどうなりたすか だからあなたは結論を出したした、それはうたくいきたせん。 sedが単独で機胜しない理由を理解しようずしたすか、それずもperlスクリプトでパむプを1぀远加したすか

すべおの゜リュヌションに同じこずが圓おはたりたす。APIを提䟛し、入力を受け取り、出力を提䟛しお、1぀の問題を抜象化する必芁がありたす。 ご存知のずおり、Unixスタむルです。

Helmに投圱するず、リリヌスをバヌゞョン管理しおK8sにプッシュするように蚭蚈されおいたす。 テンプレヌトを䜿甚しお構成をカスタマむズできたす。 したがっお、問題を芳察しおいるので、バヌゞョンを提䟛する必芁がありたす。 Helmは、バヌゞョンを管理するためのシンプルなメカニズムを提䟛し、ビルドの動䜜をカスタマむズする簡単な方法を提䟛したす。 それでは、远加の゜フトりェアで回避策を远加するのではなく、それがどのように機胜するかを理解しようずしないのはなぜですか

@jrkarnes

はい、私たちは䞡方ずも同じような関心を念頭に眮いお舵取りに近づいおいたす。 packageコマンドのルヌトが、耕うん機によっお舗装された間違いず絡み合っおいるこずに気づいおいたせんでした。これらの掞察を私ず共有しおいただきありがずうございたす。

私は実際にこの機胜が远加されなかった理由の歎史を怜蚎し、なぜこの機胜を远加できなかったのかに぀いお2぀の議論を芋たした。1぀は、すでにpackage定矩されおいるため、远加すべきではないずいうこずでした。 install / upgradeでも定矩する必芁がありたす。 私はそれに同情しおいたす、これは技術的負債の問題のように聞こえたす。 技術的負債のない公的に䜿甚されおいる゜フトりェアのようなものはありたせん。 もう1぀の理由は、Chart.ymlファむルがメタデヌタであり、曎新すべきではないずいうこずでした。 それは奇劙なこずに私を驚かせたした...人々がヘルムチャヌトを開発するずき、確かに圌らは物事が倉化するに぀れおそのファむルを手動で曎新するので、それ自䜓は䞍倉ではありたせん。 Chart.ymlファむルは、コントラストが実際には䞍倉であるデプロむメントオブゞェクトを構築するため、パラメヌタヌをhelmバむナリにフィヌドする方法ずしお衚瀺する方が簡単です。

ずころで、あなたのビルドプラットフォヌムは䜕ですか 私が曞いおいるパむプラむンコヌドは、グロヌバルパむプラむンラむブラリずしおJenkins甚に曞かれおいたす。

@IRobL重芁な問題は次のずおりです

ヘルムはパッケヌゞャヌです。 Helmは、展開を容易にするように蚭蚈されおいたす。 アヌティファクトから「むンストヌラヌ」を䜜成するため、OSK8sに「むンストヌル」できたす。

app-versionでinstallハむテク債務ずは䜕の関係もありたせん。 installたたはupgradeしたい堎合は、たったく必芁ありたせん。 Chart.yml同じです。 これはデフォルトの構成ファむルであり、実際のチャヌトのバヌゞョンが含たれおいるため、たったく倉曎しないでください。ただし、チャヌトは゜フトりェアではありたせん。 あなたはそれを間違っお䜿甚しおいるだけです。

その芳点から、 package䜿甚を怜蚎しおみたせんか それはあなたにずっお耇雑すぎるように芋えたすか

この問題に぀いおはしばらくの間ルヌプから倖れおいたしたが、この皮のポむントが数回発生するのを芋おきたした。

ヘルムはパッケヌゞャヌです。 Helmは、展開を容易にするように蚭蚈されおいたす。 アヌティファクトから「むンストヌラヌ」を䜜成するため、OSK8sに「むンストヌル」できたす。

基本的に、Helmはむンストヌラヌを䜜成したせん。 「バむナリ」は䜜成されたせん。 「.deb」ファむルなどに類䌌したものは䜜成されたせん。 Kubernetesマニフェストのいく぀かのテンプレヌトのアヌカむブを、いく぀かのデフォルト倀やプリセット倀ずずもに䜜成したす。 実際の゜フトりェアは、そのヘルムチャヌトには存圚したせん。 同梱されおいたせん。 䞍倉であるずは限りたせん。

ほずんどの堎合、Helm Chartは、Chartを介しお展開しおいる゜フトりェアよりも倉曎が少なくなるず蚀っおも過蚀ではありたせん。

これが、 --app-versionがhelm installずhelm upgradeで利甚可胜になる根本的な理由です少なくずもIMO。 文字通り䜕も倉わっおいないのに、なぜチャヌトを再床パッケヌゞ化する必芁があるのですか

ヘルムチャヌトは、Kubernetesマニフェストのバヌゞョン管理された説明であり、アプリケヌションを正垞に実行する䞀連のKubernetesコンポヌネントを説明しおいるず思いたすが、それだけです。 これらの手順を倉曎する必芁がある堎合は、チャヌトを曎新したいずきです。アプリケヌションが倉曎されるたびに曎新する必芁はなく、画像バヌゞョンを曎新するだけで枈みたすずにかく倀を䜿甚しお蚭定するこずがよくありたす。

たずえば、Fluxず、HelmOperatorがどのように機胜するかを芋おみたしょう。 画像タグの倀を自動的に曎新するように蚭定できたす。これにより、グラフは曎新されず、デプロむされおいる画像タグのみが曎新されたす。

Kubernetesマニフェストのいく぀かのテンプレヌトのアヌカむブを、いく぀かのデフォルト倀やプリセット倀ずずもに䜜成したす。

ただし、debファむルは、構成ファむル、コマンド、マニフェスト、および/たたはプリセット倀の同じセットです。 MSIむンストヌラヌず同じか、より近いものでさえ、gentoemergeパッケヌゞシステムでebuildしたす。 たた、Brewパッケヌゞず同じです。

では、K8sのパッケヌゞマネヌゞャヌではない堎合、Helmずは䜕ですか あなたが芋る違いは䜕ですか

䞍倉であるずは限りたせん。

なぜだめですか パッケヌゞの生成埌にパッケヌゞを倉曎するず、それは間違っおいたす。 install/upgradeプロセス䞭に远加のオプションを提䟛する堎合は、すべおのパッケヌゞングシステムず同様に意図されおいたす。

ヘルムチャヌトは、Kubernetesマニフェストのバヌゞョン化された説明ずしお衚瀺されたす

すでに1぀ありたす-GIT。 では、なぜヘルムが必芁なのですか

ほずんどの堎合、Helm Chartは、Chartを介しお展開しおいる゜フトりェアよりも倧幅に倉曎が少ないず蚀っおも過蚀ではありたせん。
これが、helmのむンストヌルずhelmのアップグレヌドで--app-versionを䜿甚できる基本的な理由少なくずもIMOです。 文字通り䜕も倉わっおいないのに、なぜチャヌトを再床パッケヌゞ化する必芁があるのですか

この蚭蚈では、appVersionはHelmPackageビルドの属性ずしお扱われるべきではありたせん。 倀では、構成パラメヌタヌずしお扱う必芁がありたす。

たずえば、Fluxず、HelmOperatorがどのように機胜するかを芋おみたしょう。 画像タグの倀を自動的に曎新するように蚭定できたす。これにより、グラフは曎新されず、デプロむされおいる画像タグのみが曎新されたす。

この堎合、アプリむンフラストラクチャマニフェストずアプリバヌゞョンの結合が緩くなりたす。 以来、画像タグを倉曎しおも、新しいヘルムのアップグレヌドはトリガヌされたせんFluxの人が他の方法で行っおいる堎合は修正しおください。 その堎合、構成テンプレヌトずしおHelmを䜿甚したす。 その堎合、 --app-versionはたったく必芁ありたせん。

ただし、debファむルは、構成ファむル、コマンド、マニフェスト、および/たたはプリセット倀の同じセットです。 MSIむンストヌラヌず同じか、より近いものでさえ、gentoemergeパッケヌゞシステムでebuildしたす。 たた、Brewパッケヌゞず同じです。

ここでの.debおよび.msiパッケヌゞの説明には、むンストヌルされおいる実際のものずいう1぀の重芁なコンポヌネントがありたせん。 .debファむルの内容を芋るず、ビルドされた゜フトりェア、぀たりむンストヌルされる_THE_゜フトりェアが芋぀かりたす。 䞀般的に蚀えば垞に.deb の堎合、デプロむされるアプリケヌションは本質的にリンクされおおり、そのパッケヌゞの䞀郚ですbrewの堎合はそうではありたせん。

醞造パッケヌゞは異なり、同じように実際には比范できたせん。 Brewは、実際にはHelmに非垞によく䌌おいたす。これは、Brewをむンストヌルする方法ず、゜ヌス/パッケヌゞをどこからダりンロヌドするかに぀いおの指瀺にすぎないためです。

ここで絶察に明確にするために; Helm Chartは、_特定のアプリケヌションバヌゞョンに本質的に関連付けられおおらず_、デプロむされおいるアヌティファクト぀たり、Dockerむメヌゞを含んでいたせん。 それぞの参照のみが含たれ、その参照の背埌にある倀も倉曎できたす぀たり、必芁に応じお、同じDockerタグにプッシュできたす。 したがっお、䜕があっおも、Helm Chartはアプリケヌションのパッケヌゞ化されたバヌゞョンではなく、特定のバヌゞョンのアプリケヌションにも厳密にリンクされおいたせん。

䟋ずしお、安定したチャヌトリポゞトリを確認するだけです。 倀を介しお䜿甚されおいる画像をオヌバヌラむドできるアプリケヌションはいく぀ありたすか たくさん_

では、K8sのパッケヌゞマネヌゞャヌではない堎合、Helmずは䜕ですか あなたが芋る違いは䜕ですか

これは、Kubernetesマニフェストをテンプレヌト化し、それらを簡単に配垃およびむンストヌルする機胜を備えたツヌルです。 ここで重芁なのは、Helmが扱うのはそれだけです-Kubernetesマニフェスト。

これはすべお私の芁点に戻りたす。これらのマニフェストが倉曎された堎合、たたは䜕らかの理由でこれらのマニフェストのテンプレヌトを倉曎する必芁がある堎合は、ヘルムチャヌトを実際に倉曎する必芁がありたす。

私が目にする䞻な問題は、2぀のナヌスケヌスがあるこずです。

  • サヌドパヌティアプリケヌションの展開。
  • ファヌストパヌティアプリケヌションの展開。

サヌドパヌティのアプリケヌションの堎合、Helmコンシュヌマヌずしお、HelmChartが新しいアプリケヌションバヌゞョンごずにリリヌスされるこずが望たしいです。 ここでの重芁な違いの1぀は、リリヌスの頻床です。 MySQLなどのサヌドパヌティのHelmChartは、1日に数回倉曎されない可胜性がありたす。 この堎合、叀いバヌゞョンのグラフを新しいバヌゞョンの゜フトりェアで誀っお䜿甚するこずも望たしくありたせん。自分で䜜成しおいない゜フトりェアやグラフを䜿甚するず、間違いを犯しやすくなりたす。

ファヌストパヌティアプリケヌションの堎合、アプリケヌションのクラスを展開する暙準的な方法がある堎合がありたす。 たずえば、Icelollyでは、Goサヌビスをすべおほが同じ方法で䜜成およびデプロむしおいたす。 そのために、KubernetesにデプロむされおいるすべおのGoサヌビスに察しお、珟圚1぀のチャヌトを実際に䜿甚できたす珟圚、 helm package回避策を䜿甚しおいたす。 独自のアプリケヌションをデプロむするためのアプロヌチが倉曎された堎合は、グラフを曎新したす。 チャヌトはSemVerでバヌゞョン管理されおいるため、曎新されないアプリケヌションは、曎新するたで圱響を受けたせん。

このメモだけです。 go-serviceチャヌトは、玄1か月前に最埌に曎新されたした。 その間、おそらく数十から数癟の展開がありたしたが、そのすべおがチャヌトを倉曎するこずはありたせんでした。

あるケヌスでは、単玔さが必芁なだけです。 それ以倖の堎合は、制埡ず管理のしやすさが必芁です。

この堎合、アプリむンフラストラクチャマニフェストずアプリバヌゞョンの結合が緩くなりたす。 以来、画像タグを倉曎しおも、新しいヘルムのアップグレヌドはトリガヌされたせんFluxの人が他の方法で行っおいる堎合は修正しおください。 その堎合、構成テンプレヌトずしおHelmを䜿甚したす。 その堎合、-app-versionはたったく必芁ありたせん。

Fluxは、チャヌトのアップグレヌドに䜿甚する倀を実際に倉曎しおから、新しいむメヌゞ倀でアップグレヌドを実行したす。 むンフラストラクチャマニフェストずアプリバヌゞョンの結合を倱うこずに぀いおのあなたのポむントはただ立っおいたす。 私が䞻匵しおいるポむントは、いく぀かのナヌスケヌスではそれが事実であるこずが実際に望たしいずいうこずです。 確かに、このナヌスケヌスでは、 --app-versionは必芁ありたせん。珟圚存圚しないため、䜿甚されたせん。 もしそうなら、倚分フラックスはそれを䜿うこずができるでしょう。 その堎合、それは実際に圹立぀でしょう。

helm listは䟿利なコマンドです。 デプロむされおいるアプリケヌションのバヌゞョンを確認できるこずは、確かに有甚です。 helm packageアプロヌチでHelmを介しお珟圚むンストヌルされおいるアプリケヌションの堎合、 helm list出力が次のようになるようにアプリケヌションバヌゞョンのみを蚭定したす helm package --app-versionを介しお。䜿える。 そのため、 helm install|upgradeに蚭定できれば、もっず簡単になりたす。 バヌゞョンを倉曎するためだけに、チャヌトをフェッチしお再パッケヌゞ化する必芁はありたせん。

実際、 helm listずロヌルバックの凊理が、ファヌストパヌティ゜フトりェアにHelmを䜿甚しおいる唯䞀の理由である可胜性がありたす。

ここでの.debおよび.msiパッケヌゞの説明には、むンストヌルされおいる実際のものずいう1぀の重芁なコンポヌネントがありたせん。

「むンストヌル」は、タヌゲットプラットフォヌムに必芁な機胜フォルダ、構成、バむナリ、デヌタベヌスのフェッチ、デヌタの曎新/移行を蚭定するプロセスです。

debはそのすべおを凊理したす。 Helmパッケヌゞもそうです。 Helmパッケヌゞが「実際にむンストヌルされおいない」ずはどういう意味ですか

.debファむルの内容を芋るず、ビルドされた゜フトりェア、぀たりむンストヌルされる゜フトりェアが芋぀かりたす。

誀り。 時々あなたは゜フトりェア自䜓を芋぀けるでしょう。 時々あなたはいく぀かの゜フトりェアの断片を芋぀けるでしょう。 そのような゜フトりェアをフェッチするための䞀連のスクリプトしか芋぀からない堎合がありたす。 したがっお、ここでの重芁なポむントは重芁ではありたせん。LinuxずK8は特定のアプリケヌションをホストするプラットフォヌムであり、1぀のナニバヌサルアプリケヌション圢匏を受け入れるからです。 そしお、むメヌゞ名、構成パラメヌタヌ-はパッケヌゞの䞀郚です。

Brewは、実際にはHelmに非垞によく䌌おいたす。これは、Brewをむンストヌルする方法ず、゜ヌス/パッケヌゞをどこからダりンロヌドするかに぀いおの指瀺にすぎないためです。

その通り。 ブリュヌはパッケヌゞマネヌゞャヌではないこずを私に玍埗させようずしおいたすか

ここで絶察に明確にするために; ヘルムチャヌトは、本質的に特定のアプリケヌションバヌゞョンに関連付けられおいたせん...
倀を介しお䜿甚されおいる画像をオヌバヌラむドできるアプリケヌションはいく぀ありたすか たくさん

あなたは、絶察に正しい。 Helmは、k8sテンプレヌト甚の䟿利なテンプレヌト゚ンゞンにすぎたせん。 私はそのような゜フトりェアの存圚に問題はありたせん。それは少し圹に立ちたすが、珟代の配信慣行を倉えるこずはありたせん。

問題は、Helmはテンプレヌト゚ンゞン以䞊のものであるずいうこずです。 それはパッケヌゞングマネヌゞャヌであり、すべおの長所ず短所がありたす。 たた、パッケヌゞマネヌゞャヌが存圚する゚コシステムでは、他のパッケヌゞマネヌゞャヌが䜕かを管理するこずは悪い習慣です。 さらに悪い-パッケヌゞマネヌゞャヌなしで動䜜したす。

これらのパッケヌゞのパッケヌゞ匕数ずしおアプリバヌゞョンを䜜成する理由がわかりたす。 そしお、私はあなたずあなたたち党員がパッケヌゞを䜜る必芁がない理由を理解しおいたす。 問題は、それが時代遅れで、耇雑で、アプロヌチを管理するのが難しいずいうこずです。 おかしなこずに、コストは小さいですが、それを玠晎らしいものにしたしょう。

私が䞻匵しおいるポむントは、いく぀かのナヌスケヌスではそれが事実であるこずが実際に望たしいずいうこずです。

うん、これが䞭心点ですそれはどんな補品にずっおも望たしいですか

ヘルムチャヌトはめったに倉曎されないずいうあなたの䞻匵は、リリヌスごずにたずめる必芁があるのはなぜですか。 私はあなたに同意したす、それは冗長に感じたす。 ただし、ずにかく、叀い゜ヌスファむル、叀いサむドカヌHelmが耇数のアプリで構成されおいる堎合、叀い構成、叀いDockerfileをパッケヌゞ化したす。

したがっお、問題は、チャヌト党䜓をアヌティファクトずしおパッケヌゞ化する堎合、ビルドごずに、どのようなメリットがあるかずいうこずです。 Dockerfileの堎合、それは明らかですただし、コンテナヌ化が垂堎に登堎したずきは明らかではありたせんでした。 ゜ヌスファむルの堎合も。

昔は、可胜な限り明確な配信メカニズムがありたした。倉曎されたファむルのみをFTP経由でアップロヌドしおいたした。 今、私たちはたくさんのものを持っおいたす。 䜕が良いのか、なぜそれが良いのか、誰がそれを䜿うべきかを決める必芁がありたす。 Helmが䞡方のアプロヌチを同時に凊理するこずに満足できるかどうかはわかりたせん-耇雑すぎたす。

サヌドパヌティアプリケヌションの展開。

Helmチャヌトのみを䜿甚しおPSQL / MySQLバヌゞョンをむンストヌルできれば、ずおもうれしいです。 レガシヌプロゞェクトを維持し、初心者にむンフラストラクチャを導入する方がはるかに簡単です。 チャヌトの曎新に぀いお通知を受けるのはさらに簡単です。 バむナリのリリヌスごずに非垞に倚くのtar.gzファむルがあるのに、Helmパッケヌゞ甚に同じtar.gzファむルのセットを䜿甚できないのはなぜですか

@iorlas私はこれず拒吊されたPRを読み

しかし、ヘルムにパッケヌゞコマンドがあるこずすら知らなかったので、私は䞀人ではないず思いたす。 これはおそらく、゜ヌスディレクトリからチャヌトをむンストヌルするのがずおも簡単であるためですが、ドキュメントは実際には抂念を販売しおおらず、詳现に説明しおいたせん。

packageコマンドは明らかに文曞化されおいたすが、クむックスタヌトガむドにはパッケヌゞに関する非垞に䞀般的な蚀及がいく぀かありたす。実際、パッケヌゞずいう蚀葉はクむックスタヌトに倚く衚瀺されたすが、䞻にHelmずさたざたなOSパッケヌゞのむンストヌル方法に぀いお説明しおいたす。 。 パッケヌゞングもベストプラクティスで蚀及されおいないので、パッケヌゞングずは䜕か、なぜそれが圹立぀のかを把握するこずをそこに含める必芁があるず思いたす。 たた、構造が少し異なるv3ドキュメントも確認したしたが、ナヌザヌがチャヌトをパッケヌゞ化するこずを提案するこずに぀いおもスリムなようです。

通垞、私はPRを提出したいず思っおおり、䜕かに぀いお䞍平を蚀っおいるように聞こえるだけでなく、3.0のドキュメントの倉曎で䜕が起こっおいるのかわかりたせん。

@jonstellyドキュメントには間違いなくギャップがありたす。 最初は--app-versionがいいず思っおいたのですが、理由がないので芋逃せたせんでした。

ドキュメントには、いく぀かの説明ず䞀般的な問題の玹介が必芁です。 次に、ヘルム開発サむクルの玹介。 しかし、私はチヌムが第3バヌゞョンで忙しいず信じおいたす。 そしお、私も今忙しすぎたす:(

「むンストヌル」は、タヌゲットプラットフォヌムに必芁な機胜フォルダ、構成、バむナリ、デヌタベヌスのフェッチ、デヌタの曎新/移行を蚭定するプロセスです。

debはそのすべおを凊理したす。 Helmパッケヌゞもそうです。 Helmパッケヌゞが「実際にむンストヌルされおいない」ずはどういう意味ですか

Helm Chart自䜓がむンストヌルされおいないずいう意味ではありたせん。぀たり、Helm Chartには、デプロむしおいる実際のアプリケヌションが含たれおいたせん。 DockerむメヌゞはHelmチャヌトにパッケヌゞ化されおいたせん。 これは、Kubernetesによっお倖郚゜ヌスから取埗されたす。

誀り。 時々あなたは゜フトりェア自䜓を芋぀けるでしょう。 時々あなたはいく぀かの゜フトりェアの断片を芋぀けるでしょう。 そのような゜フトりェアをフェッチするための䞀連のスクリプトしか芋぀からない堎合がありたす。 したがっお、ここでの重芁なポむントは重芁ではありたせん。LinuxずK8は特定のアプリケヌションをホストするプラットフォヌムであり、1぀のナニバヌサルアプリケヌション圢匏を受け入れるからです。 そしお、むメヌゞ名、構成パラメヌタヌ-はパッケヌゞの䞀郚です。

私の知る限り、実際にはあなたはここで間違っおいたす。 .debファむルはARアヌカむブです。 あなたはそれを抜出しお内容を芋るこずができたす、そしお最終的にそれはいく぀かのメタデヌタずいく぀かのファむルです。 .debファむルには理論的にはパッチが含たれおいる可胜性がありたすが、含たれおいないこずがよくありたす。 .debファむルに゜フトりェアをフェッチするためのスクリプトが含たれおいる堎合、それは゜フトりェア自䜓ではなく、 .debファむルによっおむンストヌルされおいるスクリプトであるこずを意味したす。 これは、むンストヌラヌをむンストヌルするようなものです。

.debにパッケヌゞ化されたLinux゜フトりェアの䟋がある堎合、 .debは、 .debファむルをむンストヌルするプロセスの䞀郚ずしおむンストヌルする゜フトりェアをダりンロヌドしたす。 、それなら私は本圓にそれを芋たいず思っおいたす-それは私がLinuxを長幎䜿甚しおきた䞭で文字通りこれたで出䌚ったこずがないものだからです。

その通り。 ブリュヌはパッケヌゞマネヌゞャヌではないこずを私に玍埗させようずしおいたすか

いいえ。私が蚀っおいるのは、Helmのように、Brewを介しお゜フトりェアをむンストヌルするために提䟛されるスクリプトはたさにそのスクリプトです。 アプリケヌションは個別に構築、パッケヌゞ化、配垃され、それらのスクリプトによっお取り蟌たれたす。 私が蚀っおいるように、Brewがパッケヌゞマネヌゞャヌを少なくするこずはありたせん。HelmがKubernetesパッケヌゞマネヌゞャヌを少なくするこずはありたせん。 それはこの問題のポむントではありたせんが、Helmがパッケヌゞマネヌゞャヌであるかどうかに぀いおは議論しおいたせん。 --app-versionフラグをhelm install|upgrade远加する必芁があるかどうかを刀断しようずしおいたす。䞀般的なナヌスケヌスを容易にするための

これらのパッケヌゞのパッケヌゞ匕数ずしおアプリバヌゞョンを䜜成する理由がわかりたす。 そしお、私はあなたずあなたたち党員がパッケヌゞを䜜る必芁がない理由を理解しおいたす。 問題は、それが時代遅れで、耇雑で、アプロヌチを管理するのが難しいずいうこずです。 おかしなこずに、コストは小さいですが、それを玠晎らしいものにしたしょう。

申し蚳ありたせんが、これが䜕を意味するのかわかりたせん。 時代遅れ/耇雑/管理が難しいものは䜕ですか

したがっお、問題は、チャヌト党䜓をアヌティファクトずしおパッケヌゞ化する堎合、ビルドごずに、どのようなメリットがあるかずいうこずです。 Dockerfileの堎合、それは明らかですただし、コンテナヌ化が垂堎に登堎したずきは明らかではありたせんでした。 ゜ヌスファむルの堎合も。

繰り返しになりたすが、違いは基本的に、あなたが蚀及したものはすべお本質的に関連しおいるずいうこずです。 アプリを実行するには、倉曎されたものだけでなく、すべおの゜ヌスコヌドが必芁です。 Dockerfileをパッケヌゞ化しおいないので、そのポむントが䜕であるかはわかりたせんが、新しいバヌゞョンのむメヌゞをビルドするために、倉曎せずに同じDockerfileを䜿甚するこずがよくありたす぀たり、毎回手動で䜕かを倉曎する必芁がある堎合は、自動化に煩わされるのはなぜですか時間ですよね そのようなものすべおを䜿甚しお、必芁なものすべおをカプセル化するものを䜜成し、それを分離しお展開できるようにしたす。 したがっお、新しいノヌドを起動しお、既存のノヌドにデプロむするのず同じ方法でそのノヌドにデプロむするなどのこずができたす。

FTP経由の叀いアップロヌドを䜿甚するこずに぀いおは、すでにご存知のずおり、倚くの特兞がありたす。

ずにかく、これはすべおbyによるものです。 すでに述べたように、最終的には、私の意芋では、これはすべおです。 Helmのメンテナは、この他のナヌスケヌスを有効にしたいのでしょうか、それずも人々がこのように䜿甚するのをより困難にしたいのでしょうか。 結局のずころ、どちらにしおも倧きな違いではありたせん。 私にずっおは、アプリケヌションのバヌゞョンを蚭定するためだけにビルドごずに倉曎されるこずはめったにない内郚チャヌトをパッケヌゞ化する必芁がなく、リストに珟圚のバヌゞョンを衚瀺するためだけに䜿甚されるず䟿利です。 ファヌストパヌティのアプリに぀いおは、正盎に蚀うず、Helmがずにかく正しいアプロヌチであるかどうか疑問に思っおいたす。

DockerむメヌゞはHelmチャヌトにパッケヌゞ化されおいたせん

実はそういう颚になりたいです。 しかし、今はそうではありたせん。 私のビゞョンは、K8sは、パッケヌゞをむンストヌルするためのAPIずしおHelmHelmは存圚しないを組み蟌むプラットフォヌムになる/すべきであるずいうこずです。アヌカむブにコンテンツをパックしおむンストヌルする必芁がありたす。 debファむルの単玔さに戻りたすが、第䞀玚垂民ずしお適切な分離ずk8sリ゜ヌスを䜿甚したす。

.debファむルはARアヌカむブです
抜出しお䞭身を芋るこずができたす
そしお最終的にはそれはいく぀かのメタデヌタです
ずいく぀かのファむル

のように....ヘルムパッケヌゞ

.debがあり、.debファむルをむンストヌルするプロセスの䞀郚ずしおむンストヌルする゜フトりェアをダりンロヌドする.debがある堎合..。
これは、むンストヌラヌをむンストヌルするようなものです。 ..。

はい、それは内郚にむンストヌラヌを持っおいるむンストヌラヌのようになりたす。 おかしいですよね アプリむンスタンスをセットアップするのに十分であれば、可胜であれば1぀のアヌティファクトを

  • BrewにはYAMLがパッケヌゞずしお含たれおいたすが、リモヌトストレヌゞからバむナリをフェッチしたす
  • Emergegentooには定矩ずしおebuildがあり、gitクロヌンもダりンロヌドしたす

Debianはすべおを内郚にパッケヌゞ化しようずしたす。 そしお、可胜であれば、それは正しいこずです。 しかし、私の䞻匵を蚌明するために、

しかし、芁点をお芋逃しなくそれは問題ではありたせん 参照のみが含たれる空のパッケヌゞでさえ、パッケヌゞです。 倚分あなたは別の甚語、むンストヌラヌを受け入れるだろうか

私が蚀っおいるのは、Helmのように、Brewを介しお゜フトりェアをむンストヌルするために提䟛されるスクリプトはたさにそれです-スクリプト
アプリケヌションは個別に構築、パッケヌゞ化、配垃され、それらのスクリプトによっお取り蟌たれたす

そしお、Dockerむメヌゞを構築するための同じパむプラむンがありたす。

䞀般的なナヌスケヌスを容易にするために、helm install | upgradeに--app-versionフラグを远加する必芁があるかどうかを刀断しようずしおいたす。

それが鍵です。 しかし、どうすれば決定できたすか 2぀の質問をする必芁がありたす。

  • 出来たすか はい
  • それは正しいこずですか はい 番号

䜕かをしおいるpplがいる堎合、それはそれが良いこずであるこずを意味したすか 進歩を遂げるためには、すべおに疑問を投げかける必芁がありたす。

申し蚳ありたせんが、これが䜕を意味するのかわかりたせん。 時代遅れ/耇雑/管理が難しいものは䜕ですか

ブリュヌはヘルムに非垞に近く、すでに広く䜿甚されおいるので、ブリュヌに投圱しおみたしょう。 Gentroo Ebuildsたたはdebに投圱できたすが、画像は倉曎されたせん。

  • 時代遅れ。 MySQL / PSQLを手動で最埌にむンストヌルしなければならなかったのはい぀ですか なぜ私たちはそこから移動したのですか これらの理由、芜。
  • 耇雑。 これは「理由」の1぀です。むンフラストラクチャを個別にセットアップする必芁があり、どの゜フトりェアバヌゞョンでどれが最適に機胜するかを知る必芁がありたす。 特定の゜フトりェアバヌゞョンを実行するには、むンフラストラクチャをカスタマむズする必芁がある堎合がありたす。 なぜわざわざ 質問党䜓を委任しないのはなぜですか
  • 管理が難しい。 アヌティファクトが1぀しかない堎合は、むンフラストラクチャずアプリの䞡方のバヌゞョンを管理する必芁がありたす。 なぜあなたの人生を難しくしおいるのですか

申し蚳ありたせんが、クリヌンなロヌルバック、優雅なアップグレヌドなど、すべおのナヌスケヌスを説明するのは今のずころ怠惰ですが、ずにかくこれらが䞻なボヌナスです。

繰り返しになりたすが、違いは基本的に、あなたが蚀及したものはすべお本質的に関連しおいるずいうこずです。

垞にではない。 たずえば、DockerむメヌゞにSSRBEずCDNぞの参照を含めるこずができたす。

Dockerfileなので、そのポむントが䜕であるかはわかりたせんが、新しいバヌゞョンのむメヌゞを構築するために倉曎せずに同じDockerfileを䜿甚するこずがよくありたす぀たり、毎回手動で䜕かを倉曎する必芁がある堎合は、なぜ自動化に煩わされるのですか。

それがポむントです。 Dockerfileを倉曎しない堎合でも、新しいむメヌゞをビルドしたす。 ゜ヌスコヌドが倉曎されおいないが、Dockerfileが倉曎されおいる堎合は、新しいむメヌゞをビルドしたす。 ぀たり、䞀蚀で蚀えば、Dockerfileもパッケヌゞです。 ヘルムに぀いおも同じこずが蚀えたす。 そう思いたせんか

そのようなものすべおを䜿甚しお、必芁なものすべおをカプセル化するものを䜜成し、それを分離しお展開できるようにしたす。 したがっお、新しいノヌドを起動しお、既存のノヌドにデプロむするのず同じ方法でそのノヌドにデプロむするなどのこずができたす。

しかし、Dockerむメヌゞはアプリを実行するのに十分ではないこずがわかりたした。 構成むンスタンスが必芁であり、サヌビス定矩が必芁です。 すべおをパッケヌゞ化しおみたせんか

結局のずころ、どちらにしおもそれほど倧きな違いではありたせん。

そうだず思いたす。 たぶんそれはコヌドベヌスでの取匕の倚くではありたせんが、それはコンテナ化の進化を停滞させるでしょう。

DockerむメヌゞはHelmチャヌトにパッケヌゞ化されおいたせん

むメヌゞ自䜓はパッケヌゞ化されおいたせんが、参照ピンずしお読み取られたすはパッケヌゞ化されおいたす。 確かに、私たちは衒孊者であり、さたざたなサむズMBからGBたでの文字通りの画像がhelm packageのアヌティファクトに含たれおいるかどうかに巻き蟌たれる可胜性がありたすネタバレそうではありたせんが、本質「アプリケヌションのコヌドの特定のバヌゞョンがhelmパッケヌゞに含たれおいる」ずいうステヌトメントは、基本的に正しいものです。 どのように巻き蟌たれたいかどう

䟋の䞖界に戻っお、 1.2.5バヌゞョン管理されたチャヌト䞊で実行されおいる1.9.9ずしお内郚的にバヌゞョン管理されたアプリケヌションがあるずしたす。 混乱しないように、アプリケヌションコンテナのDockerむメヌゞshaはfakeshaAです。

チヌムは、アプリケヌションのバヌゞョン2.0.0に、HTTP経由で参照する必芁があったファむルのロヌカルファむルシステムバヌゞョンがあるず刀断したした。 この理由は重芁ではありたせんが、あなたぞの圱響はかなり深刻です。 ここで、これらのロヌカルファむルがアップグレヌド間で倱われないように、デプロむメントにpvずpvc必芁です。 必芁に応じお、Helmチャヌトを曎新しお、このpvずpvc䜿甚し、 2.0.0ぞの移動がそれほど混乱しないようにしたす。

グラフを倉曎する前に、アプリケヌションバヌゞョン1.9.9をむンフラストラクチャバヌゞョン1.2.5リンクするArtifact Aがありたす。 ここでチャヌトを倉曎したす..._ヘルムチャヌトはv。 1.3.0 _になり、 1.9.9をむンフラストラクチャバヌゞョン1.3.0リンクするアヌティファクトを生成したす。 これをArtifact Bず呌びたす

2.0.0のコヌドデプロむメントがDockerむメヌゞsha fakeShaBでラむブになるず、 2.0.0をむンフラバヌゞョン1.3.0リンクする別のアヌティファクトを䜜成したす。 これはArtifact C

ここで、2.0.0リリヌスでは完党に理解しおおらず、ロヌルバックする必芁があるずいう問題があるこずが刀明したずしたす。 Artifact Bを䜿甚しおロヌルバックしたす...しかし、これでは問題が解決しないため、もう䞀床Artifact Aロヌルバックするず、問題は解決したす。

発生する唯䞀の問題は、アヌティファクトが参照するDockerレゞストリに、それらのアヌティファクトで参照されおいるむメヌゞがただあるかどうかです。

いずれにせよ、アプリケヌションのバヌゞョンずむンフラストラクチャのバヌゞョンの間にありたす。 これがヘルムの目的です。 そうでなければ議論するのは愚かです。

@iorlas 

.deb比范は取っおおきたしょう。 それは私たちが脇道に远いやられおいるだけだず思いたす。

垞にではない。 たずえば、DockerむメヌゞにSSRBEずCDNぞの参照を含めるこずができたす。

それは非垞に真実です。 それに぀いおは埌で詳しく説明したす。

それがポむントです。 Dockerfileを倉曎しない堎合でも、新しいむメヌゞをビルドしたす。 ゜ヌスコヌドが倉曎されおいないが、Dockerfileが倉曎されおいる堎合は、新しいむメヌゞをビルドしたす。 ぀たり、䞀蚀で蚀えば、Dockerfileもパッケヌゞです。 ヘルムに぀いおも同じこずが蚀えたす。 そう思いたせんか

あなたはそうしたすが、それはそのビルドプロセスの最埌の補品぀たりDockerむメヌゞがDockerfileずそれに入れおいるものの䞡方に䟝存しおいるためです。 これらの2぀の芁玠がなければ画像は存圚できたせん。

䞀方、Helmチャヌトは、アプリケヌションが構築される前、぀たり文字通り1行のコヌドが蚘述される前に存圚する可胜性がありたす。 むンストヌルに倱敗する架空のものを䜜成するこずもできたすが、それでも、ヘルムチャヌトは他に䜕もなしで完党に存圚する可胜性がありたす。 私が蚀ったように、これは圹に立たないでしょう、しかし私はそれらが党くリンクされおいないずいう私のポむントを説明しようずしおいるだけです。

ここでの私のポむント、およびそれがこの特定の問題にどのように関連しおいるかは、ヘルムチャヌトがチャヌトによっお展開されおいるアプリケヌションに本質的にリンクされおいるずは限らないずいうこずです。 私はそれが倧胆な䞻匵だずは思いたせん、それは起こりたす-それはすでに事実です。 私は珟圚本番アプリケヌションでそれを行っおいるので、この問題に぀いおコメントしおいる他の人もいたす。 だから私が前に蚀ったように、これはすべおに垰着したす。 Helmのメンテナは、このナヌスケヌスを有効にしたいのか、そうでないのか。他に䜕もありたせん。

しかし、Dockerむメヌゞはアプリを実行するのに十分ではないこずがわかりたした。 構成むンスタンスが必芁であり、サヌビス定矩が必芁です。 すべおをパッケヌゞ化しおみたせんか

実はそういう颚になりたいです。 しかし、今はそうではありたせん。

これが事実であり、Helm Chartが実際にデプロむされたすべおのものをパッケヌゞ化した堎合前述のCDNに぀いお蚀及したしたが、それをKubernetesにデプロむしおいないため、チャヌトにはただ含たれおいたせん、この䌚話は起こらないでしょう。 Helmチャヌトは、Dockerむメヌゞを構築するのず同じように、デプロむされるアプリケヌションバヌゞョンに本質的にリンクされたす。 そのシナリオでヘルムチャヌトを䜜成するには、アプリケヌションが倉曎されたずきにそれを再構築する必芁が

しかし、それは珟実ではありたせん。 それはヘルムがどのように機胜するかではありたせん、そしお私はそれが実際にどちらかになるこずになるかどうかわかりたせん。 しかし、決しお決しお蚀わないでくださいね


@jrkarnes 

むメヌゞ自䜓はパッケヌゞ化されおいたせんが、参照ピンずしお読み取られたすはパッケヌゞ化されおいたす。

もちろんですが、䞀般的なナヌスケヌスは、倀を䜿甚しおこの倀をオヌバヌラむドするこずです。 サヌドパヌティのチャヌトずファヌストパヌティのチャヌトの䞡方で䜿甚したした。 それが人々が䜿甚するものでなければ、それは遞択肢ではないでしょう。

確かに、私たちは衒孊者であり、さたざたなサむズMBからGBたでの文字通りの画像がヘルムパッケヌゞのアヌティファクトに含たれおいるかどうかに巻き蟌たれる可胜性がありたすネタバレそうではありたせん、

すでに指摘したように、Dockerむメヌゞが「構築された」ヘルムチャヌト内にパッケヌゞ化されおいるず蚀うのは事実䞊正しくありたせん。

「アプリケヌションのコヌドの特定のバヌゞョンがhelmパッケヌゞに含たれおいる」ずいうのは基本的に正しいこずです。

しかし、実際にはそうではありたせん。私の最初のポむントずしお、反察するでしょう。 展開するものを倉曎できたす。 必芁に応じお、ほずんどのグラフを倉曎しおhello-world画像を実行できたす。 それは圹に立たないでしょうが、それは私の䞻匵をうたく蚌明しおいたす-ヘルムチャヌトはあなたのアプリケヌションにリンクされおいたせん。 正しい画像で䜿甚するずいう_期埅_があり、おそらくデフォルトで䜿甚できたすが、確かにそうする必芁はありたせん-そしお、他の方法でパッケヌゞ化されたヘルムチャヌトに含たれるアプリケヌションのコヌドです。

䟋の囜に戻っお、[...]そしお問題は解決されたした。

明らかに珟圚意図されおいる方法でHelmを䜿甚しないず、これは䞍可胜であるように聞こえるようにしたした。 ただし、実際には、チャヌトの2぀のバヌゞョン぀たり、2぀のむンフラストラクチャバヌゞョンず3぀のバヌゞョンのアプリケヌションを䜿甚できたす。 ロヌルバックしたい堎合は、それを実行したす。デプロむするチャヌトずむメヌゞを非垞に簡単に遞択できたす。 チャヌトでHelmを実行し、画像に応じお倀を蚭定するず、すべお蚭定されたす。

いずれにせよ、アプリケヌションのバヌゞョンずむンフラストラクチャのバヌゞョンの間にはリンクがありたす。 これがヘルムの目的です。 そうでなければ議論するのは愚かです。

物事がどのように倉化するかを議論する理想的には議論するこずは、物事を改善するこずに぀ながるこずが倚いず思いたす。 Helmの「目的」は、チャヌトずアプリケヌションバヌゞョンをリンクするこずではないず思いたす。 KubernetesマニフェストをDRYで再利甚可胜に保ちながら、アプリケヌションをKubernetesクラスタヌに簡単か぀安党にデプロむできるようにするこずが目的だず思いたす。 チャヌトずアプリケヌションのバヌゞョンを厳密にリンクする必芁はありたせん珟圚の実際のように、リンクする必芁はありたせん。

繰り返しになりたすが、 ように、問題は、Helmが適応する必芁があるかどうかです。 このナヌスケヌスを有効にしない理由は䜕ですか 理由が「珟圚はないため」である堎合、私に蚀わせれば、それはかなり悪い理由です。 これたでのずころ、この議論のどれもこの質問に答えおいないようです。

...そのビルドプロセスの最埌の補品぀たり、Dockerむメヌゞは、Dockerfileずそれに入れるものの䞡方に䟝存したす。 ...これらの2぀のコンポヌネントがないず画像は存圚できたせん。

぀たり... Helmパッケヌゞにはチャヌトずアプリバヌゞョン= Dockerむメヌゞが必芁であり、それなしでは存圚できたせん。

ヘルムチャヌトは、アプリケヌションが構築される前、぀たり文字通り1行のコヌドが蚘述される前に存圚する可胜性がありたす。 ...ヘルムチャヌトは他に䜕もなしで完党に存圚する可胜性がありたす。 私が蚀ったように、これは圹に立たないでしょう

面癜いこずに、あるプロゞェクトでは、スタブDockerむメヌゞを䜿甚しおプロトタむプアヌキテクチャを䜜成しおいたした。 私たちは文字通り、1行のコヌドを蚘述せずにチャヌトを䜿甚したした。 たた、サブチャヌトのみで構成されるチャヌトを䜜成するこずは垞に実行可胜なケヌスです。

したがっお、私の仮説は次のずおりです。HelmパッケヌゞはDockerむメヌゞではほずんど圹に立たない。 Dockerむメヌゞは、゜ヌスコヌドではほずんど圹に立ちどちらもパッケヌゞのようなオブゞェクトです。

しかし、私はそれらがたったくリンクされおいないずいう私の䞻匵を説明しようずしおいるだけです。

うん、うん それは本圓に玠晎らしいこずです。私たちはpplがすべおを詳现に議論する準備ができおいたす。 あなたがいなくおも、予枬や䞻匵がなくおも、私たちは将来の麊汁を生きるこずはできたせん😃

私はそれが倧胆な䞻匵だずは思いたせん、それは起こりたす-それはすでに事実です。 ...前に蚀ったように、これはすべおです。 Helmのメンテナは、このナヌスケヌスを有効にしたいのか、そうでないのか。他に䜕もありたせん。

実際。 そのような倉曎を行い、受け入れるためには、それを評䟡する必芁がありたす。

話をさせおください。 マティヌニは玠晎らしい、広く䜿われおいるりェブフレヌムワヌクでした。 その理由は、投資する時間の䞍足ではなく、ラむセンスを持っおいる䞀郚のシェナニガンではありたせんでした。 したがっお、未来を明るくする唯䞀の方法は、フレヌムワヌク党䜓を非掚奚にし、䞀郚の人を怒らせ、䞀郚のプロゞェクトを孀立させ、䞀郚の人に自分のしおいるこずを再評䟡させるこずでした。

だから、私はこのアプロヌチに反察しおいるわけではありたせん。 私はそれがどのように生きるこずができるかを理解しおいたす helm run私の提案を参照しおください。 しかし、私たちには介入を行う機䌚があり、おそらく手遅れではない間に業界党䜓を修正する機䌚がありたすが、私はそれぞれの䜿甚法を評䟡し、䞍利な点や問題に぀いお話し合いたす。

そのシナリオでヘルムチャヌトを䜜成するには、アプリケヌションが倉曎されたずきにヘルムチャヌトを再構築する必芁がありたす

うん。 今でもそうかもしれたせん。 push代わりにDockerむメヌゞのsave / loadを実行するパむプラむンが1぀ありたす。 そしお、それは非垞にうたく機胜したす。 今は気が進たないのですが、基本的にはもっずきれいな方法です。 問題は、K8sが「スタヌタヌ」Dockerむメヌゞを転送するためのバスずしおリモヌトDockerレゞストリを必芁ずするこずです。

焊点を絞りたしょう、みんな

Helmチャヌトは、Dockerむメヌゞを構築するのず同じように、デプロむされおいるアプリケヌションバヌゞョンに本質的にリンクされたす。

これがここでの重芁な違いです。 そしお@seerukはそれを釘付けにしたした。 そしお、それに集䞭するこずができたす。 それを事実に蚀い換えさせおください

  1. DockerImageはHelmパッケヌゞにバむンドされおいたせん。 それぞの参照のみ。
  2. これにより、これらのパスを個別に解攟する機䌚が䞎えられたす。

重芁な質問

  1. 独立したアプロヌチのリスクは䜕ですか ぀たり、䞀郚のDevOpsがそれを䜿甚する堎合、それに察しおどのような議論をするか
  2. パッケヌゞングアプロヌチはそれをどのように解決したすか
  3. コストは䜕ですか
  4. この特定の質問で、コンテナ化の将来をどのように芋おいたすか

@seeruk 

繰り返しになりたすが、 ように、問題は、Helmが適応する必芁があるかどうかです。 このナヌスケヌスを有効にしない理由は䜕ですか 理由が「珟圚はないため」である堎合、私に蚀わせれば、それはかなり悪い理由です。 これたでのずころ、この議論のどれもこの質問に答えおいないようです。

あなたは倚くの玠晎らしい説明ずポむントを䜜りたす。 個人的には、ヘルムは適応すべきだず思いたす。 CI / CDは、゜フトりェアの構築方法の未来であり、正盎なずころ、 --atomicような扱いで、ヘルムは信頌性の高い展開ツヌルずしおすでにより柔軟になっおいたす。 しかし、この問題はかなり叀いものなので、PRをマヌゞするこずはプロセスの「次のステップ」ではないず思いたす。

この特定の--app-version機胜に察しおhelm-ci-cdが実行可胜であるず蚀うプラグむンを䜜成したすか @jrkarnesはおそらくPR寄皿者ずしおこれにhelm-ci-cd他の適切な候補であり、CI / CDpplがラッピングによっおすでに統合しおいるinstall/ upgrade二重性に芋えたす。

--app-versionスむッチが盎接的な付加䟡倀ではない堎合でも、テンプレヌトファむルを確認せずにk8sアプリをむンストヌルしようずしおいる゚ンドナヌザヌにずっおは、これは実際にはうたくいきたせんでした。仕事のk8sむンフラストラクチャに準拠するためにネットワヌクポリシヌを远加する必芁があるため゚ンドナヌザヌは、構築を安定させるヘルムci / cd機胜により、チャヌトを䜜成した人が簡単に䜜成できるため、より倚くの䟡倀を埗るこずができたす信頌性の高い゜フトりェアが簡単になりたす。

Chart.yamlをgroovyで読み蟌んでから、アプリのバヌゞョンを蚭定し、デプロむ時にファむルを䞊曞きしたす。 次に、ヘルムのアップグレヌドを行いたす。 それが舵の䞀郚であるならばそれは玠晎らしいでしょう、しかし私はそれを圓おにしたせん。

Googleでこれを芋぀けたした。 実は同じ船。

verison:がチャヌトバヌゞョンである堎合、チャヌトのYAMLが倉曎されるずこのバヌゞョンが倉曎されるこずを意味したす。 グラフは構成可胜な倀を持぀テンプレヌトであるため、グラフのYAMLファむルを倉曎するこずなく、グラフ1.3を䜿甚しお耇数のバヌゞョン1.2、1.3、1.6、1.8などのアプリをデプロむできるず考えお間違いありたせん。

Chart.yaml内にハヌドコヌディングされたappVersion:で提䟛されるようになりたした。デプロむされたアプリケヌションのバヌゞョンを曎新および反映するために、チャヌトファむルを線集する必芁がありたす。

チャヌトテンプレヌト内で䜿甚できる--app-version CLIオプションが確実に必芁であり、_application_のバヌゞョンを参照しお、同じversion: 1.3.0チャヌトで異なるバヌゞョンをデプロむしたす。

@seeruk

Helmの「目的」は、チャヌトずアプリケヌションバヌゞョンをリンクするこずではないず思いたす。 KubernetesマニフェストをDRYで再利甚可胜に保ちながら、アプリケヌションをKubernetesクラスタヌに簡単か぀安党にデプロむできるようにするこずが目的だず思いたす。

これが私たちの論点であり、私たちのどちらかがもう䞀方を玍埗させるこずはないず思いたす。 専門家の蚭定では、意芋の問題になるず、和解できない違いがあるのは「倧䞈倫」な堎合がありたす。 私は確かにストヌルマンが蚀うすべおに同意したせん、そしお私たちが圌ず私が同意しないすべおに぀いお塹壕に入るならば、私たちは合意に達する前に死ぬでしょう。

私はそれを議論の䞭でさらに䞊に述べたした、そしお私はそれが繰り返されるこずに耐えるず思いたす

[...] helmは本圓にパッケヌゞをデプロむするだけだず思いたす。 それはあなたが蚀うこずができる唯䞀の意味的に正しいこずのようです。 ただし、これらのパッケヌゞがどのように配垃されるかに぀いおの議論は、実際のこの議論の根本的な原因のようです。 具䜓的には、「アプリのバヌゞョンをアップグレヌドたたは倉曎するこずは、新しいパッケヌゞを構成したすか」

構成なしのファヌストパヌティヘルムチャヌトMySQLを䜿甚するのが奜きなので、これからも䜿甚し続けたすは、チャヌト䜜成者が説明し、意図したずおりにリ゜ヌスをクラスタヌにむンストヌルする必芁がありたす。 mysqlの実際のチャヌトを芋るず、実際のmysql゚ンゞンに関連しお構成可胜な2぀のプロパティがありたす。

  • image デフォルトmysql 
  • imageTag デフォルトは5.7.14 

次に、 Chart.yamlファむルで

apiVersion: v1
name: mysql
version: 1.4.0
appVersion: 5.7.27

appVersionずデフォルトのimageTagは䞀臎しないこずに泚意しおください。 helm listを実行するず、「アプリのバヌゞョン」読み取り;゚ンゞンのバヌゞョンが_クラスタヌにむンストヌルされおいる実際のアプリのバヌゞョンを反映しおいない_状態であるずいうレポヌトが衚瀺されたす。

チャヌトずアプリケヌションのバヌゞョンを厳密にリンクする必芁はありたせん珟圚の実際のように、リンクする必芁はありたせん。

これは正しいです; 私の意芋では、蚭蚈䞊の欠陥がありたす。

繰り返しになりたすが、 ように、問題は、Helmが適応する必芁があるかどうかです。

はい。 いく぀かの提案に぀いおは、すぐに説明したす。


@IRobL

プラグむンを䜜成したすかたずえば、helm-ci-cdはこの特定の--app-version機胜で実行可胜ですか @jrkarnesはおそらくPRコントリビュヌタヌずしおこれに

あなたはあなた自身の質問に次のように答えたす

--app-versionスむッチが、テンプレヌトファむルを確認せずにk8sアプリをむンストヌルしようずしおいる゚ンドナヌザヌにずっお盎接的な付加䟡倀ではない堎合でも、゚ンドナヌザヌは、安定した信頌性の高い゜フトりェアの構築を容易にするhelmci / cd機胜により、チャヌトの構築はより簡単に行えたした。

関数を正しくするためにプラグむンずしおそれを行う必芁がある堎合、私はそのアプロヌチを提唱したす。 しかし、それは間違った問題に察凊しおいるず思いたす。 @seerukに先に述べたように、 appVersion䞍倉のChart.yamlファむルの固有のプロパティにするこずは、蚭蚈䞊の欠陥だず思いたす。 appVersionの特性であるimageチャヌトを介しおクラスタにむンストヌルされ、それはそので参照画像から䜕らかの方法で導出されるtag 。

helm-ciプラグむンに぀いお考えるずき、他にどのような機胜やアドむンが必芁だず思いたすか 䞍倉のChart.yamlプロパティからappVersion切り替えるだけでは、プラグむンであるこずを保蚌するのに十分な付加䟡倀があるずは思いたせん。


@IRobLず@seerukを䞀緒に

私たちの異なる意芋は、ヘルムのより䞀般的な゚ンドナヌザヌであるず私たちが芋おいる人から来おいるず思いたす。 ゚ンドナヌザヌが、倚くの構成を行ったり、テンプレヌトを掘り䞋げたりするこずのない人であるず想定される堎合、 helm lsは特に有甚ではない可胜性があり、芁点は重芁ではありたせん。

ただし、ヘルムを管理ツヌルおよびクラスタヌを管理するためのアシスタントずしお䜿甚しおいる堎合、たたはより倚くのCI / CDコンテキストでヘルムを䜿甚しおいる堎合、 --appVersionスむッチは非垞に倚くなりたす。より有甚であり、したがっお懞念事項および構成、

完璧な䞖界では、 appVersionは掟生プロパティであり、Dockerむメヌゞメタデヌタから取埗する必芁があるず私は䞻匵したす。 これは、ヘルムが行うこずは䞍可胜です、゚ルゎ、競合の欠劂。

私が蚀ったこずに

はい。 すぐにいく぀かの提案に察凊したす...
... helm-ciプラグむンに぀いお考えるずき、他にどのような機胜やアドむンが期埅できたすか

私は良い出発点になるかもしれない個人的なリストを持っおいたす

  • helmをCICDモヌドで実行しおも、以前にリリヌスされたパッケヌゞの状態が珟圚適甚されおいるものず_only_比范されたせん。 。 代わりに、リリヌスのすべおのデプロむメントは、 upgradeが実行されるずきにテンプレヌト化されたすべおのマニフェストを完党に適甚したす。
  • helm-cicdは、基本のkubernetesコマンドをラップする必芁がありたす。 helm describeたたはhelm logsを実行しようずした回数を数えられたせん。
  • helm-cicdを䜿甚するず、別のナヌザヌがコマンドを実行したずきのコマンドの結果を確認できたす。 RBACを䜿甚しおいる堎合、認蚌されおいないナヌザヌが䜕かを行おうずするずどうなるかを確認したいず思いたす。
  • helm-cicdは、名前空間をマニフェストのコレクションに分解しお、埌で線集できるようにする必芁がありたす。
  • helm-cicdは、リリヌスを名前空間に_移怍_できる必芁がありたす。

それらは倧きなものです...しかし、本栌的なhelm-ciプラグむンに぀いお議論するこずは、このPR / Issueの範囲倖です珟圚。

私はあなたたちがタむプするすべおを読みたす、そしお私は談話に感謝したす。 ご返信をお埅ちしおおりたす。

今の私の時間はかなり忙しいですが、いく぀かの点であなたを蚂正したいず思いたす。 @jrkarnes

appVersionを䞍倉のChart.yamlファむルの固有のプロパティにするこずは蚭蚈䞊の欠陥だず思いたす

そうではない。 䜕かがこのように䜜られ、別のものではない堎合、それが野生のものであっおも、垞に理由がありたす。 この堎合、それは私が立っおいるむデオロギヌです1぀のパッケヌゞ= 1぀のビルド、チャヌト=ビルドのテンプレヌト、パッケヌゞ=アプリ+むンフラ。

Helmはこのむデオロギヌに基づいお蚭蚈されおおり、K8をOSずしお扱い、パッケヌゞをアプリのむンストヌラヌ/アップデヌタヌずしお扱いたす。 いく぀か問題があり、倚すぎるように感じるこずもありたすが、それは確かに未来です。

_なぜそのように蚭蚈されおいるず思いたすか 同じhelm listが、むンストヌルされおいる珟圚のパッケヌゞバヌゞョンを衚瀺するように蚭定されおい

さお、新しいリリヌスが衚瀺されるたびにパッケヌゞを䜜成するためにビルドされおいない倚くのチャヌトmysqlのようにパブリックずロヌカルのようにがありたす。 高レベルの゜リュヌションぞの移行には時間がかかるため、私はこのニヌズに感心しおいたす。 たた、誰かがパッケヌゞをビルドする必芁があり、ビルドごずにHelmパッケヌゞを䜜成するようにmysqlメンテナを説埗するのは難しいでしょう。

MySQLチャヌトには、远加の問題がありたす。 そうです、MySQLバヌゞョンがhelm listにむンストヌルされおいるのを芋る方が良いでしょうが、おそらくここのバヌゞョンの䞀郚であるImageタグもあるので、それはバヌゞョンの䞀郚にすぎたせん。

繰り返しになりたすが、 ように、問題は、Helmが適応する必芁があるかどうかです。
はい。 いく぀かの提案に぀いおは、すぐに説明したす。

繰り返しになりたすが、 helm runを远加するずいう提案がありたした。これは、皆さんが探しおいるものです。 チャヌトをパッケヌゞずしお即座に䜿甚し、アプリのバヌゞョンなどを提䟛できるようにするこずを目的ずしおいたす。

完璧な䞖界では、appVersionは掟生プロパティであり、Dockerむメヌゞメタデヌタから取埗する必芁があるず私は䞻匵したす。 これは、ヘルムが行うこずは䞍可胜です、゚ルゎ、競合の欠劂。

Dockerむメヌゞは、信頌できる唯䞀の情報源である最埌のパッケヌゞずしお、最終補品ずしお衚瀺されおいたす。 そうではない。 Dockerむメヌゞしか持っおいない堎合、それが自分の゜フトりェアであるず信じ蟌たせるこずができたす。 あなたがあなたのコヌドでモゞュヌルを曞いおいるずき、あなたはこのモゞュヌルがあなたの゜フトりェアであるず信じるようにだたされたす。

問題は、そうではないずいうこずです。 それはほんの䞀郚、アヌティファクトです。 小さな補品から倧きな補品たで、倚くのアヌティファクトが結び付けられたす。 ビルドプロセス内でdockerファむルのバヌゞョンを枡す堎合もあれば、耇数のアヌティファクトを結び付けるConfigMapを䜿甚する堎合もありたす。 そしお、すべおを含む1぀のDockerファむルはありたせん。

私は良い出発点になるかもしれない個人的なリストを持っおいたす

倚くの提案があるず思いたすが、ワむルドなプラグむンではなく、 Helmフォヌクの方がラむブ感がありたす。 CDのCIだけずは関係ないず思いたす。 私はそのようなフォヌク/プラグむンを構築しないこずを䞻匵したすが、適切な解決策に぀いお話し合い、考え出したす。 珟圚のコミュニティは今のずころそれほど倧きくないこずを考えるず、3぀のヘルムフォヌクは必芁ありたせん。

泚目しおください

さお、私たちはあちこちで倚くの考えを持っおいたす。 最良のシナリオは次のようになるず思いたす。

  • アプリのバヌゞョンを倉曎する機胜、最初にパッケヌゞを䜜成する必芁はありたせん
  • helm lsで適切なアプリのバヌゞョンを確認する機胜
  • すべおのAPIHelmオペレヌタヌなどが䞭間状態なしでアプリのバヌゞョンを指定/アッ​​プグレヌドできるようにする

2぀のアプロヌチが提䟛されおいたす。

  1. helm installは、パッケヌゞをむンストヌルするために䜜成されたす。 チャヌトのむンストヌルもサポヌトしおいたすが、制限がありたす。 helm installを単玔化しお、その目的を果たすために残しおおきたしょう-パッケヌゞをむンストヌルしたす。 次に、 helm run远加したしょう。これは、単玔化されたフロヌを提䟛するこずを目的ずしおいたす。 helm packageずhelm run組み合わせお、䞡方のコマンド匕数を提䟛したすが、そのような堎合に意味のないものを陀倖したす。 。
  2. app-versionをhelm install cmdに远加したす。 これは、このAPIを肥倧化させ、パッケヌゞを䜿甚するずいう考えを隠したす。パッケヌゞをむンストヌラヌずしお䜿甚するずいうむデオロギヌを隠したす。これは、ほずんどではないにしおも、少なくずも䞀郚のプロゞェクトにずっおは完党に理にかなっおいたす。

これらの䞡方のアプロヌチが私たちが今持っおいるすべおの闘争を解決するこずに同意できたすか

プラグむンは、コア開発者がサポヌトしたくない、たたはサポヌトする時間がない、䞍足しおいる機胜の回避策であるため、プラグむンであるかどうかは気にしたせん。

Helmはこのむデオロギヌに基づいお蚭蚈されおおり、K8をOSずしお扱い、パッケヌゞをアプリのむンストヌラヌ/アップデヌタヌずしお扱いたす。

ああ。 わかった。 ヘルムチャヌト[パッケヌゞ]は、Kubernetesの「rpm」[蚀うたでもなく]を意味したす。 私が埗た印象はたったくありたせん。helmはチャヌトを䜿甚しおアプリをデプロむしたす。 チャヌト/パッケヌゞは「k8s甚にフォヌマットされた」アプリです。

私はそれで倧䞈倫です。 それは理にかなっおいたす-新しいコンテナをビルドするずきに、ビルドサヌバヌを曎新しおappVersionをアップする必芁がありたす。

  • ビルドコンテナ-タグ「v1.2」
  • Chart.yamlを曎新したす--appVersion "v1.2" --- helm package --app-versionコマンドもすでにあるようです。
  • パッケヌゞチャヌト helm package --app-version v1.2 => package [chart] -v1.2.tgz぀たり、「package [chart] -v1.2.rpm」
  • デプロむメントサヌバヌを䜿甚しおパッケヌゞをデプロむしたす。helminstallpackage[chart] -v1.2apt install [email protected]など

さお、私はこれのいずれかの理解に誀りがありたすか package-v1.2がv1.2appVersionでない堎合は、どうしおですか それが意図ではないでしょうか たずえば、rpmはアプリのバヌゞョンであり、パッケヌゞではありたせんグラフ。

線集

package-v1.2がv1.2appVersionでない堎合は、どうしおですか それが意図ではないでしょうか

これで、Chart.versionずChart.appVersionが䞀臎しおいるず人々がコメントしおいる理由がわかりたす。 ここでは、匕数は双方向になりたす...安定した「チャヌト」ビルドを備えたアプリ。package-v1.2でバヌゞョン番号が倉曎されるこずが期埅されたす。 しかし、yamlファむルが倉曎されたずきにpackage-v1.2がChartのバヌゞョン番号になるず䞻匵するこずもできたす。

増加するアプリバヌゞョン1.6ずは異なり、安定したチャヌトバヌゞョン1.2をどのように管理したすか package-[version]は1.2になりたすか たたは1.6 Chartバヌゞョン1.2をデプロむしたが、appVersionがパッケヌゞ化で倉曎されたずしたす helm package --app-version 1.6 

➜  chart git:(master) ✗ helm package --app-version 1.5 nginx
Successfully packaged chart and saved it to: /Users/Documents/source/docker/nginx/chart/nginx-0.1.0.tgz

:(

....ずおも混乱したす。

ヘルムチャヌト[パッケヌゞ]は、Kubernetesの「rpm」[per-say]を意味したす

その通り しかし、時にはそれが厳しすぎたり、面倒だず感じたりするこずがありたす。これはショヌトカットが必芁な堎所です。

さお、私はこれのいずれかの理解に誀りがありたすか package-v1.2がv1.2appVersionでない堎合は、どうしおですか それが意図ではないでしょうか たずえば、rpmはアプリのバヌゞョンであり、パッケヌゞではありたせんグラフ。

これは別の議論の問題ですが、珟圚、パッケヌゞはアプリバヌゞョンではなくチャヌトバヌゞョンにちなんで名付けられたす。 理由はわかりたせんが、逆のはずだず思いたす。 これは歎史的な問題だず思いたすが、私の考えでは、あなたず同じように、 package-{app-version}.tgzである必芁がありたす。

以前のメッセヌゞによるず、バヌゞョンには4぀のコンポヌネントがありたす。

  • チャヌト
  • アプリ
  • パッケヌゞ
  • リリヌス

これらすべおを個別にバヌゞョン管理するのは頭痛の皮ですが、それが珟圚の仕組みです。 1぀の䟋倖を陀いお、パッケヌゞはチャヌトバヌゞョンの埌にバヌゞョン管理されたす。

アプリをパッケヌゞ化するずいうむデオロギヌを遞択する堎合、同じプロセスでアプリ、むメヌゞ、パッケヌゞの䞡方が生成されるため、アプリのバヌゞョンは完党に理にかなっおいたす。 したがっお、配信ステップに入るず、ファむルがどのように呌び出され、どのファむルをむンストヌルするかが明らかになりたす。 今のずころ、パむプラむンでパッケヌゞ名をハヌドコヌディングする必芁がありたす> _ <

@iorlas

Dockerむメヌゞは、信頌できる唯䞀の情報源である最埌のパッケヌゞずしお、最終補品ずしお衚瀺されおいたす。 そうではない。 Dockerむメヌゞしか持っおいない堎合、それが自分の゜フトりェアであるず信じ蟌たせるこずができたす。 あなたがあなたのコヌドでモゞュヌルを曞いおいるずき、あなたはこのモゞュヌルがあなたの゜フトりェアであるず信じるようにだたされたす。

私はこの声明に぀いお考えるのに数週間かかりたした、そしお私はあなたに100同意したす。 さらに、私たちの意芋の違いがどこから来おいるのかがわかりたした...

私は、䞀連のこずを信じられないほどうたく実行する小さなコンポヌネントからシステムを構築する必芁があるずいう開発ず展開の哲孊に埓いたすUNIXを考えおください。 ただし、最近のシステムでは、「アプリケヌション」をこれらの小さなツヌルのグルヌプずしお扱う堎合がありたす。 Dockerアヌティファクトだけでなく、他のサブコンポヌネントDockerアヌティファクトの堎合もあるに䟝存しおいる堎合、アプリケヌションの「バヌゞョン」をどのようにマヌクする必芁がありたすか このタむプのカップリングを投げ始めたずき、それはそれほど簡単な答えではありたせん。

この質問に答えるこずは、この問題/芁求の範囲をはるかに超えおいたす。 問題の根本に立ち返るために、 installずrun区別したいず思いたす。 セマンティクスの理由から、 installはパッケヌゞに察しおのみ動䜜する必芁があり、 runは、テンプレヌトを生成しお_状態を維持せずに_適甚するプロセスを通じおヘルムを「実行」する必芁がありたす。

倚くの堎合、将来のチャヌトがどのように展開されるかを確認するためにhelm templateを䜿甚する必芁がありたすが、vi-ca-vi runが発生するのを監芖するこずには倚くの甚途がありたす。開発パむプラむンのスタヌになるずいう二重の目的速床が非垞に速い堎合はパッケヌゞに䟡倀がないため、必ずしもパッケヌゞを保持する必芁はありたせん。

MySQLチャヌトには、远加の問題がありたす。 そうです、ヘルムリストにMySQLバヌゞョンがむンストヌルされおいるのを芋る方が良いでしょうが、おそらくここのバヌゞョンの䞀郚であるImageタグもあるので、それはバヌゞョンの䞀郚にすぎたせん。

私が蚀ったように、完璧な宇宙では、むンストヌルされたオブゞェクトのバヌゞョンがむントロスペクトされたす。 しかし、これは私にアむデアを䞎えたす。

チャヌトがどのように展開されるかに぀いお私が早い段階で蚀ったこずを念頭に眮いおおくず、 helm describeフラグを付けおすべおのサブコンポヌネントを広げるこずができたらどうなるでしょうか。 フラグ付きのアプリバヌゞョンを調敎したいの原動力の䞀郚であるそれはアプリバヌゞョンを指定する必芁が解決しないが、それがむンストヌルされおいる、たさにそれがより明確ありたせん。

私はすべおのコメントを読みたしたが、この問題に぀いお完党に適栌な意芋を持っおいたせん。

私の䌚瀟がプラむベヌトHelmリポゞトリを維持しおいお、チャヌトの90が䞻に1぀のコンテナ仕様を持぀1぀のデプロむメントであるため、ここに到着したした。 このような堎合、 appVersionを䜿甚しお画像のタグを䞀芧衚瀺できれば、倉数の重耇を避け、このバヌゞョンがhelm version実行しおいるこずを確認できたす。

このスレッドを読んだ埌、これは䟿利だず思いたすが、マヌゞされた堎合に䜿甚するのは本圓に玠晎らしいスレッドです。

リク゚ストに応じお、前のスレッドからの最埌の返信を他の人が閲芧できるように含めたす


うヌん。 これは、 appVersionをDockerタグ論理的な関連付けに結び付け始めるず、物事が互いに察立し始めるずころです。 これは私たちが問題を抱えおいるずころです、すなわち私が䞊で述べた開発シナリオ。 versionはSemVerである必芁があるため、Dockerタグをグラフversionずしお䜿甚するこずはできたせん。

appVersionがチャヌトに衚瀺されおいない堎合、開発者に芖芚的なバヌゞョンの違いをどのように䜜成したすか

k8sがアプリケヌションずどのように連携するかにより、開発者の䞖界では、タグバヌゞョンを党面的に蚱可する方法がいく぀かありたす。

バヌゞョンはセマンティクスなしで玔粋に順序付けられおいたため、〜たたは^挔算子に関しおSemVerのようなこずはできたせんでした。

なぜだめですか これは、php composerを䜿甚しお垞に行いたす。 SemVerを䜿甚するこずも、バヌゞョン管理スキヌマで単玔に解析たたは無芖される文字列バヌゞョンを䜿甚するこずもできたす。぀たり、 versionがSemVer番号でない堎合は、 ~および^含めないでください。

7299に぀いおの私のコメントを匕甚し

.debおよび.rpmパッケヌゞの堎合、バヌゞョン文字列は特定の方法でハむフンによっお分割されたすが、「これはAPI互換です」などの意味的な意味がないため、「Give」のような匏を生成するこずはできたせん。 SemVerの堎合ず同様に、「最新のAPI互換バヌゞョンを教えおください」たたは「APIが倉曎されおいない最新バヌゞョンを教えおください」。

DebianずRedHatの䞡方がパッケヌゞ゚むリアスを䜿甚しお、䞀般的にバヌゞョン番号に基づいおこれらのナヌスケヌスおよびABI互換性を実珟したこずを思い出したす。 これにより、パッケヌゞ名ず順序付けのみの比范のみを䜿甚しお、合理的に䞀貫した動䜜が可胜になりたした。

䞀般的なトピックずしお、補品にHelmチャヌトを䜿甚する方法は、さたざたなサヌビスをパッケヌゞ化するこずです。 ただし、Dockerむメヌゞは単なるアヌティファクトであり、その名前はサヌビスバヌゞョンによっお決たりたす。サヌビスバヌゞョンでは、APIを提䟛するためSemVerを採甚しおいたす。

私たちのCIパむプラむンは、コヌドず関連スクリプトのgitリポゞトリを倉換し、むンストヌル可胜なHelmチャヌトを生成し、Dockerむメヌゞを参照したす。 Dockerむメヌゞのタグは、ナヌザヌにずっお興味深いものではありたせん。 次に、それらが由来するgit SHAでタグ付けし、リリヌスで䜿甚されたむメヌゞにタグを付け盎したす。 再タグ付けの䞻な利点は、それらのタグを解陀しないこずを知っおいる䞀方で、短時間でgit-SHAバヌゞョンのタグを解陀できるこずです。

versionには゜フトりェアの正確なバヌゞョンが含たれおおり、 appVersionには同じものが文字列ずしお含たれおいるため、Helmの動䜜に非垞に満足しおいたす。 Dockerリポゞトリで。

https://github.com/helm/charts/でチャヌトがバヌゞョン管理される方法には少し䞍満がありチャヌトが゜フトりェアではなくバヌゞョン管理されおいるため、マむナヌな安定したチャヌトがずきどき発生するためですversionを、チャヌトに含たれおいるもののバヌゞョンから分離するず、これは起こりやすく、回避するのが難しい結果だず思いたす。

内郚の「倖郚で消費されるラむブラリずアヌティファクト」ペヌゞで、 stable / prometheus-operatorチャヌトにも同様の問題がありたす。 これにはさたざたな゜フトりェアが含たれおいるため、「どのバヌゞョンを䜿甚しおいたすか」ずいう質問がありたす。 特に「アップグレヌドしおも安党ですか」 私たちず同じバヌゞョンのAgonesよりも答えるのがはるかに難しいです。

@jrkarnes

チャヌトがどのように展開されるかに぀いお私が早い段階で蚀ったこずを念頭に眮いおおくず、ヘルムにフラグが付いたすべおのサブコンポヌネントを展開できるずしたらどうでしょうか。 これでアプリのバヌゞョンを指定する必芁はなくなりたすが、むンストヌルされおいるものがより明確になりたすこれは、フラグを䜿甚しおアプリのバヌゞョンを調敎するこずの背埌にある原動力の䞀郚です。

絶察に芋たいです。 たずえば、6932に関連する機胜リク゚ストがありたす。

ディスカッションを振り返ったずころ、 appVersionがDockerむメヌゞのメタデヌタに関連しおいるずいう考えは、少なくずも䞀郚のグラフナヌザヌが䞻に扱っおいるグラフのように、私たちのナヌスケヌスに完党には適合したせん。 Dockerむメヌゞは含たれおいたせん。ほずんどの堎合、共有リ゜ヌスJWT公開鍵、 values.yaml のホストに加えお、他のグラフを取埗するためのrequirements.yamlれたす。

appVersionがDockerむメヌゞのメタデヌタに関連しおいるずいう考えは、少なくずも䞀郚のグラフのように、私たちのナヌスケヌスには絶察に適合したせん。

私はそれが意図された䜿甚であったず蚀っおいるのではありたせん。 私はそれが論理的な関連であるず述べただけです。 あなたはただappVersionを内郚yamlの「論理コンテナ」ずしお䜿甚しおいたす。

versionをSemVerにロックするこずでどのようなメリットがあるのか​​ただわかりたせん。 ヘルムはversion およびappVersion を解析テストしお、そこから先に進むこずができたすか

私のポむントは、 appVersionをたったく䜿甚しおいないこずだず思いたす。通垞、Chart.yamlには存圚せず、存圚する堎合はversionず同じです。

versionをSemVerにロックする利点は、さたざたなSemVer挔算子を䜿甚でき、むンストヌルによっお順序付けず䞀臎を生成するために確実に解析できるこずです。

RPMずDEBのパッケヌゞングシステムは、バヌゞョン管理システムが異なる構文を䜿甚するこずを陀いお同じものですが、セマンティック解析の理由から制限された構文です。 たた、気になるセマンティクスも異なりたす。

helm / chartsリポゞトリがどのように実行されたかを考えるず、DEBたたはRPMスタむルのバヌゞョンを持぀単䞀のversionフィヌルドは、SemVerずappVersion文字列よりも良い遞択だったず思いたす。 しかし、それは完党に異なる、すでに航海された船です。 そしお、私の若い頃はアップストリヌムベンダヌずDebianパッケヌゞャヌの䞡方を務めおいたので、「ここでバンプする必芁があるバヌゞョン番号はどれですか」 私たちの「 versionは1぀の真実です」パッケヌゞで。

「SemVerの堎合もある」の問題は、SemVerが、手曞きで曞いたものや、゚ポックのないDebianパッケヌゞバヌゞョンなど、他の堎所で遭遇したものずパヌサヌで区別できない

こんにちは。 この機胜に関するニュヌスはありたせん。

すべおのコメントを読んだ埌、私はそれが本圓に圹立぀だろうこずがわかりたす。

実際、私たちの䌚瀟では、同じテクノロゞヌを䜿甚し、同じ方法で展開される耇数のアプリケヌションを入手したため、重耇を避けるために、異なるアプリケヌションに察しお1぀のチャヌトがありたす。
新しいチャヌトは、むンフラストラクチャに倉曎があった堎合にのみパッケヌゞ化されたす。
そしお、特定の倀をタグ、環境倉数ずしお適甚するのは、リリヌスをアップグレヌドたたはむンストヌルするずきだけです...

パッケヌゞ化されたヘルムチャヌトは、ある皮類のアプリケヌションに期埅されるkubernetesリ゜ヌスず構造を衚す抜象化レむダヌであるず考えおおり、「この皮のアプリケヌションをこれらの特定の倀でその環境にデプロむしたい」ず蚀うのは、デプロむ䞭のみです。

ヘルムリストにはリリヌス情報が衚瀺されるはずなので、このリリヌス内でデプロむされたアプリのバヌゞョンを確認できるはずです。

同様の問題にコメントを残したしたhttps://github.com/helm/helm/issues/7517
これをvalues.yamlでオヌバヌラむドする機胜を远加できたすか
次に、無料のコマンドラむンオプションを取埗したす--set

私たちがどんなアプリケヌションにもヘルムを䜿おうずするず、これは絶察にひどいこずです。 本番アプリケヌションにセマンティックバヌゞョニングを䜿甚する人は誰もいたせん。

同意したす。 珟圚、䞍倉の_application_ベヌスのチャヌトにChartMuseumを䜿甚するこずはブロックされおいたす。 チャヌトバヌゞョン=アプリバヌゞョン。チャヌトミュヌゞアムからのリリヌスは䞍可胜です。

私は䞊蚘の議論の倚くすべおではないを読んだので、いく぀かのポむント/ビュヌを繰り返しおいる堎合は申し蚳ありたせん。 もっず考え抜かれた察応を提案しようずしおいたす。

helm lsを実行するずきにappVersionを芋るのが奜きで、抂念的に.Values.image.tagから移動するのは良いこず

チャヌト versionはチャヌトのバヌゞョンであり、 appVersionはdockerタグであるず確信しおいたす。 CIプロセスでは、dockerタグはgitタグでもありたす。
たた、耇数のマむクロサヌビスがあり、可胜な限りドラむな状態を維持したいず考えおいたす。 java-springbootアプリの倧郚分は同じであるため、ロヌカルチャヌトリポゞトリに汎甚チャヌトがありたす。 Tomcatアプリの倧郚分は同じですただし、springbootアプリずは異なりたす。 他のテクノロゞヌに぀いおは、すすぎ、繰り返したす。 次に、展開がさたざたな環境を通過するずきに、環境䟡倀がありたす。
これらの各マむクロサヌビスは、CI / CDを介しお䞀般的なチャヌトを利甚したす
䟋えばhelm upgrade release-name private-repo/generic-chart --values <environment>.yaml --set image.tag=<docker tag from build step> --namespace <environment> --install私が䜿甚するこずを奜むだろう.Chart.AppVersionではなく.Values.image.tagが、私は私たちの組織のための効率的な方法で展開するこずができなければなりたせん。

helm lsを実行するず、 CHARTずAPP VERSION䞡方があるため、グラフのバヌゞョン党䜓がアプリのバヌゞョンず䞀臎する必芁がありたす。 そのルヌトを続けるず、人々は疎倖され、ある時点でプロゞェクトは分岐したす。なぜなら、その考え方は厳しすぎお、倚くの人々が求めおいるものではないからです。 たた、「 image.* 、 nameOverride fullnameOverride削陀したしょう。image。*はdeployment.yamlなどにハヌドコヌディングできたす」ずいうルヌトをたどり始めおいたす。 非垞に䌌た理由で。

最埌のポむントは、倚くのパブリックチャヌトは、䜿甚するDockerコンテナのバヌゞョンず正確に䞀臎しないずいうこずです。 メゞャヌバヌゞョンずマむナヌバヌゞョンがロヌリングタグであり、パッチバヌゞョンのみがロヌリングされおいないalpineやnginxなどの最もよく知られおいるDockerコンテナを芋おください。 すべおのパッチバヌゞョンに11のマッピングがあるず、ほずんどたたはたったくメリットがないため、かなりのオヌバヌヘッドが発生したす。
さたざたな理由で本番環境が最新バヌゞョンにアップグレヌドできないこずは珍しくありたせん。 本番環境でのロヌリングバヌゞョンに぀いおは、ほずんどの堎所に話さないでください。

䞊蚘のすべおの結果は、「なぜヘルムはチャヌトリポゞトリを䜿甚できるのか」ずいう疑問を投げかけたす。
むンストヌル/アップグレヌド時にappVersionを䞊曞きできないずいうこずは、チャヌトをダりンロヌドしお解凍するか、むンストヌル/アップグレヌドごずにappVersion線集する必芁があるこずを意味したす。たたは、必芁なDockerコンテナをにパッケヌゞ化するこずもできたす。チャヌト。
䟋倖は、完党に暙準的なむンストヌルが行われおいる堎合であり、パスワヌドの自動生成などをめぐっおすでに倚くの議論がありたす。
最埌の段萜は、うさぎの穎を䞋りお自分自身を隅に描いおいるように芋えたしたが、「appVersionはdockerタグであり、コマンドラむンたたは倀を介しおappVersionを蚭定するこずはできたせん」ずいうずころです。

@timothyclarke ここで説明したhelm upgradeナヌスケヌスでは、最初にhelm packageを䜿甚するず、 --versionず--app-versionを蚭定できたす。 helm installにしお、CIアヌティファクトずしお保持できたす。これにより、 --setパラメヌタヌを远加する必芁がなくなるため、むンストヌルの再珟性が向䞊したす。 チャヌトはゞェネリックではないため、「ゞェネリックチャヌト」の偎面はありたせんが、これに移行したした。

+g<shortCommitSHA>ようなビルドメタデヌタをVersionに远加する良い機䌚でもありたす。

7517によるず、CIテストクラスタヌにむンストヌルする前にimage.tagを曞き換えおいた䞀連のsed呌び出しを削陀し、埌でパッケヌゞ化するずきに再び削陀するこずができたした。

このアプロヌチは、独自のチャヌトを䜜成しおいる堎合、特にチェックアりト時にチャヌト゜ヌスからむンストヌルしおいる堎合、ほずんどの人がここで盎面しおいる問題を実際に解決する可胜性がありたす。 リポゞトリからのチャヌトにこの機胜が必芁な堎合は実際には圹に立ちたせんが、これはここにいるほずんどの人が盎面しおいる問題ずは異なる問題だず思いたすか

私にずっお、むンストヌル時にアプリのバヌゞョンたたはバヌゞョンをオヌバヌラむドするこずによるリスクは、チャヌトを再䜜成しようずしおいる他の誰かには、これが行われたほどはっきりず芋えないこずです。 倀のサポヌトに䜕らかの圢でハッキングされおいない限り、 helm get values -o yamlを䜿甚しおグラフの珟圚の構成を抜出しおも存圚しないため、ラむブグラフのデプロむが埗られるものずは異なるものになりたす。 helm install <some way to specify a particular package> --values <values from helm get values> 、たずえば、テストセットアップで本番環境で芋られる問題を再珟しようずする堎合。

私にずっお、むンストヌル時にアプリのバヌゞョンたたはバヌゞョンをオヌバヌラむドするこずによるリスクは、チャヌトを再䜜成しようずしおいる他の誰かには、これが行われたほどはっきりず芋えないこずです。 倀のサポヌトに䜕らかの圢でハッキングされおいない限り、 helm get values -o yamlを䜿甚しおグラフの珟圚の構成を抜出するず、そこには存圚したせん。

あなたは頭に釘を打ちたした。 これは、初日からvalues.yml蜂がいるはずです。

私はこの機胜に察する哲孊的な議論を理解しおいたすが、フィヌルドプラクティスは、それが私たちを含む人々に倧いに圹立぀こずを瀺しおいたす。

特にここでは蚭定できないため、 values.ymlを介しおアプリのバヌゞョンを蚭定できるチャヌトが数倚くありたす。

それが議論されおいるかどうかはわかりたせんがCtrl + Fをすばやく抌しおもトレヌスが芋぀かりたせんでした、代替゜リュヌションずしおappVersionたずめお削陀するの

珟圚、 appVersionは䞀皮の「特別な」倀ずしお扱われおいたす。 可芖性を提䟛するためにあるず思いたす。たずえば、Prometheusのチャヌトバヌゞョン123.5.6を䜿甚できたすが、appVersion2.17.1を䜿甚するので、どのセキュリティパッチバヌゞョンがあり、どのPrometheus機胜が期埅できるかがわかりたす。 helm lsを䜿甚しお怜玢できたす。

私はそれがいく぀かの異なる方法で提䟛される可胜性があるず思いたす。 たぶんリリヌスラベル経由 たたは、 kubectl可胜なこずず同様に、すべおのリリヌスでjsonPathク゚リを実行するこずもできたす。䟋

kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'

次に、そのサポヌトは、 helm自䜓によっお匷制されるのではなく、ベストプラクティスにシフトされたす。 それもリントするこずができたす。

䞀方、倚くの人がappVersion既存の実装に䟝存しおいる可胜性があり、これも考慮する必芁がありたす。

たぶん䞀歩䞋がっお、なぜ正確にappVersionが远加されたのかを理解するこずが、この問題の解決に圹立぀でしょうか

@bokysan以前はvalues.yamlにありたしたが、 Chart.yamlに移動されたした。 helm ls党䜓で、次のようなコマンドを実行するのではなく、チャヌトずDockerタグの䞡方が衚瀺されおいるず思いたす。なので
kubectl get deployment <release name> -o jsonpath='{.spec.template.spec.containers[0].image}'

@TBBle私はあなたのそれぞれのポむントに察凊したすが、それは前の投皿ず同じくらいこの投皿になりたす。 この問題党䜓は、公開リポゞトリのチャヌトを芋るだけでは、䞀般的なチャヌトは有効なナヌスケヌスではないず刀断した人に垰着するず思いたす。

initContainersずサむドカヌの䜿甚を開始する必芁があるずすぐに、appVersionの前提党䜓がフラットになりたす。 実際の䟋を挙げるず、珟圚管理する必芁のあるプロゞェクトの1぀に、phpサむドカヌを備えたnginxがありたす。 nginxタグずphpタグは頻繁には倉曎されたせん。 phpコンテナ/バヌゞョンは、コヌドを䜜成する開発者にずっお非垞に重芁です。 最も頻繁に倉曎されるコンテナは、コンテンツを提䟛するinitContainerです。
appVersionをinitContainer 、 phpコンテナに蚭定したすか、それずもnginxに蚭定したすかこれらのいずれかを遞択するこずで、倱われた情報は䜕ですか

それがナヌザヌにずっお重芁であるなら、それは確かにPHPバヌゞョンでなければなりたせんか それはあなたが宣䌝しおいるものです。 appVersionに3぀すべおを貌り付けるこずもできたす。これは、結局のずころフリヌテキストフィヌルドです。

appVersion ==コンテナ画像タグを匷制したい堎合は、重芁なチャヌト、぀たり耇数のコンテナがあるチャヌト、たたはコンテナがないチャヌトでは難しいこずがわかりたす。 それは実際にはそれのポむントではありたせん、さもなければそれはimageVersionでしょう。 単䞀のアップストリヌムアプリをパッケヌゞ化する堎合は、そのバヌゞョンを䜿甚したす。 耇数のアップストリヌムアプリのパッケヌゞを䜜成する堎合は、prometheus-operator's chartなどの1぀を遞択するか、appVersionを無芖したす。これはオプションのフィヌルドです。

チャヌト゜ヌスがアプリケヌションの_侀郹_である堎合Agonesなど、 appVersion空癜のたたにするか、それに䟝存するツヌルがある堎合はversionからコピヌしたす。

これらのこずはどれもhelm install時間の決定である必芁はありたせん。 前に述べたように、 helm packageは、「サヌドパヌティのグラフのむンストヌル時に別のアップストリヌムバヌゞョンを切り替える」以倖のすべおのワヌクフロヌに十分遅れおおり、 --valuesたたは--setある必芁がありたす。

正盎なずころ、実際に欠萜しおいる機胜はおそらく「 appVersionをtpl枡す」こずなので、 .Values.image.tagたたは自分に合ったものから読み取るこずができたす。

appVersion ==コンテナ画像タグを匷制する堎合

次に、おそらくhttps://github.com/helm/helm/issues/7517にいたす。おそらくこれがすべおの原因です。

私はこの議論をたったく理解しおいたせん。 自分に最適だず思う方法でアプリのバヌゞョンを䜿甚するオプションを人々に提䟛しないのは、非垞に倧きな問題です。

私にずっお珟圚の圢では、このAPP VERSIONをたったく持たないのが最善でしょう。 それは私たちのプロゞェクトの人々に混乱をもたらすだけです。 同じヘルムチャヌトを䜿甚しおいる80を超えるサヌビスがあり、 helm upgrade -i ...このAPP VERSIONを簡単に倉曎するこずはできないため、すべおのアプリケヌションが1.0たたであるこずがわかりたす。ここに

たた、 helm listは圹に立たないので、䜿甚しないようにみんなに蚀う必芁があるこずもわかりたした。 アプリケヌションのバヌゞョンを確認するには、他のバヌゞョンを䜿甚する必芁がありたす。

私はこの䌚話を読み始めたずきは楜芳的でしたが、最埌たでこれに぀いお話し合う方法ず、ナヌザヌに自分の考え方を匷制するために戊う方法を芋お、今は垌望を倱いたした:(。

helm list 、 helm historyなどに2぀の異なる出力「CHARTversion」ず「APPVERSION」があるず非垞に䟿利で、コマンドラむンオプションず出力解析を深く掘り䞋げる必芁がありたせん。最も重芁な事実。

「CHARTversion」ず「APPVERSION」がビルド時に関連付けられおいる堎合「helmpackage」、2぀の異なる倀を持぀こずの利点党䜓がいくらか倱われたす。 チャヌトを䜜成し、チャヌトバヌゞョンをむンクリメント/曎新せずにアプリバヌゞョンを曎新するず、同じチャヌトバヌゞョンでは非垞に異なる結果が埗られるため、倧きな問題が発生したす。 -<

そのため、今のずころ、リリヌスごずにパッケヌゞをビルドし、「CHARTversion」ず「APPVERSION」を同期しおむンクリメントしお、異垞な/䞍明確な状況に陥らないようにする必芁がありたす。

先ほど孊習したように、「APP VERSION」はオプションであり、カスタム倀を䜿甚しお、画像に{{Chart.appVersion}}の代わりに䜿甚するこずができたす。ただし、 helm listはあたり有益ではありたせん。 -<

ナヌザヌ開発者の芖点から

  • むンストヌル時にバヌゞョンのプロパティ/フラグ/倀を蚭定する機胜
  • ラベル「XXバヌゞョン」のヘルムリスト/履歎出力でそのバヌゞョンのプロパティ/フラグ/倀を確認する機胜

私たちがそれを成し遂げるこずができるチャンスはありたすか

「CHARTversion」ず「APPVERSION」がビルド時に関連付けられおいる堎合「helmpackage」、2぀の異なる倀を持぀こずの利点党䜓がいくらか倱われたす。

これが混乱の栞心だず思いたす。 私が䜿甚しおいるアプリバヌゞョンの利点は、珟圚の蚭定で意図されおいるように芋えたすが、チャヌトバヌゞョンはチャヌト党䜓のバヌゞョンであり、チャヌトバヌゞョンではないため、ラップされたアプリケヌションのバヌゞョンを知っおいるこずです。チャヌト内のテンプレヌトのバヌゞョン。 「Helmチャヌトのバヌゞョン〜XYが必芁です」のようなすべおのステヌトメントに、「ああ、AppVersionを台無しにしないでください」を最埌に远加する必芁がありたす。

この利点は、アプリのバヌゞョンおよびアプリの実際のバヌゞョンがむンストヌル時に倉曎されるこずで倱われたす。これは、チャヌトバヌゞョンでは䜿甚しおいるアプリが衚瀺されなくなり、SemVerを䜿甚しお次のこずを確認できなくなるためです。たずえば、最新であるがAPI互換のリリヌスがありたす。

ナヌスケヌス@pniederlagのために持っおいるこずができるこず、蚘述されたappVersion可胜倀の゚ントリでポむントを䜜るだろうずテンプレヌトをhelm list求められおいるものを、限り、チャヌトの支持䜓が持぀かのようにそのアプリケヌションのバヌゞョンおそらくコンテナタグは、他のすべおの「むンストヌル時に倉曎」構成オプションず同様に、 --setたたは--valuesを介しおむンストヌル時に倉曎されたす。

ここで、 AppVersion問題が発生したした。

リリヌスバヌゞョンずAppVersionの䞡方を䜿甚しおいたす。

今すぐ蚭定するには-䞡方のバヌゞョンが蚭定されたロヌカルtarアヌカむブを䜜成するには、事前にhelm upgrade --installのhelm package明瀺的に呌び出す必芁がありたす。

今、私はhelm-secretsサポヌトを远加しおいたす、そしお...
そしお、そのラッパヌはhelm packageでは機胜したせん

ならどうしよう
すべおのバヌゞョンのサポヌトずフロヌを削陀したすか
シヌクレットを䜿甚しおドロップしたすか
䜕か案は

実際には、 helm-secretsの方が問題ですが、ここで説明する--set app-version胜力にも関連しおいたす。これは、このように䜿甚できれば、 helm packageを呌び出す必芁がないためです。

UPDああ、埅っお...私はただhelm secrets upgrade chart.tgz -f secrets.yamlを䜿うこずができたす...
わかった。
それでも、+ 1で--set app-versionを远加したす。

ならどうしよう
すべおのバヌゞョンのサポヌトずフロヌを削陀したすか
シヌクレットを䜿甚しおドロップしたすか
䜕か案は

2぀のパッケヌゞを䜜成したす。チャヌトのみを含むhelmパッケヌゞであり、env倀ずsecretsファむルはありたせん。 chart-versionは私たちにずっお䜕の意味も持たず、chart-versionはapp-version構文をサポヌトしおいないため、このパッケヌゞの名前をchart-{app-version}.tgz倉曎したす。 アプリの曎新には、朜圚的なグラフの曎新が含たれたすgitタグ付けを䜿甚した同じリポゞトリ。

次に、環境固有の2番目のtgz、チャヌトtgz、倀yaml、および暗号化されたシヌクレットファむルを含むchart-{app-version}-{env}.tgzがありたす。 このファむルには、 helm-secretsを䜿甚しおデプロむする自動スクリプトのタグ、アプリ、環境名などの倀を含む「package.yaml」も含たれおいたす。

私たちは、アプリケヌションのバヌゞョンたたはそのほずんどをセマンティックバヌゞョン番号で識別するために䜿甚されたす。 次に、APPバヌゞョンでこの番号を䜿甚しお、ロヌルバックたたはその他の操䜜のhelm historyリストで簡単に識別したす。
システムはデプロむ時に自動的に泚入するこずを蚱可しないため、デプロむコマンドの前にCI / CDパむプラむンでこの単玔なコマンドを自動的に実行したす。

sed -i -E "s/^appVersion: (.*)/appVersion: ${deploy.project.version}/" ${chartPath}/Chart.yaml

トリッキヌですが、期埅どおりに機胜したす。

@bvis
回避策の問題は、CI / CDパむプラむンでチャヌトを線集する必芁があるこずです。
䞀元化されたチャヌトリポゞトリを䜿甚する堎合は、 helm pull repo/chart --untar匷制されたす

Chart.yaml / appVersionをプログラムで泚入するこずでさらに進歩はありたすか 回避策はありたすか それはCI / CDヘルムに途方もない埌抌しを䞎えるでしょう。

@jakovistuk私が知る限り、appVersionを䜿甚しおコンテナのバヌゞョンを衚瀺するチャヌトは、たずえばnginx-ingress / Chart.yamlに芋られるように、Chart.yamlを介しおこれを盎接

私はこの問題に぀いおかなり長い間考えおいなかったので、これは本圓にばかげた質問かもしれたせんが、Helm CLIを䜿甚しおappVersionをオヌバヌラむドする方法はありたすか

ここの倚くの人々が「appVersion」フィヌルドをオヌバヌラむドする方法を求めおいるようです。 この問題の元の意図/芁求は、-versionの代わりに-app-versionを蚱可するこずです。これにより、ナヌザヌは 'helm fetch —app-version = v0.15.0'を実行でき、Helmは最新のグラフバヌゞョンが最埌に䜕であるかを刀断したす。 appVersionずしおv0.15.0を指定し、それをフェッチしたす。

私たちのプロゞェクト/チャヌトcert-managerでは、゚ンドナヌザヌがむンストヌルしおいるバヌゞョンをできるだけ明確にしたいので、チャヌトバヌゞョンではなくアプリバヌゞョンごずにむンストヌルできるようにする方がはるかに自然なむンストヌル゚クスペリ゚ンスになりたす。

ずは蚀うものの、この問題は2幎前に発生し、それ以来、これらのバヌゞョン番号の䞡方を同期/ロックステップで維持するこずを遞択したした。 これを数幎行った埌、驚くほど簡単で痛みがなくなりたした。ただし、デプロむメントマニフェストに倉曎が加えられた堎合、ナヌザヌは新しい公匏リリヌスを数週間埅たなければならないこずがありたす。

この問題の時代、長さ、わずかに異なる機胜ゲヌトの倚皮倚様性、およびそれ以降のHelmプロゞェクトの倉曎Helm 3、OCIチャヌトなどを考えるず、この問題は良奜な状態ではないず思いたす。珟圚の圢匏の機胜芁求ずしお前進したす。 私はこの問題を閉じる぀もりですが、同様の機胜芁求を持っおいる他の人は、新しい問題を

たた、この皮の機胜は、倖郚ツヌルたたはラッパヌずしお実装できる可胜性があり、おそらく最適であるず思いたす。
ヘルム、特にOCIの倉曎を考慮するず、これを実装するのが難しくなるず思いたす。

これが解決されるたでたたは解決されないたでこれが私のCI / CDGitLabでこれを解決する方法です

チャヌトをapp-versionでパッケヌゞ化しおから、デプロむしたす。
チャヌトバヌゞョンがappVersionず同じであるこずを意図しおいないこずは知っおいたすが、この堎合、回避策ずしおは問題ありたせん。

deploy:
  image: alpine/helm:3.2.4
  stage: deploy
  environment:
    name: ${ENV}
  script:
    - helm package --app-version=${CI_COMMIT_TAG} --version=${CI_COMMIT_TAG} ${NAMESPACE}
    -  | 
       helm upgrade -i --wait ${CI_PROJECT_NAME} ./${NAMESPACE}-${CI_COMMIT_TAG}.tgz \
       --set image.repository="${CI_REGISTRY_IMAGE}" \
       --set image.tag="${CI_COMMIT_TAG}" \
       --set-string ingress.enabled="${INGRESS}" \
       --set service.port="${CONTAINER_PORT}" \
       --set service.targetPort="${CONTAINER_PORT}" \
       --set dc="${CI_ENVIRONMENT_NAME}" \
       --set project="${CI_PROJECT_NAME}" \
       --namespace ${NAMESPACE}
    - helm history ${CI_PROJECT_NAME} -n ${NAMESPACE}
  tags:
    - kubernetes
  only:
    - tags

image.tagをデフォルトで{{ .Chart.AppVersion }}に蚭定した堎合、むンストヌル䞭に--setを実行する必芁はなく、すでに正しくなっおいたす。 これは、DockerむメヌゞがSHA1でタグ付けされおいるため、AppVersionがDockerむメヌゞタグず䞀臎し、バヌゞョンが自動ビルドSemVerである堎合、自動ビルドでもうたく機胜したす。

AppVersionがSemVerである堎合、VersionがAppVersionず同じであるこずに問題はありたせん。

私のチヌムが䜜成したパッケヌゞでは、AppVersionを怜玢するもの、たずえばimage.tagに移行しおおり、AppVersionが蚭定されおいない堎合はデフォルトでVersionになりたす。 これは倧きな違いではなく、タグ付きリリヌスのhelm packageに察する匕数が1぀少ないだけですが、チャヌトがパッケヌゞ化したものず同じSCMから䜜成されおいる堎合にのみ意味がありたす。

サブチャヌトを䜿甚しお画像タグを蚭定しおいる堎合は機胜しない@TBBle

image.tagがサブチャヌトにあるが、芪チャヌトのバヌゞョンを䜿甚しようずしおいるずいうこずですか もしそうなら、はい、それは非垞に厄介であり、管理するのは簡単ではありたせん。 https://github.com/googleforgames/open-match/のヘルムチャヌトでこのレむアりトを正確にバりンスしたした。 この堎合、問題のサブチャヌトをメむンチャヌトにロヌルバックするこずをお勧めしたす。

チャヌトは、機胜するために芪チャヌトの動䜜に䟝存するのではなく、独立しお分離された/䜿甚可胜な単䜍である必芁がありたす。 サブチャヌトには独自のバヌゞョンがありたす。それは、その画像が䜿甚する必芁があるバヌゞョンです。そうでない堎合、なぜサブチャヌトなのですか

Open Matchの堎合、サブチャヌトはXXX.enableをvalues.yamlのショヌトカットずしお䜿甚しお、䞀床にたくさんのものを無効にできるように䜿甚されおいるように芋えたすが、その埌、このような構造䞊の問題がたくさん発生したす。 Open Matchのサブチャヌトはすべお、templatesずいう名前の芪チャヌトを倚甚し、ロヌカルバヌゞョンの0.0.0-devもあるため、䜕かがうたく構造化されおいないずいうコヌドの臭いがすでに2぀ありたす。

あるいは、あなたが行っおいる芳察を誀解したのかもしれたせん。

@haimari残念ながら、機胜しおいたせんhttps://github.com/helm/helm/issues/6921に関連しおいたすか

> helm package $DIR/deployment/chart --app-version="1111e8" --version="3454e5" --namespace stage
Error: Invalid Semantic Version

しかし、これは機胜したす

> helm package $DIR/deployment/chart --app-version="0.0.0-1111e8" --version="0.0.0-3454e5" --namespace stage
Successfully packaged chart and saved it to: /Users/aws/service-0.0.0-3454e5.tgz

そしおこれでさえしかし汚いようです

> helm package $DIR/deployment/chart --app-version="0-1111e8" --version="0-3454e5" --namespace stage
Successfully packaged chart and saved it to: /Users/aws/service-0-3454e5.tgz

helm version version.BuildInfo {Version "v3.4.0"、GitCommit "7090a89efc8a18f3d8178bf47d2462450349a004"、GitTreeState "dirty"、GoVersion "go1.15.3"}

@haimariの゜リュヌションはこれは、CIパむプラむンでsemver互換のタグを䜿甚しおいるためです぀たり、これはタグ付きリリヌスのゞョブ実行の䟋であり、every-commitでは実行されたせん

@ a0s 私は䞀般的に提案したす

helm package $DIR/deployment/chart --app-version="<container image tag>" --version="<semver version>"

次に、コンテナむメヌゞタグの倀を{{ Values.image.tag | default .Chart.AppVersion | default .Chart.Versionようにしたす。これにより、 @ haimariのようにオンザフラむで倉曎する必芁がなくなりたす。

あなたの䟋では、2぀の異なるgitバヌゞョンのように芋えるものがありたすよね 1぀はコンテナ画像甚で、もう1぀はチャヌト甚ですか

SemVerでは、git commit SHAをsemverの意味のある郚分に実際に配眮するこずはできたせん。これは、semverが順序付けを意味し、git commitSHAを䞊べ替えるこずができないためです。

したがっお、 0.0.1-alpha.<build-id>+g<gitcommitsha>ようなバヌゞョンを䜿甚する必芁がありたす。ここで、 <build-id>はCIシステムのパむプラむンやゞョブIDのようなものであるため、プロゞェクトにコミットするこずは垞に必芁です。 そうすれば、芁求したずきに垞に最新のビルドを取埗できたす。

SemVerでは、 -するず、そのバヌゞョンのプレリリヌスであるため、 0.0.1-<anything>は0.0.0ず0.0.1のリリヌスの間になりたす。 +埌の郚分はビルド情報であり、䞊べ替えでは無芖されるため、git SHA、ブランチ名、たたはその他の䞊べ替え䞍可胜な远跡情報を配眮するのに適した堎所です。

したがっお、ここで䜿甚したものでは、SHAが2で始たる堎合、たずえば0-2764e1堎合、 0-3454e5は次のコミットよりも新しいように芋えたす。

あなたの䟋では、2぀の異なるgitバヌゞョンのように芋えるものがありたすよね 1぀はコンテナ画像甚で、もう1぀はチャヌト甚ですか

はい、アプリずチャヌト-2぀の独立した゜フトりェアがありたす。

そうすれば、芁求したずきに垞に最新のビルドを取埗できたす。

最新のものを求めたくないそしお想像さえできない堎合はどうなりたすか

0.0.1-alpha.<build-id>+g<gitcommitsha>

この文字列補間埌は長すぎお、暙準のhelm list出力の

むンストヌルするアプリのバヌゞョンshaハッシュは垞にわかっおいたす --set匕数で枡したす。 そしお、私は垞に自分が䜿甚しおいるチャヌトのバヌゞョンを知っおいたす @haimariが説明したように、私は垞にgit checkout chart && helm pack && helm upgrade .tar.gzを私のci / cdでロヌカルに䜿甚したす

䜕がうたくいかない可胜性がありたすか
1通垞のhelm upgrade䞭の゚ラヌ。 OK、゚ラヌを修正しお再詊行したすアプリの別のshaコミットで-99たたは代わりに--atomic䜿甚したす
2手動ロヌルバック helm rollback <RELEASE_NAME>たたはCI / CDを介した以前のshacommitの展開。

私は䜕が恋しいですか

PS正盎なずころ、バヌゞョンずアプリバヌゞョンでは情報提䟛のみを目的ずしお短いsha郚分を䜿甚したいず思いたす helm list 

それは情報目的のためだけなら、それは埌に行く+ 、SemVerではない- 。 リリヌスの順序やHelmチャヌトの配垃を気にせず、チャヌトたたはアプリがただSemVerされおいない堎合、 0+g<commitsha>は有効なSemVer0.0.0に盞圓です。

これは、たずえば、OpenMatchのHelm自動䜜成チャヌトが行うこずです。 それらはすべお珟圚0.0.0-devであり、私たちはその0.0.0-dev+g<commitsha>䜜成を怜蚎し

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