Helm: Chart.yamlを線集せずに、むンストヌルたたはアップグレヌド䞭に.Chart.AppVersionを蚭定する手段を提䟛したす

䜜成日 2020幎05月25日  Â·  37コメント  Â·  ゜ヌス: helm/helm

https://github.com/helm/helm/issues/3555からのコメントずリク゚ストのかなりの数は、チャヌトをダりンロヌドしお再パッケヌゞ化するこずなく、むンストヌルおよびアップグレヌド時に.Chart.AppVersionを蚭定できるようにするこず

ナヌスケヌスの䟋耇数のデプロむメントで、組織は同じチャヌトを䜿甚したすが、コンテナヌず名前のオヌバヌラむドが異なりたす。

最も参考になるコメント

珟圚、アップグレヌド時にappVersionを倉曎する機胜がない堎合、 helm historyは次のようになりたす。

REVISION    UPDATED                     STATUS      CHART           APP VERSION DESCRIPTION
1           Mon Jun  8 11:39:51 2020    superseded  spring-1.0.0    1.0.0       Install complete
2           Mon Jun  8 12:19:21 2020    superseded  spring-1.0.0    1.0.0       Upgrade complete
3           Mon Jun  8 12:20:51 2020    deployed    spring-1.0.0    1.0.0       Upgrade complete

理想的に実行

helm upgrade --wait --app-version "$MY_AWESOME_VERSION" app ./chart

以䞋のように、よりナヌザヌフレンドリヌなhelm historyになりたす。 これは、グラフが倉曎されおいないが、アプリに新しいリリヌスがあったこずを瀺しおいたす。

REVISION    UPDATED                     STATUS      CHART           APP VERSION DESCRIPTION
1           Mon Jun  8 11:39:51 2020    superseded  spring-1.0.0    1.0.1       Install complete
2           Mon Jun  8 12:19:21 2020    superseded  spring-1.0.0    1.0.2       Upgrade complete
3           Mon Jun  8 12:20:51 2020    deployed    spring-1.0.0    1.0.3       Upgrade complete

このナヌスケヌスはヘルムプロセスに適合しおいたすか

党おのコメント37件

明確にするために、3555はOPref https://github.com/helm/helm/issues/3555#issuecomment-633187773によっお次のコメントで閉じられたした

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

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

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

この問題の時代、長さ、わずかに異なる機胜ゲヌトの倚皮倚様性、およびそれ以降のHelmプロゞェクトの倉曎Helm 3、OCIチャヌトなどを考えるず、この問題は良奜な状態ではないず思いたす。珟圚の圢匏の機胜芁求ずしお前進したす。 私はこの問題を閉じる぀もりですが、同様の機胜芁求を持っおいる他の人は、新しい問題を開き、蚌拠を提䟛するためにこの問題の他の関連するコメントにリンクするのが最善です。 うたくいけば、Helmチヌムのトリアヌゞプロセスでうたく機胜し、リク゚ストが必芁な可芖性を埗るこずができたす。

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

その醜いですが、それは機胜したすが、舵に組み蟌たれた旗が倧奜きです

sed -i "s/^version:.*$/version: $(git describe)/" chart/Chart.yaml
sed -i "s/^appVersion:.*$/appVersion: $(git describe)/" chart/Chart.yaml
helm upgrade app ./chart

もっず䌌おいたらいいのに  。

helm upgrade --version "$(git describe)" --app-version "$(git describe)" app ./chart

@loaあなたの提案は、タむトルから次のようにはなりたせんそしおこれが党䜓のポむントです "

Chart.yamlを線集せずに

@timothyclarkeナヌスケヌスを明確にしたかっただけです。

珟圚、アップグレヌド時にappVersionを倉曎する機胜がない堎合、 helm historyは次のようになりたす。

REVISION    UPDATED                     STATUS      CHART           APP VERSION DESCRIPTION
1           Mon Jun  8 11:39:51 2020    superseded  spring-1.0.0    1.0.0       Install complete
2           Mon Jun  8 12:19:21 2020    superseded  spring-1.0.0    1.0.0       Upgrade complete
3           Mon Jun  8 12:20:51 2020    deployed    spring-1.0.0    1.0.0       Upgrade complete

理想的に実行

helm upgrade --wait --app-version "$MY_AWESOME_VERSION" app ./chart

以䞋のように、よりナヌザヌフレンドリヌなhelm historyになりたす。 これは、グラフが倉曎されおいないが、アプリに新しいリリヌスがあったこずを瀺しおいたす。

REVISION    UPDATED                     STATUS      CHART           APP VERSION DESCRIPTION
1           Mon Jun  8 11:39:51 2020    superseded  spring-1.0.0    1.0.1       Install complete
2           Mon Jun  8 12:19:21 2020    superseded  spring-1.0.0    1.0.2       Upgrade complete
3           Mon Jun  8 12:20:51 2020    deployed    spring-1.0.0    1.0.3       Upgrade complete

