mcpField
G
gitops-cluster-debug

gitops-cluster-debug

github.com/fluxcdクラウド・DevOps2381.1k 回インストール2 日前に更新
リポジトリ

gitops-cluster-debug について

Flux に特化したスキルで、稼働中の Kubernetes クラスターにおける GitOps の配信問題を診断します。Flux と Kubernetes のリソース、イベント、ログを調べ、根本原因の分析を支援します。

主な機能

  1. 01Flux の導入状況とリソースの確認
  2. 02配信チェーンとソースの追跡
  3. 03ワークロードのイベントとログの確認
  4. 04メトリクスとマニフェスト差分の確認
  5. 05制御されたクラスター変更の案内

活用シーン

  1. 01失敗した HelmRelease の診断
  2. 02ワークロードの Flux ソース追跡
  3. 03古いソースリビジョンの調査
  4. 04ワークロードのクラッシュとイベントの確認

MCP 対応

`flux-operator-mcp` の MCP ツールでクラスターを調べ、配信パイプラインを診断します。書き込み操作の可否は、サーバーが `--read-only` で起動されているかによって異なります。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fluxcd/agent-skills --skill gitops-cluster-debug

インストール後、Claude Code で/gitops-cluster-debugを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/schemas/
alert-notification-v1.fields.txt
alert-notification-v1beta3.fields.txt
artifactgenerator-source-v1beta1.fields.txt
bucket-source-v1.fields.txt
externalartifact-source-v1.fields.txt
fluxinstance-fluxcd-v1.fields.txt
fluxreport-fluxcd-v1.fields.txt
gitrepository-source-v1.fields.txt
helmchart-source-v1.fields.txt
helmrelease-helm-v2.fields.txt
helmrepository-source-v1.fields.txt
imagepolicy-image-v1.fields.txt
imagerepository-image-v1.fields.txt
imageupdateautomation-image-v1.fields.txt
kustomization-kustomize-v1.fields.txt
ocirepository-source-v1.fields.txt
provider-notification-v1.fields.txt
provider-notification-v1beta3.fields.txt
receiver-notification-v1.fields.txt
resourceset-fluxcd-v1.fields.txt
resourcesetinputprovider-fluxcd-v1.fields.txt
evals/
evals.json
references/
flux-crds.md
troubleshooting.md

詳細

Flux クラスター・デバッガー

ライブの Kubernetes クラスターで GitOps パイプラインのトラブルシューティングを行う、Flux クラスター・デバッガーです。flux-operator-mcp MCP ツールを使用してクラスターに接続し、 Flux および Kubernetes のリソースを取得し、デリバリーパイプラインをたどり、ステータス条件、 イベント、ログを分析して、根本原因を特定します。

MCP ツール

サーバーはどのモードでも読み取り専用ツールを公開し、--read-only を指定せずに起動した場合に限り、書き込みツールも公開します。 アクションを計画する前に、実際に利用できるツールを確認してください。

目的ツールモード
Flux のインストール、コントローラー、CRD の apiVersionget_flux_instance読み取り専用
任意のリソースの読み取り(spec、status、status.events、status.inventory)get_kubernetes_resources読み取り専用
任意の kind の apiVersionget_kubernetes_api_versions読み取り専用
オブジェクト → 管理する Flux オブジェクト → ソースtrace_kubernetes_resource読み取り専用
ワークロード、その ReplicaSet/Job、Pod のイベントget_kubernetes_events読み取り専用
Pod またはワークロードのログget_kubernetes_logs読み取り専用
Pod の CPU とメモリ使用量(metrics-server が必要)get_kubernetes_metrics読み取り専用
クラスターに対するマニフェストまたは GitOps の変更のプレビューdiff_kubernetes_manifest読み取り専用
Flux のドキュメントsearch_flux_docs、read_flux_doc読み取り専用
クラスターの切り替えget_kubeconfig_contexts、set_kubeconfig_context読み取り専用
同期の開始reconcile_flux_resource書き込み
一時停止/再開suspend_flux_reconciliation、resume_flux_reconciliation書き込み
既存リソースの変更(ロールアウトの再起動、スケーリング、ファイナライザー)patch_kubernetes_resource書き込み
作成/更新/削除apply_kubernetes_manifest、delete_kubernetes_resource書き込み

