このページでは、RootSync オブジェクトと RepoSync オブジェクトをモニタリングするさまざまな方法について説明します。たとえば、信頼できる情報源の最新の commit がクラスタに適用され、正常に調整されているかを確認することができます。
同期された commit を表示する
クラスタと同期された commit を確認するには、RootSync オブジェクトまたは RepoSync オブジェクトの .status.sync フィールドを確認します。
RootSyncオブジェクトの同期された commit を表示するには、次のコマンドを実行します。kubectl get rootsync ROOT_SYNC_NAME -n config-management-systemROOT_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 のリソースが調整されていることを確認する
ResourceGroup は、信頼できる情報源で宣言されたマネージド リソースの調整ステータスをキャプチャするため、commit 内のリソースが調整されているかどうかを確認できます。
ResourceGroup オブジェクトには、RootSync オブジェクトまたは RepoSync オブジェクトと同じ Namespace と名前が設定されています。たとえば、Namespace config-management-system の root-sync という名前の RootSync オブジェクトについては、対応する ResourceGroup オブジェクトも Namespace config-management-system の root-sync です。
RootSyncオブジェクトの ResourceGroup オブジェクトを取得するには:kubectl get resourcegroup ROOT_SYNC_NAME -n config-management-system -o yamlRepoSyncオブジェクトの 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条件のstatusは"False"です。.status.resourceStatusesの各項目には、Succeededのactuation、Succeededのreconcile、Currentのstatusがあります。
その他のエラーを確認する
RootSync オブジェクトと RepoSync オブジェクトは、status フィールドを使用して、信頼できる情報源からクラスタに構成ファイルを同期する際に発生したエラーを追跡します。
RootSyncオブジェクトのステータスを表示するには、次のコマンドを実行します。kubectl get rootsync ROOT_SYNC_NAME -n config-management-system -o yamlROOT_SYNC_NAMEは、RootSyncオブジェクトの名前に置き換えます。RepoSyncオブジェクトのステータスを表示するには、次のコマンドを実行します。kubectl get reposync REPO_SYNC_NAME -n NAMESPACE -o yaml次のように置き換えます。
REPO_SYNC_NAME:RepoSyncオブジェクトの名前。NAMESPACE: Namespace リポジトリを作成した Namespace。
status フィールドのサブフィールドについて詳しくは、オブジェクトのステータスをご覧ください。
オブジェクトの詳細を表示する
RootSync オブジェクトと RepoSync オブジェクトの詳細を表示し、潜在的なエラーに関する詳細情報を確認するには、kubectl describe コマンドを使用します。
このコマンドの出力にはイベントが含まれます。これは特に、メモリの制約(OOMKilled)に直面しているコンテナ、スケジューリングの失敗、イメージの pull エラーなどの問題のデバッグに活用できます。
判読を容易にするために、次のコマンドに -o yaml を追加して、出力を YAML に変換します。この形式は、特定のパラメータ、アノテーション、リソースの仕様を調べる必要がある場合に特に有効です。
RootSyncオブジェクトの詳細を表示するには、次のコマンドを実行します。kubectl describe rootsync ROOT_SYNC_NAME -n config-management-systemROOT_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 yamlROOT_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
ログを表示する
作成した RootSync オブジェクトと RepoSync オブジェクトごとに、Config Sync は同期を実行するための Reconciler Deployment を作成します。このセクションでは、これらの Reconciler のログを表示する方法について説明します。ログを表示すると、RootSync オブジェクトまたは RepoSync オブジェクトのステータスで確認できない進行状況、警告、エラーに関する追加情報が得られるため、問題のデバッグに活用できます。
RootSyncReconciler またはRepoSyncReconciler のログを表示するには、次のコマンドを実行します。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: コンテナ名は、reconciler、git-sync、hydration-controller、oci-sync、helm-syncのいずれかの値にする必要があります。これらのコンテナの詳細については、Reconciler コンテナをご覧ください。
RootSync または RepoSync Reconciler のログレベルを構成する
より多くの情報がコンテナログに含まれるようにするには、ログの詳細度を構成します。デフォルトでは、ほとんどのコンテナにはログの詳細度に関するデフォルト値の 0 が設定されています。例外は、デフォルト値が 5 の git-sync コンテナと otel-agent コンテナです。
ログの詳細度を変更する際は、記録されるデータ量が増加するため、ログの詳細度を引き上げるとロギングのコストが増大することに留意してください。
ログの詳細度を変更するには、次の例に示すように .spec.override.logLevels フィールドを使用します。
apiVersion: configsync.gke.io/v1beta1
kind: RootSync
metadata:
name: root-sync
namespace: config-management-system
spec:
override:
logLevels:
- containerName: "reconciler"
logLevel: 0
- containerName: "git-sync"
logLevel: 10
containerName フィールドの値は、reconciler、git-sync、hydration-controller、oci-sync、helm-sync のいずれかにする必要があります。
ログの詳細度が構成されていることを確認するには、次のコマンドを実行します。
kubectl get deployment.apps/root-reconciler -n config-management-system -o yaml
ログの詳細度は、spec.template.spec.containers[] 内の args の一つとして確認でき、-v=0 のように表示されます。ここで、0 は現在のログの詳細度です。この例では、ログの詳細度の値が 0 の場合、重大なイベントのみがログに記録されます。