TT Lab
ブログ

한국어 English 日本語 中文

はじめる
ブログ

ブログ

lookupのテストを求められていた5つのコマンドのうち2つはテンプレートを描画しない:HelmドキュメントのPRが15時間54分でマージされるまで

結果:マージ済み(2026-10-17 16:45、 helm/helm-www#2307)、同日中に helm.sh のドキュメントに反映されたことを確認。 実のところ、GitHub の PR・レビュー・チェック・タイムラインの記録、helm-www のソース(PR のベースコミット faf08ad0)、Helm のソース(タグ v3.22.1・v4.3.1)、 およびコントリビューション台帳のドラフトから取得しました。時刻は日本時間です。

目次

要約

PR helm/helm-www#2307 docs: lookup only runs for template, install and upgrade
変更内容 現在のドキュメントと Helm 3 版ドキュメントの同じ段落をそれぞれ1つずつ。10行追加、8行削除
反応 レビューボット・行コメントなし。メンテナー1人が /lgtm で承認し、後から main をマージしてチェックを再実行した後にマージ
結果 PR公開 10-17 00:50 → 承認 02:09 → マージ 16:45、約15時間54分。スカッシュマージ(アカウントが作者、メンテナーが共同作者)
lookup 은 템플릿을 그리는 명령에서만 불린다 Helm v3.22.1 소스 기준, 「실측」은 v3.18.2 로 잰 값 ① 템플릿을 그린다: template · install · upgrade 명령 렌더 엔진 lookup install · upgrade 클러스터 연결 실제로 조회 template, =client 연결 없음 빈 맵 → 실패 --dry-run=server 클러스터 연결 kube-system 찾음 가운데 줄과 아랫줄은 실측(helm template 으로) ② 템플릿을 그리지 않는다: rollback · uninstall rollback 이전 판의 저장된 매니페스트를 다시 적용 uninstall 저장된 릴리스의 자원을 지움 Helm 3 의 --dry-run 은 참/거짓, =server 는 오류 고치기 전 문서: template|install|upgrade|delete|rollback 다섯 명령 모두 --dry-run=server 로 lookup 을 시험하라고 함
図:lookup が呼び出されるコマンドと呼び出されないコマンド

1. 何が問題だったのか:私たちが目にした文面

まず率直に記します。今回は TT Lab で何かが壊れたわけではありません。ドキュメントに従っていてつまずいたわけでもなく、ドキュメントを読んでいて1つの文面が ソースと一致していないことに気づきました。コントリビューション台帳にはこの文面をどのように見つけたのかは個別に記載されていません。ただし、このドラフトは2つの Grafana チャート PR と同じ日、同じ Helm バージョン(v3.18.2)で1つのセットとして準備しました。 2つ目の記事で見たように、そのチャートのランダムな パスワードは lookup に依存しており、 helm template でレンダリングする Argo CD のようなツールでは、 lookup が何も返しません。その動作を 確認しようと Helm ドキュメントの lookup セクションを読んでいた際に見つけたものとみられます。

Helm 공식 문서 「Template Functions and Pipelines」 의 lookup セクションの最後にはこのような段落がありました(現在のドキュメントと Helm 3 版ドキュメントで共通)。

To test lookup against a running cluster, helm template|install|upgrade|delete|rollback --dry-run=server should be used instead

5つのコマンドを | でまとめて1つの文に記載したものです。このようなリストは実際に1つずつ実行してみるまで正しいかどうか分かりません。実際に実行してみると、4番目と 5番目が異なります。

コマンド(Helm v3.18.2) 結果
helm template d ./chart lookup が空のマップを返し、 nil pointer evaluating interface {}.name でレンダリング失敗
helm template d ./chart --dry-run=client 同上
helm template d ./chart --dry-run=server found: "kube-system" でレンダリング
helm rollback --dry-run=server Error: invalid argument "server" for "--dry-run" flag: strconv.ParseBool: parsing "server": invalid syntax

テストチャートは1つのテンプレートに (lookup "v1" "Namespace" "" "kube-system").metadata.name を描画するだけであり、クラスターは TT Lab の小さな クラスターです。上記の3行は文面の前半(template は =server のときにのみクラスターを見る)が正しいことの確認であり、最後の行が文面の後半が 間違っていることの証拠です。これらの値は PR の本文に記載したままであり、出力の元ファイルは個別に残していません(ドラフトはコントリビューション台帳にあります)。 helm uninstall --dry-run=server は実行せず、ソースのフラグ定義のみで確認しました(セクション2)。

2. 原因:ソースのどの行か

ドキュメントの行番号は PR のベースコミット faf08ad0 を基準とし、 Helm のソースは PR 作成時の最新の Helm 3 リリースタグ v3.22.1 を基準としています。

ドキュメント側

両方の場所で --dry-run のときに API サーバーに接続しないコマンドとしても、 --dry-run=server で lookup をテストするコマンドとしても、同じ5つのコマンドが記載されていました。

lookup はレンダリングエンジン内だけで生きる

rollback と uninstall はそのパスを通らない

Helm 4 도 확인했습니다. v4.3.1 의 uninstall 은 여전히 참/거짓 플래그입니다(pkg/cmd/uninstall.go 78行)。 rollback は他のコマンドと同じ dry-run フラグを使うように変更され(pkg/cmd/rollback.go 103行) =server )を受け取るようにはなりましたが、依然として保存されたマニフェストを取得します(pkg/action/rollback.go 207行)。フラグを受け取っても lookup は呼び出されないため、修正した文面は両方のバージョンで正しくなります。Helm 4 では直接実行していません(未実測)。