一般的なルール

  • リソースの apiVersion を推測しないでください。get_flux_instance は Flux CRD の apiVersion を報告します。それ以外の kind については、get_kubernetes_api_versions を呼び出してください。
  • 多数のリソースを一覧表示する場合や、一部のフィールドだけが必要な場合は、 get_kubernetes_resources に kubectl の JSONPath 式として fields を渡してください(例: status.conditions[?(@.type=="Ready")].message、status.lastAppliedRevision)。これにより 結果を小さくできます。必要に応じて status.events と status.inventory も含めてください。
  • あるリソースをどの Flux オブジェクトがデリバリーしているかを調べるには、 fluxcd ラベルを手作業でたどるのではなく、そのリソースに対して trace_kubernetes_resource を呼び出してください。 返されるのは、各オブジェクトのステータスと適用済みリビジョンを含む完全な managedBy チェーン(Deployment → Kustomization/HelmRelease → ResourceSet → … → FluxInstance)と、 URL およびリビジョンを含む source です。チェーン内で Ready でないオブジェクトや suspended のオブジェクトは、原因究明の手掛かりになります。
  • ワークロードの問題については、ワークロードレベルでイベントとログを読み取ってください。kind: Deployment (または StatefulSet、DaemonSet、Job、CronJob)に name と namespace を指定して、 get_kubernetes_events と get_kubernetes_logs に渡してください。どちらのツールも所有する Pod を解決するため、最初に Pod 名やラベルセレクターを調べる必要はありません。
  • イベントは type: Warning、since、grep で絞り込んでください。ログは since、grep (例:error|panic|fatal|exception)、limit で絞り込んでください。クラッシュループ中のコンテナーでは previous: true を設定し、終了したコンテナーのログを読み取ってください。
  • 新しいクラスターにコンテキストを切り替えた後は、ほかの操作を行う前に必ず get_flux_instance を呼び出してください。
  • Kubernetes Secret の値はマスクされます。data のキーは取得できますが、値は空です。
  • Flux のフィールドや条件理由の意味を調べる必要がある場合は、kind とフィールドを指定して search_flux_docs を呼び出し(例:HelmRelease remediation)、read_flux_doc で該当セクションを読んでください。
クラスターの変更

ユーザーから明示的に依頼されない限り、リソースを変更しないでください。依頼された場合は、次の手順に従います。

  • まずプレビューします。マニフェストを作成して diff_kubernetes_manifest を呼び出し(アドホックなマニフェストでは owner は不要です)、その後 apply_kubernetes_manifest で適用します。Flux が管理するリソースには overwrite: true が必要です。また、Flux は次回の調整時に手動の変更を元に戻すため、永続的な修正は Git に加える必要があります。
  • インプレースで変更する場合(ロールアウト再起動のアノテーション、レプリカ数、スタックしたファイナライザーなど)は patch_kubernetes_resource を使用し、プレビューには dry_run を設定します。Flux マニフェストに存在するフィールドは、次回の調整時に元に戻されます。
  • Git に修正を反映した後、with_source: true を指定して reconcile_flux_resource を呼び出し、新しいリビジョンをすぐに取得してから、get_kubernetes_resources で確認します。
  • Flux CRD の YAML を生成する前に、assets/schemas/ のフィールドインデックスで正確なフィールド名を確認します(下の CRD 表を参照)。各行はドット区切りのフィールドパスです。ファイル全体を読む代わりに、プレフィックスで grep します(例:grep '^spec\.' assets/schemas/kustomization-kustomize-v1.fields.txt)。
  • サーバーが読み取り専用の場合(書き込みツールがない場合)は、正確な flux / kubectl コマンドまたはマニフェストの変更内容をユーザーに提示します。

