RootSync オブジェクトと RepoSync オブジェクトをモニタリングする

このページでは、RootSync オブジェクトと RepoSync オブジェクトをモニタリングするさまざまな方法について説明します。たとえば、信頼できる情報源の最新の commit がクラスタに適用され、正常に調整されているかを確認することができます。

ログの表示

このセクションでは、RootSync オブジェクトと RepoSync オブジェクトのログを表示する方法について説明します。ログを確認すると、潜在的なエラーに関する情報を確認できます。

  • RootSync または RepoSync Reconciler のログを表示するには、次のコマンドを実行します。

    kubectl logs -n config-management-system deployment/RECONCILER_NAME CONTAINER_NAME
    

    次のように置き換えます。

    • RECONCILER_NAME: RootSync オブジェクトまたは RepoSync オブジェクトの Reconciler 名。

      • RootSync の場合、Reconciler の名前は root-reconciler-ROOT_SYNC_NAME です。RootSync の名前が root-sync の場合は root-reconciler です。

      • RepoSync の場合、Reconciler の名前は ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH または ns-reconciler-NAMESPACE(RepoSync の名前が repo-sync の場合)です。ここで、NAMESPACE は RepoSync オブジェクトを作成した Namespace です。

    • CONTAINER_NAME: コンテナ名。

      • git-sync: git-sync コンテナは、構成ファイルを Git リポジトリから pull し、リコンサイラ コンテナから読み取り可能なローカル ディレクトリに保存します。

      • oci-sync: oci-sync コンテナは、Reconciler コンテナが読み取り可能なローカル ディレクトリに、OCI イメージの構成ファイルを pull します。

      • helm-sync: helm-sync コンテナは、Reconciler コンテナが読み取り可能なローカル ディレクトリに、Helm チャートの構成ファイルを pull します。

      • hydration-controller: hydration-controller コンテナは、リポジトリから pull された Helm または Kustomize 構成をレンダリングし、reconciler コンテナでさらに処理できるように、その構成を共有ボリュームに保存します。

      • reconciler: reconciler コンテナは構成ファイルをクラスタに適用します。

      • otel-agent: otel-agent コンテナは、OpenTelemetry エージェントで、Config Sync の指標の取得とエクスポートを行います。

同期された commit を表示する

クラスタと同期された commit を確認するには、RootSync オブジェクトまたは RepoSync オブジェクトの .status.sync フィールドを確認します。

  • RootSync オブジェクトの同期された commit を表示するには、次のコマンドを実行します。

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAME は、RootSync オブジェクトの名前に置き換えます。

  • RepoSync オブジェクトの同期された commit を表示するには、次のコマンドを実行します。

    kubectl get reposync REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE
    

    次のように置き換えます。

    • REPO_SYNC_NAME: RepoSync オブジェクトの名前。
    • REPO_SYNC_NAMESPACE: Namespace リポジトリを作成した Namespace。

これらのコマンドの出力には、元の commit の値と同期された commit の値が表示されます。たとえば RepoSync のコマンドを実行すると、次のような出力が表示されます。

NAME        RENDERINGCOMMIT                            SOURCECOMMIT                               SYNCCOMMIT
root-sync   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72   66882815f0ef5517df27e864fb1315e97756ab72

RENDERINGCOMMIT 列の値は、hydration-controller によって処理される commit です。レンダリングの必要がない場合、値は SOURCECOMMIT 列と同じです。SOURCECOMMIT 列の値は、クラスタと同期する必要がある信頼できる情報源からの commit です。SYNCCOMMIT 列の値は、クラスタにデプロイされている commit です。SOURCECOMMIT 列と SYNCCOMMIT 列の 2 つの値が同じ場合は、想定された commit がクラスタにデプロイ済みです。

commit のリソースが調整されていることを確認する

RootSync オブジェクトまたは RepoSync オブジェクトごとに、信頼できる情報源で宣言されたマネージド リソースの調整ステータスを取得する一意の ResourceGroup オブジェクトがあります。ResourceGroup オブジェクトは、RootSync オブジェクトまたは RepoSync オブジェクトと同じ Namespace と名前を使用します。たとえば、Namespace config-management-systemroot-sync という名前の RootSync オブジェクトがある場合、対応する ResourceGroup オブジェクトも Namespace config-management-systemroot-sync を使用します。最新の commit が正常に適用されると、ResourceGroup オブジェクトには、最新の commit のマネージド リソースのグループ、種類、Namespace、名前が含まれます。

次のコマンドを実行して ResourceGroup オブジェクトを取得できます。

  • RootSync オブジェクトの ResourceGroup オブジェクトを取得するには:

    kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yaml
    
  • RepoSync オブジェクトの ResourceGroup オブジェクトを取得するには:

    kubectl get resourcegroup REPO_SYNC_NAME -n REPO_SYNC_NAMESPACE -o yaml
    

    次のように置き換えます。

    • ROOT_SYNC_NAME: 検索する ResourceGroup オブジェクトの名前。
    • REPO_SYNC_NAME: 検索する ResourceGroup オブジェクトの名前。
    • REPO_SYNC_NAMESPACE: 検索する ResourceGroup オブジェクトの名前。

commit 内のリソースが調整されたことを確認するには、出力で次のことを確認します。

  • .status.observedGeneration は、ResourceGroup オブジェクトのフィールド .metadata.generation の値と同じです。
  • Stalled 条件と Reconciling 条件の両方の status"False" です。
  • .status.resourceStatuses フィールドの各項目のステータスは Current になります。

エラーを確認する