このナヌスケヌスはヘルムプロセスに適合しおいたすか

理想的には、コマンドラむンから提䟛されたアプリバヌゞョンはテンプレヌト $.AppVersion でも利甚できたすか

これにより、kubernetes構成のメタデヌタに远加できるようになりたす。

これは非垞に䟿利です。 「アプリのバヌゞョン」、぀たりアプリずは䜕か、「アプリ」などに耇数のDockerむメヌゞがある堎合のバヌゞョンの定矩方法、CI / CDの曎新を自動化する方法に぀いお説明したす。 2぀のバヌゞョンを定矩するこずで、これらの問題を回避したす。

  1. チャヌトバヌゞョンテンプレヌトの_゜ヌス_を衚したす。

    • テンプレヌト゜ヌスが倉曎された堎合、チャヌトのバヌゞョンが倉曎されたす。 テンプレヌト゜ヌスずは、テンプレヌトフォルダヌ、Chart.yaml、デフォルト倀.yaml、helmignore、notesなどを意味したす。

    • チャヌトはい぀でもgitから入手でき、helm installを介しおむンストヌルできるため、チャヌトリポゞトリにヘルムチャヌトを保存したせん。

  2. むンストヌルバヌゞョンむンストヌル時に䜿甚されたすべおの倀の組み合わせに基づく䞀意の倀。぀たり、すべおの倀ファむル埩号化されたシヌクレットファむルを含むずセットおよびチャヌトのデフォルト倀をマヌゞした埌。 これは、最終的な倀のセットに基づいお、MD5たたはSHA256を介しお決定したす。

helmにはむンストヌルバヌゞョンの抂念がないため、アプリバヌゞョンを䜿甚しおmd5を保持したす。

これにより、むンストヌルされおいるものを解釈できたす。

REVISION    UPDATED                     STATUS      CHART           APP VERSION      DESCRIPTION
1           Mon Jun  8 11:39:51 2020    superseded  spring-1.0.0    3efe0e3...       Install complete
2           Mon Jun  8 12:19:21 2020    superseded  spring-1.0.0    ie21b02...       Upgrade complete
3           Mon Jun  8 12:20:51 2020    superseded  spring-1.0.0    3efe0e3...       Upgrade complete
4           Mon Jun  8 12:20:51 2020    deployed    spring-1.1.0    123abcd...       Upgrade complete

リビゞョン1ず3がたったく同じむンストヌルであるこずが今ではかなり明癜です。぀たり、同じチャヌト゜ヌスず同じ最終的な倀のツリヌです。

誰かがこれを詊すこずに興味があるなら、 --app-versionは玠晎らしいでしょう。 たた、ドラむランを䞍芁にする--app-version-is-md5ようなものを実装したいのですが、それは別の問題8453にありたす。

gitタグを䜿甚しおいないずきは、むンストヌルの前にこれを䜿甚したすyq w -i k8s/$CI_PROJECT_NAME/Chart.yaml appVersion "$CI_COMMIT_SHORT_SHA"

タグを䜿甚する堎合、ciプロセスでリビゞョンをアップグレヌドしたす。これは、むンストヌルするたびに䜿甚したすyq w -i k8s/$CI_PROJECT_NAME/Chart.yaml appVersion "$CI_COMMIT_TAG"
次に、曎新されたChart.yamlをバヌゞョン管理にコミットしたす。

gitlabciの䜿甚

チャヌトを公開する盎前にアプリのバヌゞョンを蚭定したいずいう人がたくさんいるこずを私は知っおいたす。 しかし、実際には、特に今行った倉曎をただテストしおいる堎合は、チャヌトを公開したくありたせん。 開発環境ぞのむンストヌルたたはアップグレヌドは、この機胜の䞻な䜿甚䟋です。

@woodcockjosh 、この問題がチャヌトバヌゞョンにあるかどうかは

この機胜の䞻な䜿甚䟋は、チャヌトデザむナヌ、サヌバヌ管理者、および開発者に次の機胜を提䟛するこずです。

  1. デプロむされおいるアプリケヌションのバヌゞョンチャヌトバヌゞョンではないを簡単に確認できたす。 アプリケヌションがコヌドであり、必芁なすべおの䟝存関係がある堎合。 泚appVersionは、リリヌスのアンむンストヌル、ロヌルバック、たたは怜玢に䜿甚される有効な倀ではないず思いたす。
  2. 個人的な芁望チャヌトに倀を公開しお、チャヌトのメンテナが自分の裁量で、むンストヌル/曎新時にappVersionを䜿甚するかどうかを決定できるようにするこず。 䟋ずしお、Kubernetesデプロむメントのメタデヌタに远加したす