クラスターのコンテキスト

ユーザーがクラスター名を指定した場合:

  1. get_kubeconfig_contexts を呼び出し、利用可能なコンテキストを一覧表示します。
  2. ユーザーが指定したクラスター名に一致するコンテキストを探します。
  3. set_kubeconfig_context を呼び出して、そのコンテキストに切り替えます。
  4. get_flux_instance を呼び出し、そのクラスターの Flux インストールを確認します。

クラスターが指定されていない場合は、現在のコンテキストでデバッグします。その場合も、Flux インストールの状態を把握するため、最初に get_flux_instance を呼び出します。

デバッグのワークフロー

ユーザーの依頼に応じて調査の深さを調整します。「HelmRelease が失敗するのはなぜですか?」のような具体的な質問では、該当するワークフローに直接進んでもかまいません。「クラスターをデバッグしてください」のような広範な依頼では、インストールの確認から始めます。

ワークフロー 1:Flux インストールの確認
  1. get_flux_instance を呼び出し、Flux Operator のステータスと設定を確認します。
  2. FluxInstance の Ready: True を確認し、ディストリビューションのバージョンとコンポーネントの一覧を記録します。
  3. コントローラーのデプロイメントの状態を確認します。すべてのコントローラーが実行中である必要があります。
  4. FluxReport を確認し、クラスター全体の調整状況の概要(種類ごとの失敗数と一時停止数)を把握します。
  5. get_kubernetes_resources を使用して、名前空間をまたいで準備完了状態でない Flux リソースを一覧表示します。fields は Ready 条件に限定し、レポートにリソース名が表示されるようにします。
  6. コントローラーが実行されていないか、クラッシュループしている場合は、デプロイメントレベルでイベントとログを確認します(ワークフロー 8)。
ワークフロー 2:HelmRelease のデバッグ
  1. get_flux_instance を呼び出し、helm-controller の状態と HelmRelease の apiVersion を確認します。
  2. get_kubernetes_resources を呼び出して HelmRelease を取得し、spec、ステータス条件(Ready、Released、Remediated)、履歴、インベントリー、イベントを分析します。
  3. HelmRelease に対して trace_kubernetes_resource を呼び出し、それを管理する Flux オブジェクトと、リビジョンおよびステータスを含むチャートソースを確認します。
  4. valuesFrom がある場合は、参照されているすべての ConfigMap リソースと Secret リソースを取得します。
  5. チャートソース(chartRef、chart.spec.sourceRef、または chart.kind: OCIRepository に対して生成された OCIRepository)を取得し、そのステータスとイベントを分析します。
  6. リリースに失敗したか、処理中の場合は、インベントリーから管理対象のワークロードを取得し、その状態を確認します。
  7. ワークロードに失敗がある場合は、ワークフロー 8(ワークロードレベルのイベント、ログ、メトリクス)に従います。
  8. 根本原因分析レポートを作成します。問題が見つからない場合は、HelmRelease、その管理対象リソース、およびコンテナーイメージの現在の状態を報告します。
ワークフロー 3:Kustomization のデバッグ
  1. get_flux_instance を呼び出し、kustomize-controller のステータスと Kustomization の apiVersion を確認します。
  2. get_kubernetes_resources を呼び出して Kustomization を取得し、spec、ステータス 条件、インベントリ、イベントを分析します。
  3. Kustomization に対して trace_kubernetes_resource を呼び出し、管理している Flux オブジェクトと、 URL、リビジョン、ステータスを含むそのソースを確認します。
  4. substituteFrom がある場合は、参照されている ConfigMap と Secret のリソースをすべて取得します。
  5. sourceRef からソースを取得し、そのステータスとイベントを分析します。ソースが Ready ではない場合(Source artifact not found)、Kustomization はアーティファクトを取得できていません。 ワークフロー 5 に進みます。
  6. Kustomization が失敗しているか処理中の場合は、インベントリから管理対象リソースを確認します。 ワークロードが失敗している場合は、ワークフロー 8 に進みます。
  7. 根本原因分析レポートを作成します。問題が見つからない場合は、Kustomization と その管理対象リソースの現在のステータスを報告します。
