RootSync フィールドと RepoSync フィールド

このページでは、RootSync オブジェクト、RepoSync オブジェクト、ResourceGroup オブジェクトのさまざまなフィールドについて説明します。

RootSync オブジェクト、RepoSync オブジェクト、ResourceGroup オブジェクトについて

Google Cloud Console または Google Cloud CLI を使用して Config Sync をインストールすると、root-sync という RootSync オブジェクトが自動的に作成されます。kubectl を使用して Config Sync をインストールする場合は、RootSync オブジェクトを手動で作成します。複数のリポジトリからの同期を構成するときに、RepoSync オブジェクトを作成します。

これらのオブジェクトが作成されると、RootSync API と RepoSync API が有効になり、複数のリポジトリからの同期や Kustomize と Helm 構成の同期など、追加の Config Sync 機能にアクセスできるようになります。

クラスタと同期された Git リポジトリの場合は、すべてのリソースの調整ステータスが ResourceGroup というリソースに集約されます。Config Sync は ResourceGroup のカスタム リソース(CR)を自動的に生成します。Config Sync を宣言する必要はありません。Config Sync によって生成された ResourceGroup CR を変更すると、Config Sync で予期しない障害が発生する可能性があります。

次の図は、Config Sync が RootSync、RepoSync、ResourceGroup の各リソースを作成する方法の概要を示しています。

オペレータの作動

作成されると、Reconciler Manager は、Root Reconciler と各 Namespace Reconciler のプロセスのライフサイクルを制御します。

Reconciler の作動

RootSync フィールドと RepoSync フィールド

RootSync と RepoSync の CRD は、spec.sourceFormat を除いて同じフィールドを使用します。

ソース形式の構成

キー 説明
spec.sourceFormat sourceFormat には、リポジトリのフォーマット方法を指定します。省略可。
このフィールドの検証では大文字と小文字が区別されます。
  • RootSync オブジェクトの場合、値は hierarchy または unstructured にする必要があります。指定しない場合、デフォルト値は hierarchy ですが、unstructured をおすすめします。
  • RepoSync オブジェクトの場合、unstructured にする必要があります。デフォルトは unstructured です。
詳細については、リポジトリのソース形式をご覧ください。

ソースタイプの構成

Anthos Config Management バージョン 1.12.0 以降、Config Sync は OCI イメージプレビュー)からの同期をサポートします。spec.sourceType は、ソースタイプを指定するように構成されています。

キー 説明
spec.sourceType sourceType には、信頼できる情報源のタイプを指定します。git または oci のいずれかにする必要があります。省略可。
指定しない場合は git に設定します。このフィールドの検証では大文字と小文字が区別されます。
ソースのタイプに応じて、spec.gitspec.oci のいずれか 1 つのみ指定できます。

Git リポジトリの構成

キー 説明
spec.git.auth Git リポジトリへのアクセスのために構成された Secret のタイプ。sshcookiefilegcenodegcpserviceaccounttoken、または none にする必要があります。このフィールドの検証では大文字と小文字が区別されます。必須。
spec.git.gcpServiceAccountEmail RootSync または RepoSync コントローラの Kubernetes サービス アカウントにアノテーションを付けるために使用される Google Cloud サービス アカウント。このフィールドは、spec.git.authgcpserviceaccount の場合にのみ使用されます。
spec.git.branch 同期元となるリポジトリのブランチ。デフォルト: master
spec.git.dir 同期先の構成を含むルート ディレクトリへの Git リポジトリの絶対パス。デフォルトはリポジトリのルート ディレクトリ(/)です
spec.git.period 連続する同期の間隔。デフォルト: 15s
spec.git.repo 同期元の Git リポジトリの URL。必須。
spec.git.revision チェックアウトする Git リビジョン(タグ、commit、またはハッシュ)。デフォルト: HEAD
spec.git.secretRef.name Git の信頼できるソースへの接続に使用される Secret の名前。
spec.git.noSSLVerify noSSLVerify は、SSL 証明書の検証を有効にするか無効にするかを指定します。デフォルト: false。
noSSLVerify が true に設定されている場合、Git は SSL 証明書の検証をスキップします。
このフィールドは、Anthos Config Management バージョン 1.8.2 以降でサポートされています。

Git リポジトリのプロキシ構成

組織のセキュリティ ポリシーでトラフィックを HTTP(S) プロキシ経由でルーティングする必要がある場合は、プロキシの URI を使用して Git ホストと通信するように Config Sync を構成できます。