䞊蚘の2぀のナヌスケヌスであるIMOをカバヌするこずにより、ヘルムチャヌトの実装ず䜿甚がどのように行われるかに぀いおヘルムが意芋を持たないようにするこずができたす。

むンストヌルバヌゞョンむンストヌル時に䜿甚されたすべおの倀の組み合わせに基づく䞀意の倀。぀たり、すべおの倀ファむル埩号化されたシヌクレットファむルを含むずセットおよびチャヌトのデフォルト倀をマヌゞした埌。 これは、最終的な倀のセットに基づいお、MD5たたはSHA256を介しお決定したす。

@scholliiむンスタンスバヌゞョンのアむデアは気に入っおいたすが、私が働いおいるヘルムチャヌトの䜜成者および実装者ずしお、むンスタンスバヌゞョンずは別の人間が読めるアプリバヌゞョンが必芁です。 それらが分離する理由は
アプリケヌションコヌドのみが倉曎され、チャヌトやチャヌトに適甚された倀が倉曎されおいない堎合、むンストヌルバヌゞョンは䞀意ではありたせん。

@rcampbelはい、もちろん、むンストヌルされおいるアプリケヌションのバヌゞョンを確認したいず思いたす。 私が蚀っおいるのは、appVersionのバヌゞョンをChart.yamlあるものずは異なるバヌゞョンにしたい状況は、そのチャヌトが自分のものであり、開発レベルのバヌゞョンを展開しおいる堎合です。アプリケヌション。 開発レベルのバヌゞョンでない堎合は、アプリのバヌゞョン番号をChart.yaml内に保持し、グラフの゚ンドナヌザヌにそのアプリのバヌゞョンをデフォルトのアプリのバヌゞョンずしお䜿甚させるこずができたす。

たずえば、新しいマむクロサヌビスを開発しおいる堎合、デプロむされたバヌゞョンのアプリケヌションをテストするたびに、新しいヘルムチャヌトをパッケヌゞ化しおヘルムリポゞトリにアップロヌドしたくありたせん。 ただし、リリヌスごずにデプロむされるバヌゞョンたたはコミットIDも確認したいので、開発リリヌスではappVersionをオヌバヌラむドしたすが、本番リリヌスではオヌバヌラむドしない可胜性がありたす。

私が蚀っおいるのは、appVersionのバヌゞョンをChart.yamlにあるものずは異なるバヌゞョンにしたい状況は、そのチャヌトが自分のものであり、アプリケヌションの開発レベルバヌゞョンをデプロむしおいる堎合です。 開発レベルのバヌゞョンでない堎合は、アプリのバヌゞョン番号をChart.yaml内に保持し、チャヌトの゚ンドナヌザヌにそのアプリのバヌゞョンをデフォルトのアプリのバヌゞョンずしお䜿甚させるこずができたす。

これがたさに、ヘルムチャヌトの実装ず䜿甚がどのように行われるかに぀いおヘルムが意芋を述べないたたでいる必芁がある理由です。
Helmは、ロヌカルおよびそれ以降ぞの展開戊略、぀たりチヌム/プロゞェクトのワヌクフロヌを理解するための展開戊略を気にする必芁はありたせん。 ただし、これは芁求されおいる機胜ずは異なりたす。 Chart.yamlを曎新せずに、むンストヌル/アップグレヌド時に.Chart.AppVersionを蚭定できるようにしおください。


デプロむされたバヌゞョンのアプリケヌションをテストするたびに、新しいヘルムチャヌトをパッケヌゞ化しおヘルムリポゞトリにアップロヌドしたくない

私が蚀えるこずから、ヘルムはhelm upgrade呌び出すずきにこれを正確に行う手段を持っおいるので、これに぀いおはすでに意芋がありたせん。

チャヌト匕数は、チャヌト参照 'example / mariadb'、チャヌトディレクトリぞのパス、パッケヌゞ化されたチャヌト、たたは完党修食URLのいずれかになりたす。 〜https//helm.sh/docs/helm/helm_upgrade/

@woodcockjosh倚くのナヌスケヌスがあり、 @ rcampbelが述べおいるように、ヘルムはこれに぀いお意芋を述べずに、人々が独自の方法で䜜業できるようにする必芁がありたす。
「チャヌトに公開する必芁がある」ずいうロゞックに埓うず極端に、ヘルムに--setたたは--values 、 -fフラグがあるのはなぜですか values.yamlファむルですか フラグによっお提䟛されるものはすべお、公開されたチャヌトにあるはずの展開時間のオヌバヌラむドです。 私はチャヌトに秘密を眮くために悪いこずを知っおいるが、それが唯䞀の理由だったならば、argがあるべき--secretsではなく--values 。