ワークフロー 4:ResourceSet のデバッグ
  1. get_flux_instance を呼び出し、Flux Operator のステータスと ResourceSet の apiVersion を確認します。
  2. get_kubernetes_resources を呼び出して ResourceSet を取得し、spec、 ステータス条件、イベントを分析します。
  3. ResourceSet が inputsFrom を使用している場合は、参照されている各 ResourceSetInputProvider を取得し、そのステータスを確認します。プロバイダーが Stalled または Ready: False の場合、 ResourceSet にはレンダリングする入力がありません。
  4. ResourceSet に dependsOn がある場合は、各依存先を取得し、Ready であることを確認します。 ResourceSet の依存先には、任意の Kubernetes リソース種別(他の ResourceSet、 Kustomization、HelmRelease、CRD)を指定できます。各エントリーの apiVersion と kind を確認します。
  5. ResourceSet のインベントリで生成されたリソースを確認します。生成された Kustomization、HelmRelease、その他のリソースを取得し、そのステータスを分析します。ResourceSet が Ready でも、生成されたワークロードが失敗している場合があります。確認してください。
  6. 生成された Flux リソースが失敗している場合は、ワークフロー 2 または 3 に進みます。生成されたワークロードの場合は、 ワークフロー 8 に進みます。
  7. 根本原因分析レポートを作成します。ResourceSet レベルの障害(テンプレートエラー、入力の欠落、RBAC)と、 生成されたリソースの障害を区別し、修正対象として生成されたオブジェクトではなく、ResourceSet テンプレートまたは入力を示します。
ワークフロー 5:ソースのデバッグ

ソース(GitRepository、OCIRepository、HelmRepository、 HelmChart、Bucket)が FetchFailed を報告している場合、または下流のリソースが 古いリビジョンのままになっている場合は、次の手順に従います。

  1. get_flux_instance を呼び出し、source-controller のデプロイメントステータスと ソース種別の apiVersion を確認します。
  2. get_kubernetes_resources を呼び出してソースを取得し、ステータス 条件(Ready、FetchFailed、ArtifactInStorage)、アーティファクトの リビジョン、イベントを分析します。
  3. 認証エラーの場合は、参照されている secretRef の Secret を取得し、想定されるキー名で 存在することを確認します(値はマスクされています)。シークレットを使用しないクラウドレジストリの場合は、 .spec.provider とワークロード ID を確認します。
  4. HelmChart の失敗の場合は、参照先の HelmRepository または GitRepository が先に Ready であることを確認します。 チャートのエラーは、多くの場合、上流のソースのエラーです。
  5. 最終調整時刻を .spec.interval と比較します。エラーがないのにアーティファクトが古い場合、 ソースが一時停止しているか、コントローラーが過負荷になっている可能性があります。
  6. 下流の利用者(sourceRef がこのソースを指している Kustomization/HelmRelease)を特定し、 どのリビジョンで止まっているかを記録します。
  7. 根本原因分析レポートを作成します。ソースごとの原因一覧(認証キー名、Cosign 検証、layerSelector の不一致、semver 制約)については、references/troubleshooting.md (Source Failures)を読み込みます。
ワークフロー 6:イメージ自動化のデバッグ

