Hook の Weight と実行順序
複数の Hook を決定的な順序で実行します。
「Hook の Weight と実行順序」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
順序が重要
同じイベントを共有するフックが複数ある場合、実行順序が重要になることがあります。移行を実行する前に、シークレットが存在していなければならない場合などです。Helm は weight を使ってフックの順序を決めます。
重みのアノテーション
helm.sh/hook-weightアノテーションで順序を設定します。この値は、同じイベントのフックをHelmが並べ替えるために使用する数値を含む文字列です。
"helm.sh/hook-weight": "5"小さい値が先に実行される
Helmは重みを昇順に並べ替えるため、最も小さい数値が最初に実行されます。重みが-5のフックは、0のフックより先に実行され、0のフックは10のフックより先に実行されます。
負の値も使用できる
重みには負の値も指定できます。デフォルトの重みである0のフックより先にセットアップ用フックを実行したい場合は、マイナス5のような値を指定します。
"helm.sh/hook-weight": "-5"数値を引用符で囲む
重みの値は数値を表しますが、引用符で囲んだ文字列でなければなりません。引用符付きの"10"と記述してください。引用符なしの10ではアノテーションが無効になります。
annotations:
"helm.sh/hook-weight": "10"デフォルトはゼロ
重みのアノテーションがないフックは、重みゼロとして扱われます。そのため、ゼロを基準にして、ほかのフックを前後にスケジュールできます。
イベントごとにグループ化される
重みで並べ替えられるのは同じイベント内だけです。pre-installフックとpost-installフックが混在して実行されることはありません。すべてのpre-installフックが実行されてから、後続のイベントが実行されます。
同じ重みなら名前順
2つのフックの重みが同じ場合、Helmはリソース名のアルファベット順で並べ替えます。本当に順序が重要な場合は、異なる重みを指定したほうが明確です。
重みごとに完了を待つ
Helmは重みごとにフックを実行し、次の重みに進む前に各フックの準備が整うまで待機します。そのため、セットアップ用フックが完全に終了してから、それが準備するマイグレーションが開始されます。⏳
実践的な組み合わせ
重み-5のシークレット作成フックと、重み0のマイグレーションフックを考えてみましょう。Helmはシークレットが先に作成されることを保証するため、マイグレーションはそのシークレットを読み取れます。
# secret hook
"helm.sh/hook-weight": "-5"
# migration hook
"helm.sh/hook-weight": "0"重みの間隔を空ける
1、2、3のようにするのではなく、10、20、30のように重みの間隔を空けてください。後から、ほかの重みを付け直さずに新しいフックを間に追加できます。📐
確認問題
2つのpre-installフックの重みが-5と10です。どちらが先に実行されるか確認する必要があります。
まとめ
hook-weightアノテーションは、引用符で囲んだ数値によって、1つのイベントに属するフックを小さい値から大きい値へ並べ替えます。デフォルトはゼロで、同じ重みの場合は名前順になります。🔢
よくある質問
「Hook の Weight と実行順序」レッスンは無料ですか?
はい。「Hook の Weight と実行順序」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Hook の Weight と実行順序」で何を学びますか?
複数の Hook を決定的な順序で実行します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Hook の Weight と実行順序」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Hooks の仕組みと実行タイミング
- データベース移行用の pre-upgrade Job
- Hook の Weight と実行順序
- Hook の削除ポリシー