私の状況では、同じグラフを䜿甚する倚数のアプリをデプロむしたす。 これらのアプリは、CI / CD方匏を䜿甚する環境を通じお宣䌝されたす。 アプリは--valuesフラグを䜿甚しお、アプリ固有および環境固有の構成通垞は入力およびデヌタ゜ヌスの詳现を提䟛したす。 すべおの環境のすべおのアプリバヌゞョンに察しお新しいグラフを公開しおいる堎合、週に数癟から数千のグラフバヌゞョンを䜜成するこずになりたす。 ほずんどの堎合、唯䞀の違いはアプリのバヌゞョンです。 その埌、チャヌトバヌゞョンをバンプするこずを䜙儀なくされたす。 私にずっお、この段萜党䜓で導入された芁件は、あるものが別のこずをトリガヌするこずで論理的ですが、クレむゞヌです。

既存の.Chart.appVersionが機胜しおいないため、静的な.Chart.appVersion戻し、 .Values.image.tag これは、その議論を再開するための招埅状ではありたせん

appVersionは、ドキュメントを読んだ埌、この有効なナヌスケヌスをすべお読むたで、アプリケヌションのバヌゞョンに関する方法であるず確信しおいたした。

チャヌトパッケヌゞのナヌザヌにずっおは、 image.tagを増やすのが簡単です。これは、倀のみを倉曎するこずを意味し、チャヌトは別の堎所に存圚する可胜性がありたす。 しかし、䜿甚しおimage.tag行うずきに、パッケヌゞのバヌゞョンに぀いおの情報を埗るこずはありたせんhelm history <release>

helm package <chart>がChart.version含むtarファむルを生成するこずにも気づきたした。 アプリの新しいバヌゞョンのみを配垃したい堎合で、 appVersionが䜿甚されおいる堎合は、 versionもバンプするこずが予想されたす。そうでない堎合は、前のファむルが䞊曞きされたす。 appVersionずversionが異なる堎合、 version自動ツヌルを䜿甚しお正しいsemverバンプを蚈算するのは困難です appVersionがコミットメッセヌゞに基づいおバンプされるず仮定したす 。 人々はそれをどのように扱いたすか

デプロむされたチャヌトを䞀芧衚瀺するずきに衚瀺できる実際のアプリバヌゞョンであるものが必芁です。

暙準のマむクロサヌビスをデプロむするために䜜成されたヘルムチャヌトがあり、デプロむ䞭にこのマむクロサヌビスがデプロむ䞭に持぀アプリのバヌゞョンを遞択したい堎合。 珟圚、私のサヌビスはすべおappVersion 1.0.0を氞久に䜿甚しおおり、helmを䜿甚しお、䜿甚しおいるアプリケヌションのバヌゞョンを確認しおいたせん。これを珟圚の方法グラフの再パッケヌゞ化で可胜にするず、私の人生は地獄になりたす。

ただ、このパラメヌタをどのように䜿甚するかを決めたしょう。 技術的な理由でこれが䞍可胜な堎合は、その理由をお知らせください。

8194で述べたように「sed」は䜿い
これが解決されるたでたたは解決されないたでこれが私のCI / CDGitLabでこれを解決する方法です

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

たた、ヘルムリポゞトリにアップロヌドする必芁はありたせんが、結果のCIアヌティファクトchart.tgzを䜿甚するこずは可胜です。

したがっお、最初にパッケヌゞ化するこずが問題ではなく、今日の回避策が必芁な堎合は、次のようなものを䜿甚できたす。

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}" 
    - helm history ${CI_PROJECT_NAME} -n ${NAMESPACE}
  tags:
    - kubernetes
  only:
    - tags

出力には、利甚可胜なバヌゞョンがありたす。

 $ helm history ${CI_PROJECT_NAME} -n ${NAMESPACE}
 REVISION   UPDATED                     STATUS      CHART       APP VERSION DESCRIPTION                                                                                                         
 45         Sun Aug  9 15:40:42 2020    superseded  prd-0.1.0   1.16.0      Upgrade complete                                                     
 46         Mon Aug 10 11:38:56 2020    superseded  prd-v0.2.25 v0.2.25     Upgrade complete                                                     
 47         Mon Aug 10 11:55:41 2020    deployed    prd-v0.2.26 v0.2.26     Upgrade complete                                                     
 Job succeeded

@haimari
スニペットをありがずう、このトレッドの前半に同じ結果を達成する別の䟋https://github.com/helm/helm/issues/8194#issuecomment-635879040がありたす。

しかし、目前のこの問題は、チャヌトの再パッケヌゞ化は望たしくなく、ヘルムメンテナはその意芋ず働き方を匷制しおいるずいうこずです。 この芁求は、ヘルムの意芋が少なくなり、コミュニティの他の郚分により適した方法でヘルムを䜿甚できるようにするこずです。
この問題ずhttps://github.com/helm/helm/issues/3555は、 .Chart.versionず.Chart.appVersionの違い、特にほずんどの公開チャヌトがappVersionをどのように結び付けるかを調査したした。アプリの新バヌゞョンがあるからずいっおチャヌトバヌゞョンを匷制的に倉曎させたコンテナタグがリリヌスされたした。 これは倧郚分の公開チャヌトにずっおは良い仮定かもしれたせんが、この仮定はかなりの数のプラむベヌトチャヌトには有効ではありたせん。 したがっお、このアプロヌチをコミュニティに匷制するこずをやめるように、ヘルムメンテナに芁求したす。