イメージタグが検出されない場合、または更新コミットが Git に 表示されない場合は、次の手順に従います。

  1. get_flux_instance を呼び出し、image-reflector-controller と image-automation-controller がコンポーネント一覧にあり、実行中であることを確認します。
  2. ImageRepository を取得し、ステータスの Ready、最終スキャン時刻、タグ数を確認します。 認証エラーは、secretRef または .spec.provider に原因があることを示します。
  3. ImagePolicy を取得し、Ready と status.latestImage を確認します。何も 選択されていない場合は、ポリシーのルールと実際にスキャンされたタグを比較します。
  4. ImageUpdateAutomation を取得し、Ready、最終プッシュ時刻、イベントを確認します。 その sourceRef の GitRepository に書き込み可能な認証情報が設定されていること、 また .spec.git.push.branch がユーザーの確認しているブランチであることを確認します。
  5. すべてが Ready なのにコミットが表示されない場合は、 .spec.update.path 配下のマニフェストに、正しい <namespace>:<policy-name> を指定する $imagepolicy マーカーが含まれていること、 また latestImage が Git の内容と異なることを確認します。
  6. ImageRepository → ImagePolicy → ImageUpdateAutomation → GitRepository をたどる根本原因分析レポートを作成します。
ワークフロー 7:通知のデバッグ

アラートが配信されない場合、または Webhook Receiver が調整をトリガーしない場合は、 次の手順に従います。

  1. get_flux_instance を呼び出し、notification-controller のデプロイ状況を確認します。
  2. Provider と Alert にはステータス条件がありません。notification-controller のログから配信状況を診断します。kind: Deployment、 name: notification-controller、namespace: flux-system を指定して get_kubernetes_logs を呼び出し、 Provider 名または error を grep で検索し、HTTP 401/404 やタイムアウトなどの ディスパッチエラーを確認します。
  3. Alert を取得し、.spec.eventSources がイベントを生成する想定のリソースと一致していること、 また .spec.eventSeverity がイベントを除外していないことを確認します。
  4. 参照先の Provider を取得し、.spec.type、.spec.address、および secretRef の Secret キー名を確認します。
  5. Receiver(こちらには Ready 条件があります)については、status.webhookPath と Webhook Secret を確認し、そのパスへの受信リクエストがログに記録されているか確認します。 記録がない場合、外部サービスが Webhook を呼び出していません。
  6. テストイベントを生成するには、監視対象のリソースを調整します(利用可能な場合は reconcile_flux_resource を呼び出し、それ以外の場合は flux reconcile を提案します)。 ディスパッチの試行がログに記録されるか確認します。原因の一覧については references/troubleshooting.md(Notification Failures)を読み込みます。
ワークフロー 8:ワークロードのデバッグ(クラッシュ、イメージ取得エラー、保留中の Pod)

Flux がデプロイしたワークロードの Pod に問題がある場合、または別のワークフローから 問題のあるワークロードにたどり着いた場合に使用します。

  1. ワークロードから調査を始めた場合は、対象に対して trace_kubernetes_resource を呼び出し、 それをデプロイする Kustomization、HelmRelease、または ResourceSet とソースのリビジョンを特定します。 修正箇所はそのオブジェクトまたは Git であり、稼働中のワークロードではありません。
  2. ワークロードの kind、name、namespace と type: Warning を指定して get_kubernetes_events を呼び出します。これにより、1 回の呼び出しでワークロード、 その ReplicaSet、および Pod が対象になります。 BackOff、Failed(ErrImagePull / ImagePullBackOff)、FailedScheduling、 FailedMount、Unhealthy は、それぞれ異なる原因を示します。
  3. ワークロードの kind、name、namespace と、error|fatal|panic|exception などの grep を指定して get_kubernetes_logs を呼び出します。CrashLoopBackOff の場合は previous: true も指定して読み込みます。現在のコンテナには、まだログが記録されていない場合があります。
  4. OOMKilled またはスロットリングの場合は、Pod の get_kubernetes_metrics の結果と、 ワークロード仕様のコンテナリソース制限を比較します。
  5. ワークロードの仕様と、参照されている ConfigMap/Secret(envFrom、ボリューム)を取得し、 設定の不足や誤りがないことを確認します。
  6. 配信を担う Flux オブジェクトと、そこで行うべき具体的な変更を明記した根本原因分析レポートを作成します。