RootSync オブジェクトと RepoSync オブジェクトは、status フィールドを使用して、信頼できるソースからクラスタに構成ファイルを同期する際に発生するエラーを追跡します。

  • RootSync オブジェクトのステータスを表示するには、次のコマンドを実行します。

    kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAME は、RootSync オブジェクトの名前に置き換えます。

  • RepoSync オブジェクトのステータスを表示するには、次のコマンドを実行します。

    kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    次のように置き換えます。

    • REPO_SYNC_NAME: RepoSync オブジェクトの名前。
    • NAMESPACE: Namespace リポジトリを作成した Namespace。

次の表に、status フィールドのサブフィールドを示します。

フィールド 説明
status.rendering.errors 信頼できるソースからの kustomize 構成ファイルのレンダリング プロセス中に発生したエラー。エラーが多すぎる場合、Config Sync によってエラーが切り詰められるため、発生したすべてのエラーが含まれない場合があります。
status.rendering.errorSummary.totalCount 信頼できるソースからの構成ファイルのレンダリング プロセス中に発生したエラーの総数を追跡する整数。
status.rendering.errorSummary.truncated status.rendering.errors フィールドに、信頼できるソースからの構成ファイルのレンダリング プロセス中に発生したすべてのエラーが含まれているかどうかを示すブール値。
status.rendering.errorSummary.errorCountAfterTruncation status.rendering.errors フィールドのエラー数を追跡する整数。
status.source.errors 信頼できるソースからの構成ファイルの読み取りと解析中に発生したエラー。エラーが多すぎる場合、Config Sync によってエラーが切り詰められるため、発生したすべてのエラーが含まれない場合があります。
status.source.errorSummary.totalCount 信頼できるソースから構成ファイルを読み取って解析する際に発生したエラーの合計数を追跡する整数。
status.source.errorSummary.truncated status.source.errors フィールドに、信頼できるソースからの構成ファイルの読み取りと解析中に発生したすべてのエラーが含まれているかどうかを示すブール値。
status.source.errorSummary.errorCountAfterTruncation status.source.errors フィールドのエラー数を追跡する整数。
status.sync.errors 信頼できるソースから構成ファイルを適用する際に発生したエラー。エラーが多すぎる場合、Config Sync によってエラーが切り詰められるため、発生したすべてのエラーが含まれない場合があります。
status.sync.errorSummary.totalCount 信頼できるソースからの構成ファイルを適用する際に発生したエラーの合計数を追跡する整数。
status.sync.errorSummary.truncated status.sync.errors フィールドに、信頼できるソースから構成ファイルを適用する際に発生したすべてのエラーが含まれているかどうかを示すブール値。
status.sync.errorSummary.errorCountAfterTruncation status.sync.errors フィールドのエラー数を追跡する整数。
status.conditions RootSync オブジェクトまたは RepoSync オブジェクトの現在の状態を追跡する条件のリスト。
条件の type フィールドが Reconciling または Stalled の場合:
  • 条件の errors フィールドは、RootSync オブジェクトまたは RepoSync オブジェクトの調整中に発生したエラーを追跡します。
  • 条件の errorSummary フィールドは、条件の errors フィールドのエラーを要約します。
  • 条件の errorsSourceRefs フィールドは空です。
条件のタイプが Syncing の場合:
  • 条件の errors フィールドは空です。
  • 条件の errorsSourceRefs フィールドは、エラーの発生元を追跡します。エラーの発生元は、status.rendering.errorsstatus.source.errorsstatus.sync.errors のいずれかです。
  • 条件の errorSummary フィールドは、errorsSourceRefs フィールドで参照されるエラーを要約します。

オブジェクトの詳細を表示する

RootSync オブジェクトと RepoSync オブジェクトの詳細を表示するには、kubectl describe を使用します。このコマンドにより、潜在的なエラーに関する詳細情報が提供されます。

  • RootSync オブジェクトの詳細を表示するには、次のコマンドを実行します。

    kubectl describe rootsync ROOT_SYNC_NAME -n config-management-system
    

    ROOT_SYNC_NAME は、RootSync オブジェクトの名前に置き換えます。

  • RepoSync オブジェクトの詳細を表示するには、次のコマンドを実行します。

    kubectl describe reposync REPO_SYNC_NAME -n NAMESPACE
    

    次のように置き換えます。

    • REPO_SYNC_NAME: RepoSync オブジェクトの名前。
    • NAMESPACE: Namespace リポジトリを作成した Namespace。

リソースの準備状況を確認する

クラスタに同期されたリソースの準備状況を確認するには、調整ステータスを表示します。たとえば、調整ステータスを表示すると、同期された Deployment がトラフィックを提供する準備ができているかどうかを確認できます。

クラスタと同期された信頼できる情報源の場合は、すべてのリソースの調整ステータスが ResourceGroup というリソースに集約されます。RootSync オブジェクトや RepoSync オブジェクトごとに ResourceGroup が生成され、クラスタに適用される一連のリソースを取り込んで、それらのステータスを集約します。

  • RootSync オブジェクトの調整ステータスを表示するには、次のコマンドを実行します。

    kubectl get resourcegroup.kpt.dev ROOT_SYNC_NAME -n config-management-system -o yaml
    

    ROOT_SYNC_NAME は、RootSync オブジェクトの名前に置き換えます。

  • RepoSync オブジェクトの調整ステータスを表示するには、次のコマンドを実行します。

    kubectl get resourcegroup.kpt.dev REPO_SYNC_NAME -n NAMESPACE -o yaml
    

    次のように置き換えます。

    • REPO_SYNC_NAME: RepoSync オブジェクトの名前。
    • NAMESPACE: Namespace リポジトリを作成した Namespace。

出力には、ResourceGroup のすべてのリソースのステータスが表示されます。たとえば、次の出力は、nginx-deployment という名前の Deployment の準備ができていることを示しています。

resourceStatuses:
- group: apps
  kind: Deployment
  name: nginx-deployment
  namespace: default
  status: Current

次のステップ