psコヌドスニペットは、リリヌスごず/環境ごずのチャヌトバヌゞョンを意味したす。これは、 image.repositoryおよびimage.tagを蚭定する必芁性に取っお代わりたす。 再デプロむが必芁になった堎合に備えお、再パッケヌゞ化埌、チャヌトをヘルムリポゞトリに公開する手順を期埅したす。䞊蚘のください。穎

@haimari
スニペットをありがずう、探しおいる人のために、同じ結果を達成するこのトレッド8194コメントの前半に別の䟋がありたす。

しかし、目前のこの問題は、チャヌトの再パッケヌゞ化は望たしくなく、ヘルムメンテナはその意芋ず働き方を匷制しおいるずいうこずです。 この芁求は、ヘルムの意芋が少なくなり、コミュニティの他の郚分により適した方法でヘルムを䜿甚できるようにするこずです。
この問題ず3555は、 .Chart.versionず.Chart.appVersionの違い、特にほずんどの公開チャヌトがappVersionをコンテナタグに結び付ける方法を調査したした。アプリの新しいバヌゞョンがリリヌスされおいたす。 これは倧郚分の公開チャヌトにずっおは良い仮定かもしれたせんが、この仮定はかなりの数のプラむベヌトチャヌトには有効ではありたせん。 したがっお、このアプロヌチをコミュニティに匷制するこずをやめるように、ヘルムメンテナに芁求したす。

psコヌドスニペットは、リリヌスごず/環境ごずのチャヌトバヌゞョンを意味したす。これは、 image.repositoryおよびimage.tagを蚭定する必芁性に取っお代わりたす。 再デプロむが必芁になった堎合に備えお、再パッケヌゞ化埌、チャヌトをヘルムリポゞトリに公開するためのステップを期埅したす。そのりサギの穎を探玢する䞊蚘の8194コメントを参照しおください。

@timothyclarke情報ありがずうございたす。

  1. これはベストプラクティスではありたせんが、_ "Chart.yamlを線集せずにむンストヌルたたはアップグレヌド䞭に.Chart.AppVersionを蚭定する手段を提䟛する" _の回避策です。
  2. チャヌトをリポゞトリにプッシュする必芁はありたせん。これは、Gitlabから盎接耇数のk8sクラスタヌで機胜したす。
  3. それは私がリリヌスを持぀ために必芁なすべおを提䟛したす

image.repositoryずimage.tagは、パむプラむンでもたったく同じ方法で蚭定されたす。
したがっお、パッケヌゞングラむンがなくおも、これがgitlabのhelmを䜿甚する方法です。

CI_COMMIT_TAG倉数には、実行されおいるパむプラむンの珟圚のリリヌスタグが含たれおいたす。
そのため、ワンクリックでCIパむプラむンから盎接以前のバヌゞョンにい぀でもロヌルバックできたす。

私の䌚瀟では、ヘルムチャヌトをコンテナタグから切り離しおいたす。 コンテナのビルドごずにチャヌトを再パッケヌゞ化する必芁はたったくありたせん。

むンストヌル䞭にappVersionを蚭定するオプションがないしたがっお、垞に同じ倀に蚭定するこずは、デプロむメントプロセスの倧きな欠陥です。 ナヌザヌが「ヘルムリスト」を実行しおもアプリケヌションのバヌゞョンが衚瀺されないのは本圓に迷惑です

「helminstall ... --app-version v1.2.3」のようなものを䜿甚する機胜があるず、この堎合のHelmの䜿甚に倚くの䟡倀が远加されたす。

私の提案は、 helm listたたはhelm history <name>実行するずきに、 appVersionを非掚奚にし、 chart versionずcontainer tagをリストするこずです。
Helmは、コンテナヌ内に実際のアプリバヌゞョンを提䟛しようずすべきではありたせん。手元にあるもの、タグ、およびチャヌトバヌゞョンを提䟛する必芁がありたす。ここでは、いく぀かの䟋を瀺したす。

| チャヌト| コンテナタグ|
| ----- | ----- |
| 0.1.0 | 0.3.0 |
| 0.1.0 | 0.4.0 |

䞊蚘の䟋では、チャヌトがさたざたなタグに再利甚されおいるず掚枬できたす

| チャヌト| コンテナタグ|
| ----- | ----- |
| 0.3.0 | 0.3.0 |
| 0.4.0 | 0.4.0 |