キー 説明
spec.git.proxy プロキシを使用して Git リポジトリへのアクセスを構成するスキームを含むプロキシ URL。例: https://proxy.internal.business.co:443このフィールドは、spec.git.authcookiefilenone、または token の場合にのみ有効です。

OCI イメージの構成

キー 説明
spec.oci.auth OCI イメージへのアクセスのために構成された認証のタイプ。gcenodegcpserviceaccount、または none にする必要があります。このフィールドの検証では大文字と小文字が区別されます。必須。
spec.oci.gcpServiceAccountEmail RootSync または RepoSync コントローラの Kubernetes サービス アカウントにアノテーションを付けるために使用される Google Cloud サービス アカウント。このフィールドは、spec.oci.authgcpserviceaccount の場合にのみ使用されます。
spec.oci.dir 同期先の構成を含むルート ディレクトリへの OCI イメージの絶対パス。デフォルトはリポジトリのルート ディレクトリ(/)です。
spec.oci.period 連続する同期の間隔。デフォルト: 15s
spec.oci.image 同期元の OCI イメージの URL。必須。

ルートまたは名前空間リコンサイラのリソース リクエストと上限をオーバーライドするための構成

Autopilot クラスタの場合、Config Sync はリソース上限のオーバーライドを無視します。アノテーションで宣言された対応する調整済みの出力よりも高いリソース リクエストがある場合か、アノテーションで宣言された対応する入力よりも少ないリソース リクエストが存在している場合にのみ、リソース リクエストのオーバーライドが適用されます。詳細については、Config Sync のクラスタ要件をご覧ください。

キー 説明
spec.override.resources コンテナ リソースのリクエストと上限のオーバーライドのリスト。省略可。
リストの各項目には、次の 3 つのフィールドが含まれます。
  • containerName: このフィールドは、git-syncoci-synchydration-controllerreconciler のいずれかです。
  • cpuRequest(オプション)
  • cpuLimit(オプション)
  • memoryRequest(オプション)
  • memoryLimit(オプション)

リソースのリクエストまたは上限のオーバーライド値が指定されていない場合は、リクエストまたは上限のデフォルトのリソース値が使用されます。

取得する Git commit 数の構成

キー 説明
spec.override.gitSyncDepth gitSyncDepth を使用すると、取得する Git commit の数をオーバーライドできます。
0 以上の値を指定してください。
このフィールドが 0 の場合、Config Sync はフルクローンを作成します。0 より大きい場合は、シャロー クローンを作成します。
このフィールドを指定しない場合は、Config Sync によって自動的に構成されます。

リソースレベルのステータスをキャプチャするための構成

キー 説明
spec.override.statusMode statusMode は、リソースレベルのステータスのキャプチャを有効または無効にできます。
デフォルト値は enabled です。
リソースレベルのステータスのキャプチャを無効にするには、このフィールドを disabled に設定します。

調整タイムアウトをオーバーライドするための構成

キー 説明
spec.override.reconcileTimeout reconcileTimeout を使用すると、適用グループ内のリソースが調整されるまでの待機時間のしきい値をオーバーライドできます。commit 内のリソースは、依存関係に基づいて複数の適用グループに属する場合があります。
デフォルトのタイムアウトは 5m です。
このフィールドの値を文字列で指定します(例: 30s5m)。

レンダリング プロセスでのシェルアクセスの構成

キー 説明
spec.override.enableShellInRendering enableShellInRendering は、レンダリング プロセスでシェルアクセスを有効にするかどうかを指定します。Kustomize のリモートベースにはシェルアクセスが必要です。このフィールドを true に設定すると、レンダリング プロセスでのシェルアクセスが有効になり、公開リポジトリからリモートベースを pull できます。
デフォルトは false です。

オブジェクトのステータス