ワークフロー 9:クラスターに対する変更をプレビューする

コミット前に、ローカルのマニフェスト変更がクラスターにどのような影響を与えるか確認したい場合や、クラスターとマニフェストにずれが生じていないか確認したい場合に使用します。

  1. Flux と同じ方法でマニフェストをローカルでビルドします。Kustomization のパスには kustomize build <path> --load-restrictor=LoadRestrictionsNone、ResourceSet には flux-operator build resourceset、チャートには helm template を使用します。 完全な出力を渡してください。マニフェストが一部欠けていると、存在しないオブジェクトがすべて削除として表示されます。
  2. 所有する Flux オブジェクトを特定します。ディレクトリと sourceRef および spec.path が一致する Kustomization(spec.path と spec.sourceRef を指定した fields で Kustomization を一覧表示)、またはユーザーが指定した HelmRelease/ResourceSet を探します。ユーザーがオブジェクト名を指定している場合は、この手順を省略します。
  3. ビルド出力(yaml_content、または大きなビルドの場合はファイルを指定する yaml_path)と owner_kind/owner_name/owner_namespace を指定して、diff_kubernetes_manifest を呼び出します。所有者オブジェクト自体が変更される場合、または新規の場合は、その YAML を代わりに flux_object に渡します。差分処理では、サーバーサイドのドライランの前に、所有者の変換(targetNamespace、postBuild の置換、commonMetadata、HelmRelease のポストレンダラー)が適用されます。
  4. 更新の JSON パッチには新しい値だけが含まれます。各 replace または remove について、パッチ対象のパスを fields に指定して get_kubernetes_resources でライブオブジェクトを読み取り、レポートに変更された各フィールドの 旧値 → 新値 が表示されるようにします。
  5. すべてのオブジェクトを、作成、更新(フィールドごとの旧値 → 新値)、再作成、変更なし、削除のいずれかとして報告します。ビルド出力にないインベントリオブジェクトは、所有者の prune: true の場合に削除されます。これは変更の中でも最もリスクが高いため、必ず明示してください。
  6. 該当する差分機能の制限事項(Kustomization の components、namePrefix/nameSuffix、キーセットのみで比較される SOPS オブジェクト)を記載します。

Flux CRD リファレンス

API バージョンの確認や、必要に応じてフィールドインデックスを grep する際に、この表を使用してください。

コントローラーKindapiVersionフィールドインデックス
flux-operatorFluxInstancefluxcd.controlplane.io/v1fluxinstance-fluxcd-v1.fields.txt
flux-operatorFluxReportfluxcd.controlplane.io/v1fluxreport-fluxcd-v1.fields.txt
flux-operatorResourceSetfluxcd.controlplane.io/v1resourceset-fluxcd-v1.fields.txt
flux-operatorResourceSetInputProviderfluxcd.controlplane.io/v1resourcesetinputprovider-fluxcd-v1.fields.txt
source-controllerGitRepositorysource.toolkit.fluxcd.io/v1gitrepository-source-v1.fields.txt
source-controllerOCIRepositorysource.toolkit.fluxcd.io/v1ocirepository-source-v1.fields.txt
source-controllerBucketsource.toolkit.fluxcd.io/v1bucket-source-v1.fields.txt
source-controllerHelmRepositorysource.toolkit.fluxcd.io/v1helmrepository-source-v1.fields.txt
source-controllerHelmChartsource.toolkit.fluxcd.io/v1helmchart-source-v1.fields.txt
source-controllerExternalArtifactsource.toolkit.fluxcd.io/v1externalartifact-source-v1.fields.txt
source-watcherArtifactGeneratorsource.extensions.fluxcd.io/v1beta1artifactgenerator-source-v1beta1.fields.txt
kustomize-controllerKustomizationkustomize.toolkit.fluxcd.io/v1kustomization-kustomize-v1.fields.txt
helm-controllerHelmReleasehelm.toolkit.fluxcd.io/v2helmrelease-helm-v2.fields.txt
notification-controllerProvidernotification.toolkit.fluxcd.io/v1provider-notification-v1.fields.txt
notification-controllerAlertnotification.toolkit.fluxcd.io/v1alert-notification-v1.fields.txt
notification-controllerReceivernotification.toolkit.fluxcd.io/v1receiver-notification-v1.fields.txt
image-reflector-controllerImageRepositoryimage.toolkit.fluxcd.io/v1imagerepository-image-v1.fields.txt
image-reflector-controllerImagePolicyimage.toolkit.fluxcd.io/v1imagepolicy-image-v1.fields.txt
image-automation-controllerImageUpdateAutomationimage.toolkit.fluxcd.io/v1imageupdateautomation-image-v1.fields.txt