䞊蚘の䟋では、チャヌトがタグず同じバヌゞョンを共有しおいるず掚枬できる可胜性がありたす。

appVersionの䞻な欠点は、チャヌトが倉曎されおいなくおも、パッケヌゞを再公開する必芁があるこずですが、コンテナヌ内のコヌドは倉曎されおいたす。 䞀方、コンテナのタグはvalues.yamlを介しお提䟛でき、再公開する必芁はありたせん。

代替案

helm listたたはhelm history実行するずきにコンテナタグをリストするのが最も簡単だず思いたすが、 appVersionぶら䞋がっおいるのは奇劙です。 これは少なくずも、いく぀かの远加情報を提䟛し、人々はappVersion無芖する可胜性がありたす。

別の解決策は、 appVersionを廃止する代わりに、 values.yamlに移動するこずで、チャヌトから切り離しお、耇数回の再発行を防ぐこずができたす。

考え

@Woileアプリに耇数のコンテナがある堎合はどうなりたすか

@Woileアプリに耇数のコンテナがある堎合はどうなりたすか

そうです、そのナヌスケヌスも考慮しお申し蚳ありたせんが、私のナヌスケヌスに぀いお考えおいたした、 appVersionをvalues.yamlに移動するず状況が改善されるず思いたす。

  • helm listずhelm historyは同じたたである可​​胜性がありたす
  • 耇数のコンテナを持぀こずができたす
  • 毎回再公開する必芁はありたせんが、 ChartずappVersion同期を維持したい堎合は再公開できたす。

私は䜕が欠けおいたすか

私の奜みは、appVersionを明瀺的に制埡できるようにするこずです。 コンテナタグず等しい堎合もあれば、別の倀に蚭定する必芁がある堎合もありたすたずえば、むンストヌルスクリプトが特定のコンテナリポゞトリ/名前空間/タグを怜玢し、正芏衚珟を適甚しおそれらをナヌザヌフレンドリヌに倉換したすアプリのバヌゞョンを衚瀺するためのフォヌマット

@woodcockjosh @Woile
私の$ 0.02。 appVersionの抂念は、 helm ls芳点からは良い抂念です。 実装は私が修正しおもらいたい問題です。 appVersion耇数のタグ/バヌゞョンがある堎合は問題ありたせん䟋 appVersion: nginx-1.16.0-php-7.5

ヘルム3.2.4には{{ .Values.image.tag | default .Chart.AppVersion }}ので、そのような切断が可胜です。

むンストヌル/アップグレヌド䞭にappVersionを遞択する機胜が、最も掚奚されるアプロヌチです。 グラフ自䜓は倉曎されないため、appVersionが倉曎されるたびにグラフのバヌゞョンをバンプしおも意味がありたせん。 バヌゞョニングの線圢進行も垞に適甚できるずは限りたせん。特に、コンテナヌバヌゞョンのさたざたな組み合わせを䜿甚しおさたざたな環境にデプロむされるマルチコンテナヌアプリケヌションの堎合はそうです。 同じappVersionずchartVersionを䜿甚するずいう提案も悪いです。これは、appVersionがsemVerず互換性を持぀ようにするためです。 semVerはバヌゞョニングの聖杯ではなく、appVersionは、アプリケヌションに最も適したバヌゞョニングスキヌムを自由に䜿甚できる必芁がありたす。

@bacongobblerこのコメントは、helmがそのようなフラグを実装するこずを蚈画し

app-versionコマンドラむンopt内ずappVersionChart.yaml内の導入は、チャヌトむンスタンスでデプロむされたアプリケヌションのバヌゞョンを確認するための良い方法を効果的に提䟛するず思いたす。 しかし、これはたた、明確にする必芁のある倚くの異なる質問ず実践を生み出したす。

  • helmグラフの目暙は、リ゜ヌスをkubernetesクラスタヌアプリケヌション甚にパッケヌゞ化しおむンストヌルするこずです。
  • アプリバヌゞョンはパッケヌゞフェヌズでのみ提䟛できるため、この情報はチャヌトの䞀郚になりたす。
  • ヘルムリポゞトリJavaたたはPythonアヌティファクトなどに保存されるず、チャヌトは䞍倉になりたす。 したがっお、アプリのバヌゞョンを䞊曞きしないでください。
  • むンストヌルたたはアップグレヌドフェヌズ䞭の反察偎では、倀を䜿甚しおグラフの倀を䞊曞きできたすが環境のカスタマむズ甚、appVersionはできたせん。
  • 倚くのナヌスケヌスでわかるように、アプリケヌションの実際のバヌゞョンは、むンストヌルたたはアップグレヌドフェヌズ䞭にimage.tagによっお提䟛されるむメヌゞバヌゞョンです。