キー 説明
status.observedGeneration Config Sync によって最後に監視されて操作された RootSync または RepoSync リソースの仕様の世代(metadata.generation)。この値は metadata.generation(API サーバーが仕様のミューテーションによって更新される整数)と比較できます。
status.reconciler 同期リソースに対応する Reconciler プロセスの名前。
status.source.gitStatus.repo 取得される Git リポジトリの URL。
status.source.gitStatus.revision 取得される Git リビジョン(タグ、commit、またはハッシュ)。
status.source.gitStatus.branch 取得されるリポジトリの Git ブランチ。
status.source.gitStatus.dir 同期している構成を含むルート ディレクトリへの Git リポジトリ内の絶対パス。
status.source.ociStatus.image 取得中の OCI イメージの URL。
status.source.ociStatus.dir 同期している構成を含むルート ディレクトリへの OCI イメージ内の絶対パス。
status.source.commit ソース URL から取得された、最新の commit またはダイジェストのハッシュ。
status.source.errors リポジトリからの読み取り中に発生したエラーのリスト。
status.rendering.gitStatus.repo レンダリングされる Git リポジトリの URL。
status.rendering.gitStatus.revision レンダリングされる Git リビジョン(タグ、commit、またはハッシュ)。
status.rendering.gitStatus.branch レンダリングされるリポジトリの Git ブランチ。
status.rendering.gitStatus.dir レンダリングされている構成を含むルート ディレクトリへの Git リポジトリ内の絶対パス。
status.rendering.ociStatus.image レンダリングされる OCI イメージの URL。
status.rendering.ociStatus.dir レンダリングしている構成を含むルート ディレクトリへの OCI イメージ内の絶対パス。
status.rendering.commit レンダリングされた最新の commit またはダイジェストのハッシュ。この値は、エラーによって commit またはダイジェストが部分的に同期されている場合でも更新されます。
status.rendering.errors status.rendering.commit で示される変更からリソースをレンダリングする際に発生したエラーのリスト。
status.sync.gitStatus.repo 同期される Git リポジトリの URL。
status.sync.gitStatus.revision 同期される Git リビジョン(タグ、commit、またはハッシュ)。
status.sync.gitStatus.branch 同期されるリポジトリの Git ブランチ。
status.sync.gitStatus.dir 同期している構成を含むルート ディレクトリへの Git リポジトリ内の絶対パス。
status.sync.ociStatus.image 同期される OCI イメージの URL。
status.sync.ociStatus.dir 同期している構成を含むルート ディレクトリへの OCI イメージ内の絶対パス。
status.sync.commit クラスタに同期された最新の commit またはダイジェストのハッシュ。この値は、エラーによって commit またはダイジェストが部分的に同期されている場合でも更新されます。
status.sync.errors status.sync.commit で示される変更からリソースを適用する際に発生したエラーのリスト。
status.conditions RootSync の現在の状態に関する最新の観測値。

ResourceGroup フィールド

仕様とステータス フィールド

キー 説明
spec.resources RepoSync CR または RootSync CR で指定されている Git リポジトリからクラスタに適用されるリソースの識別子(グループ、種類、Namespace、名前)のリスト。省略可。
リスト内の各項目は、groupkindnamespacename の 4 つのフィールドで構成されます。

ステータス フィールド

キー 説明
status.observedGeneration ResourceGroup コントローラによって最後に監視され、操作された RootSync または RepoSync リソースの仕様の世代(metadata.generation)。この値は metadata.generation(API サーバーが仕様のミューテーションによって更新される整数)と比較できます。
status.conditions 現在の ResourceGroup で観測された最新の条件。条件には、ReconcilingStalled の 2 種類があります。Reconciling タイプ条件が true の場合、現在の ResourceGroup は調整中であることを意味します。Stalled タイプ条件が true の場合、調整が停止していることを意味します。両方が false の場合は、現在の ResourceGroup が調整され、ステータスが最新であることを意味します。
status.resourceStatuses .spec.resources に含まれるリソースのステータスのリスト。各アイテムには、リソースの識別子(グループ、種類、Namespace、名前)とステータスが含まれます。ステータスは、InProgressCurrentFailedTerminatingNotFoundUnknown のいずれかです。

CR の例

次のセクションでは、RootSync と Reposync の CR の例を示します。

RootSync CR

次の CR は kubectl describe rootsync root-sync -n config-management-system を使用して生成されました。

Name:         root-sync
Namespace:    config-management-system
Labels:       <none>
Annotations:  configmanagement.gke.io/managed-by-hub: true
              configmanagement.gke.io/update-time: 1623779339
API Version:  configsync.gke.io/v1beta1
Kind:         RootSync
Metadata:
  Creation Timestamp:  2021-06-15T17:49:35Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1beta1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .:
          f:configmanagement.gke.io/managed-by-hub:
          f:configmanagement.gke.io/update-time:
      f:spec:
        .:
        f:git:
          .:
          f:auth:
          f:branch:
          f:dir:
          f:period:
          f:repo:
          f:secretRef:
        f:sourceFormat:
    Manager:      Google-GKEHub-Controllers-ACM
    Operation:    Update
    Time:         2021-06-15T17:49:35Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:      reconciler-manager
    Operation:    Update
    Time:         2021-06-15T17:49:47Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:         reconciler
    Operation:       Update
    Time:            2021-06-15T17:51:28Z
  Resource Version:  4850
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/config-management-system/rootsyncs/root-sync
  UID:               3fd2ea19-7e16-4c69-a3a1-90b9d90677eb
