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

このページでは、RootSync オブジェクトと RepoSync オブジェクトに表示されるフィールドについて説明します。これらのオブジェクトは、複数のリポジトリからの同期を構成する場合に使用できます。

また、マルチリポジトリ モードを有効にすると作成される ResourceGroup についても説明します。

次の図は、Config Sync がこれらのリソースを作成する方法の概要を示しています。

オペレータの作動

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

Reconciler の作動

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

RootSync と RepoSync の CRD は、spec.sourceFormat を除いて同じフィールドを使用します。RepoSync の CRD の場合、spec.sourceFormatunstructured にする必要があります。デフォルトは unstructured です。

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.sourceFormat Git リポジトリの形式。
RootSync オブジェクトの場合: unstructured または hierarchy。デフォルト: hierarchy
RepoSync オブジェクトの場合: unstructured. デフォルト: unstructured
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.authcookiefile または none の場合にのみ有効です。

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

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

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

取得する Git commit 数の構成

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

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

キー 説明
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.commit リポジトリにある最新の commit のハッシュ。
status.source.errors リポジトリからの読み取り中に発生したエラーのリスト。
status.sync.commit クラスタに同期された最新の commit のハッシュ。この値は、エラーによって commit が部分的に同期された場合でも更新されます。
status.sync.errors status.sync.commit で示される変更からリソースを適用する際に発生したエラーのリスト。
status.conditions RootSync の現在の状態に関する最新の観測値。

ResourceGroup フィールド

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

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

キー 説明
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:     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
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    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
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
  Source:
    Commit:  a9b7593b2df5f64b1ae5e5eb2d9cafa619029589
    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
Events:           <none>