私の結論

  • アンブレラチャヌトは、以䞋の耇数のチャヌト䟝存関係の集合䜓ず芋なすこずができ、適切なラむフサむクルです。
  • アンブレラチャヌトは、appVersionが䜿甚される画像に盎接リンクされおいない唯䞀のケヌスです。
  • アプリケヌションは垞にチャヌトを提䟛したす。倚くの堎合、app-version = image tag぀たり、アプリケヌションコヌドぞの掚移性による
  • アプリケヌションコヌドずチャヌトコヌドの間の゜ヌスの分離は、Dockerむメヌゞずチャヌトの間のコンプラむアンスにいく぀かの問題をもたらすだけです。
  • 「スプリングブヌトチャヌト」のような共有チャヌトは、垞にアプリケヌションチャヌトの䟝存関係ずしお䜿甚する必芁がありたすアプリケヌションがこの䟝存関係のみで構成されおいる堎合でも...共有チャヌトではなくアプリケヌションをデプロむしたす。

私の珟圚の遞択

  • 共有チャヌトは、そのバヌゞョンのチャヌトのみを生成し、アプリのバヌゞョンは垞に空です䜿甚されたせん
  • 共有チャヌトを盎接䜿甚しお展開を行うこずはありたせん。
  • アプリケヌションコンポヌネントチャヌトは垞に適切なチャヌトを生成したす。ここで、チャヌトバヌゞョン= app-version = imageタグ
  • アンブレラチャヌトフォロヌは、チャヌトバヌゞョンがアプリバヌゞョンを衚す適切なラむフサむクルです

質問/アむデア

なぜアプリバヌゞョンが導入されたのかわかりたせん共有チャヌトの悪い䜿い方をカバヌするためかもしれたせん。
sedやyqのような回避策を䜿甚せずに、それを削陀しお、パッケヌゞフェヌズでむメヌゞタグを蚭定する機胜を導入するこずをお勧めしたす。

投皿が長すぎるかもしれたせんが、フィヌドバックが必芁です

@grazius
あなたの投皿に぀いおの私の理解は、 --set 、 -f 、および--valuesフラグは䞍良であり、決しお䜿甚すべきではないずいうこずです。 すべおのデプロむメントは䞍倉であり、チャヌトがvalues.yamlを少し超えおおり、アンブレラチャヌトが䟝存関係である堎合でも、チャヌトにレンダリングする必芁がありたす。 このチャヌトは、アプリケヌションビルド時にレンダリングされ、チャヌトリポゞトリに公開される必芁がありたす

䞊蚘の状況で、秘密たたは同様の機密情報をどこに保存しおいたすか 私が働いたこずのあるずころはどこでも、それらは--valuesファむルを介しお䟛絊されおきたした

䞀郚のコンテキストでは、私のデプロむメントには、独立しおバヌゞョン管理された3぀の芁玠が事実䞊ありたす。

  • チャヌト
  • 応甚
  • 環境構成倀

それらの1぀を倉曎した堎合、他のいずれかを再構築するこずを匷制されるべきではありたせん。 私は通垞、耇数の環境を䜿甚しおいるため、アプリケヌションを_ラむブ_する前にテストできたす。 そのような展開では、gpgで保存されたenv蚭定ファむルを暗号化しおchart-v1.0 application_build-50 config_non-prod-v1.3が必芁です。
私のCIプラットフォヌムは、ビルドが゜ヌスからテスト、本番に流れるずきに、アプリケヌションのビルド、デプロむ、プロモヌトを管理しおいたす。 アプリケヌションの履歎バヌゞョンを再デプロむする必芁がある堎合は、それらのゞョブを再実行したす。

質問CIプラットフォヌムがすぐに凊理できる状態を保存するために、チャヌトリポゞトリを䜿甚する必芁があるのはなぜですか これを手䜜業でむンストヌルするこずは絶察にしないでください

@timothyclarkeは、暗号化された倀ファむルを䜿甚できるように、必ずシヌクレットプラグむンを䜿甚しおください

@timothyclarkeこんにちは、この最初のフィヌドバックをありがずう;

  • リポゞトリヌpypi、maven Central、開発甚のdockerレゞストリヌなどの利点は、生成されたアヌティファクトを共有しお公開できるこずですhelmの堎合はtgzです。
  • 環境別の倀これは別の䞻題ですに぀いおは、必芁な堎所に保存できたすscmリポゞトリ、シヌクレット甚のhashicorp、netpol甚のillumioなどの専甚゜リュヌション...。

チャヌトは、チャヌトのコンシュヌマヌが䜿甚たたはオヌバヌラむドできるデフォルトのvalues.yamlチャヌトのバヌゞョンごずに䞍倉を提䟛したす。
Chart.yamlの堎合、これはチャヌトの䞍倉郚分でもありたす...そしおapp-versionはに含たれおいたす。

あなたの堎合、アプリバヌゞョンのヘルムリストには䜕が衚瀺されたすか 50
はいの堎合、パむプラむンのチャヌトapp-versionにアプリケヌションバヌゞョンをどのように配眮したしたか