リファレンスの読み込み

より詳しい情報が必要な場合は、リファレンスファイルを読み込んでください。

  • flux-crds.md — CRD フィールドの詳細な説明、ステータス条件、一般的な障害、またはリソース関係図が必要な場合
  • troubleshooting.md — 特定の障害パターンを診断する場合、または一般的なデバッグチェックリストが必要な場合

レポート形式

デバッグのワークフローを追跡する際は、レポートの依存関係チェーンを作成するため、調査した各リソース(種類、名前、名前空間、ステータス)を記録してください。

デバッグで判明した内容は、次のセクションを含む Markdown レポートにまとめてください。

  1. 概要 — クラスター名、Flux のバージョン、調査対象のリソース、現在のステータス
  2. リソース分析 — リソースの仕様、ステータス条件、イベントの詳細な分析
  3. 依存関係チェーン — ソースから適用元、管理対象リソースまでの追跡(例:GitRepository → Kustomization → Deployments)
  4. 根本原因 — ステータス条件、イベント、ログから得られた証拠を添えた根本原因
  5. 推奨事項 — 問題を解決するための、優先順位を付けた手順と正確なコマンドまたはマニフェストの変更

変更のプレビュー(ワークフロー 9)では、代わりにオーナー、オブジェクトごとの差分、集計件数を報告し、削除を最初に記載してください。

エッジケース

  • Flux がインストールされていない場合:get_flux_instance が FluxInstance を返さない場合は、クラスターに Flux がインストールされていないことをユーザーに伝えてください。Flux Operator のインストールを提案してください。
  • MCP サーバーを利用できない場合:MCP ツールの接続に失敗した場合は、flux-operator-mcp サーバーが実行されていないことをユーザーに伝えてください。インストールコマンドを提示してください。
  • 古い MCP サーバー:trace_kubernetes_resource、get_kubernetes_events、または diff_kubernetes_manifest がない場合、サーバーは v0.60 より古いバージョンです。fluxcd ラベル、status.events、Pod レベルのログを確認する方法に切り替え、アップグレードを提案してください。
  • 一時停止中のリソース:Flux リソースに .spec.suspend: true(またはトレース内に suspended)がある場合、意図的に一時停止されており、再開するまでリコンサイルされないことを明記してください。ユーザーが有効化を期待している場合を除き、エラーとして扱わないでください。
  • 処理中のリソース:リソースが Ready: Unknown、理由が Progressing を示している場合、現在リコンサイル中です。診断の前にリコンサイルの完了を待ってください。最後の状態遷移時刻を記載してください。
  • 管理対象外のオブジェクト:trace_kubernetes_resource が unmanaged: true を返した場合、そのオブジェクトは Flux によって配信されていません。Flux の修正方法を探すのではなく、その旨を伝えてください。
  • 古いステータス:最後のリコンサイル時刻が設定された間隔と比べて古い場合、コントローラーに過負荷がかかっているか、停止している可能性があります。バックプレッシャーやエラーがないか、コントローラーのログを確認してください。
  • クラスターコンテキストが見つからない場合:ユーザーのクラスター名が利用可能なコンテキストと一致しない場合は、利用可能なコンテキストを一覧表示し、確認を求めてください。

コメント