Spec:
  Git:
    Auth:    none
    Branch:  init
    Dir:     config-sync-quickstart/multirepo/root
    Period:  0s
    Repo:    https://github.com/GoogleCloudPlatform/anthos-config-management-samples
    Secret Ref:
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:50:15Z
    Last Update Time:      2021-06-15T17:50:15Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              root-reconciler
  Rendering:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    LastUpdate: 2021-06-15T17:51:08Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
    Message: Rendering skipped
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    LastUpdate: 2021-06-15T17:51:12Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:28Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/root
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
Events:           <none>

RepoSync CR

次の CR は kubectl describe reposync repo-sync -n config-management-system を使用して生成されました。

Name:         repo-sync
Namespace:    gamestore
Labels:       app.kubernetes.io/managed-by=configmanagement.gke.io
              configsync.gke.io/declared-version=v1alpha1
Annotations:  config.k8s.io/owning-inventory: config-management-system_root-sync
              configmanagement.gke.io/cluster-name: cs-cluster-1
              configmanagement.gke.io/managed: enabled
              configmanagement.gke.io/source-path: quickstart/multirepo/root/reposync-gamestore.yaml
              configmanagement.gke.io/token: a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
              configsync.gke.io/declared-fields: {"f:spec":{}}
              configsync.gke.io/git-context:
                {"repo":"https://github.com/GoogleCloudPlatform/anthos-config-management-samples","branch":"init","rev":"HEAD"}
              configsync.gke.io/manager: :root
              configsync.gke.io/resource-id: configsync.gke.io_reposync_gamestore_repo-sync
API Version:  configsync.gke.io/v1beta1
Kind:         RepoSync
Metadata:
  Creation Timestamp:  2021-06-15T17:51:27Z
  Generation:          1
  Managed Fields:
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          f:config.k8s.io/owning-inventory:
          f:configmanagement.gke.io/cluster-name:
          f:configmanagement.gke.io/managed:
          f:configmanagement.gke.io/source-path:
          f:configmanagement.gke.io/token:
          f:configsync.gke.io/declared-fields:
          f:configsync.gke.io/git-context:
          f:configsync.gke.io/manager:
          f:configsync.gke.io/resource-id:
        f:labels:
          f:app.kubernetes.io/managed-by:
          f:configsync.gke.io/declared-version:
      f:spec:
        f:git:
          f:auth:
          f:branch:
          f:dir:
          f:repo:
        f:sourceFormat:
    Manager:      configsync.gke.io
    Operation:    Apply
    Time:         2021-06-15T17:51:27Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:status:
        f:source:
          f:commit:
          f:gitStatus:
            f:branch:
            f:dir:
            f:repo:
            f:revision:
        f:sync:
          f:commit:
          f:lastUpdate:
    Manager:      reconciler
    Operation:    Update
    Time:         2021-06-15T17:51:53Z
    API Version:  configsync.gke.io/v1alpha1
    Fields Type:  FieldsV1
    fieldsV1:
      f:spec:
        f:git:
          f:period:
          f:secretRef:
      f:status:
        .:
        f:conditions:
        f:observedGeneration:
        f:reconciler:
        f:source:
          .:
          f:gitStatus:
        f:sync:
    Manager:         reconciler-manager
    Operation:       Update
    Time:            2021-06-15T17:51:53Z
  Resource Version:  5216
  Self Link:         /apis/configsync.gke.io/v1beta1/namespaces/gamestore/reposyncs/repo-sync
  UID:               80d0a0d3-4ec6-4ccd-9a9d-4e2ddf0b7bbd
Spec:
  Git:
    Auth:         none
    Branch:       init
    Dir:          quickstart/multirepo/namespaces/gamestore
    Repo:         https://github.com/GoogleCloudPlatform/anthos-config-management-samples
  Source Format:  unstructured
Status:
  Conditions:
    Last Transition Time:  2021-06-15T17:51:56Z
    Last Update Time:      2021-06-15T17:51:56Z
    Status:                False
    Type:                  Reconciling
  Observed Generation:     1
  Reconciler:              ns-reconciler-gamestore
  Rendering:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:03Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
    Message: Rendering skipped
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:33Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
  Sync:
    Commit:       a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    Last Update:  2021-06-15T17:51:53Z
    Git Status:
      Branch:    init
      Dir:       quickstart/multirepo/namespaces/gamestore
      Repo:      https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      Revision:  HEAD
Events:           <none>

次のステップ