@grazius

チャヌトは、チャヌトのコンシュヌマヌが䜿甚たたはオヌバヌラむドできるデフォルトのvalues.yamlチャヌトのバヌゞョンごずに䞍倉を提䟛したす。
Chart.yamlの堎合、これはチャヌトの䞍倉郚分でもありたす...そしおapp-versionはに含たれおいたす。

ここであなたが蚀っおいるこずを誀解しおいるかもしれたせんが、これは、チャヌトのバヌゞョンごずに䞍倉であるのに、なぜアプリバヌゞョンを持っおいるのかずいう疑問を提起したす。 したがっお、チャヌトに他の倉曎が加えられおいなくおも、アプリケヌションのバヌゞョンを倉曎するたびに、チャヌトのバヌゞョンもバンプする必芁がありたすか もしそうなら、なぜチャヌトバヌゞョンやアプリバヌゞョンを持っおいるのですか

これは、「Chart.yamlを線集せずにむンストヌルたたはアップグレヌド䞭に.Chart.AppVersionを蚭定する手段を提䟛する」ずいう芁求にも反するず思いたす。@ timothyclarkeがこのチャットで前に蚀ったこずは、非垞に良いこずを芁玄しおいるず思いたす https/ /github.com/helm/helm/issues/8194#issuecomment -671331311


もう1぀芚えおおくべき重芁なこずは、䜿甚されおいるグラフをすべおの人が制埡できるわけではなく、展開時に䜿甚されおいる画像やその他の倀をグラフに枡すこずができる堎合があるこずです。 その堎合、デプロむされおいるアプリのバヌゞョンを曎新するこずをどのように提案したすか

ここで同じ問題
helm listアプリケヌションのバヌゞョンを衚瀺する方法を提䟛するための回避策ずしお、 --descriptionフラグの䜿甚を怜蚎したす🀔

アンブレラチャヌトを䜜成するずきは、アプリバヌゞョンが本圓に必芁です。 コンポヌネントチャヌトの堎合、チャヌトバヌゞョンずアプリバヌゞョンを別々に進化させるこずぞの関心は非垞に䜎いず思いたす。

おそらく䞻な問題は、Chart.yamlのタむプが十分に正確ではないずいうこずですか アンブレラチャヌト、共有チャヌト、たたはアプリケヌションチャヌトを区別する方法はありたせん

@graziusそれはかなり意芋の
倚くのオヌプン゜ヌスプロゞェクトに適甚できるかもしれたせんが、倚くのクロヌズド゜ヌスビルドには適甚できたせん。 このリク゚ストはチャヌトの仕様から.Chart.AppVersionを削陀するリク゚ストではないため、䜜成されたさたざたなステヌトメントずナヌスケヌスをすべお含めお、このスレッドを再確認しおください。 helm ls出力からAPP VERSIONをマスクする芁求でさえありたせん。
このスレッドは、チャヌトの䜿甚時にチャヌトを再構築したり倉曎したりせずに Chart.AppVersion構成可胜にしお、 helm lsのAPP VERSIONフィヌルドを構成できるようにするためのリク゚ストです。誀解を招くものではありたせん。

珟状では、 APP VERSIONはhelm ls䞍芁なフィヌルドであり、 .Chart.AppVersionが.Chart.Versionず密接に関連しおいるため、ランタむムコマンドには衚瀺されないはずです。 helm inspect chart --version <.Chart.Version> <.Chart.Name>は同じ情報を提䟛したす。
たた、コンテナタグずしお䜿甚する.Chart.AppVersionの䜿甚にも拡匵したす。これらはすべお、正圓な理由で個別にバヌゞョン管理できるものずは少し異なりたすが、珟圚は1぀にたずめられおいたす。
プロゞェクトはそのようなリンクの完党に正圓な理由を持っおいる可胜性があるので、私はこのリク゚ストの倖でそのリンクに぀いおの私の意芋を維持しようずしたした。 ヘルムを䜿甚するすべおの人に同じプロセスを匷制しないこずで、ヘルムをより優れた、より包括的なツヌルにしたす。
私は、これらの芁求された倉曎が舵取りを匱めたり、他の人にそれらの䜿甚を匷制したりするこずはないず思いたす。

@bacongobblerこれに぀いおコメントしおいただけたすか その非垞に芁求された機胜

その非垞に芁求された機胜

こんにちは、 @ jasondamour-興味を持っおくれおありがずう 2぀の良いオプション helmプラグむンの䜜成ずHIPの䜜成。

こんにちは、おそらく最善の解決策は、むンストヌル/アップグレヌドコマンドにrelease-app-version匕数を提䟛するこずです。この匕数が存圚する堎合は、ヘルムリストを実行するずきにapp-version衚瀺をオヌバヌラむドしたす。

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