要約すると、文面の間違いは2つあります。1つは「これら2つのコマンドで lookup をテストできる」という意味が間違っていること(描画するテンプレートがない)、 もう1つは Helm 3 でそのコマンドをそのまま実行するとフラグエラーが発生することです。

3. 何を変更したか:diff の要点

2つのファイルの同じ段落から delete|rollback を除外し、なぜ除外されたのかの文を1つ追加しました。段落の残りの部分はそのままです。

 # docs/chart_template_guide/functions_and_pipelines.mdx (versioned_docs/version-3 의 같은 문단도 같게)
-Keep in mind that Helm is not supposed to contact the Kubernetes API Server during 
-a `helm template|install|upgrade|delete|rollback --dry-run` operation. To test `lookup` 
-against a running cluster, `helm template|install|upgrade|delete|rollback --dry-run=server`
-should be used instead to allow cluster connection.
+Keep in mind that Helm is not supposed to contact the Kubernetes API Server during
+a `helm template|install|upgrade --dry-run` operation. To test `lookup` against a
+running cluster, `helm template|install|upgrade --dry-run=server` should be used
+instead to allow cluster connection. `helm uninstall` and `helm rollback` do not
+render templates, so `lookup` is not called by these commands.

古い行の末尾の空白も一緒に削除されたため、削除された行数が文の数よりも多く見えます。PR の本文には、古い文の引用、2つのコマンドを除外すべき理由(ソースファイルと フラグの定義)、セクション1の表と ParseBool エラー、そしてできなかったことの2つを記載しました。「yarn build をローカルで実行していない、段落を1つだけ変更した テキストの変更である」と、「i18n/ より下位の翻訳版は修正していない」という点です。本文の最後には AI の支援を受けて作成し、自身でレビューした旨の文言を追加しました。 helm-www の CONTRIBUTING が要求する DCO 署名(Signed-off-by)と SSH 署名をコミットに付与しました。

4. 反応:承認は1時間19分、マージは15時間54分

時刻(10-17) イベント
00:43 コミット(DCO署名・SSH署名)
00:50 PR公開。サイズボットが size/S ラベルを付与、DCO通過
00:50 スペルチェック(typos)ワークフローが ジョブの実行なしで失敗として終了
00:52 Netlifyサイトのプレビュー準備完了
02:09 メンテナーが /lgtm で承認、1分後に has one approval ラベルを付与
16:42 別のコントリビューターのドキュメントPR(#2306)が先にマージされる
16:43 メンテナーが main をブランチにマージ → DCO・typos・プレビューが再度実行されすべて通過
16:45 スカッシュマージ

ボットはサイズラベルとプレビューに関するものだけで、レビューボットや行コメントはありませんでした。メンテナーの発言は /lgtm の一言だけでした。

注目すべきは 00:50 の失敗です。GitHub はこの実行を「ワークフローファイルの問題により失敗したとみられる」とだけ表示し、開始されたジョブが 1つもないためログもありません。ベースコミットの typos.yml は普通の2段階のもので、マージ直前に main をマージした後に同じワークフローが7秒で 通過しました。その間に main にマージされた2つのコミットはドキュメントのみを変更したものです。原因は確認できませんでした(未確認)。こちらの変更とは関係のない失敗の ように見えますが、正直なところ、私たちはこの失敗を台帳に記載せず、個別に対処もしませんでした。台帳の状態は終始「レビュー待ち」でした。 メンテナーが main をマージしてチェックをやり直してくれたおかげで、緑色のチェックがついてマージされました。

マージコミット dc74ea9b の作者は私たちのアカウントであり、 メッセージは私たちのコミットメッセージに PR 番号とメンテナーの Co-authored-by の1行が追加されたものになっています。main をマージしたコミットがメンテナーの名前で ブランチに入ったためです。2026-10-17 に helm.sh の該当ドキュメントページを開き、修正した文面が表示されていることを確認しました。

5. 学んだこと:オープンソースコントリビューションのコツ

Titiの一言。 「この5人の友だちに聞けばいいんだ!」というメモがありましたが、4番目と5番目の友だちはその質問を聞くことができない友だちでした。1人ずつ直接呼んでみると、5番目の友だちは「serverって何?」と聞き返してきました。メモから2人の名前を消して理由を1行書いたところ、「いいね」のスタンプをもらいました。外国語のメモが11枚まだそのまま残っていることも覚えておきます。

リンク

すべての資料は2026-10-17に閲覧しました。

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます