kubectl コマンドを使用して Config Sync を構成する

このページでは、Google Cloud コンソールまたは Google Cloud CLI を使用して Config Sync をインストールした後に、kubectl コマンドで Config Sync を構成する方法について説明します。

コンソールまたは CLI を使用して多くの構成を変更できますが、kubectl コマンドを使用して Config Sync のデフォルトのオーバーライドをオーバーライドし、SSL 証明書の検証を制御して、認証局を使用する必要があります。

RootSync 構成ファイルを作成および編集する

kubectl コマンドを使用して Config Sync を構成するには、YAML ファイルを作成して RootSync オブジェクトを編集します。

Google Cloud コンソールまたは Google Cloud CLI を使用して Config Sync をインストールすると、root-sync という RootSync オブジェクトが自動的に作成されます。このオブジェクトには、Config Sync の最新の構成情報が含まれています。Google Cloud コンソールまたは Google Cloud CLI で変更を行うと、root-sync が更新されます。

kubectl で編集可能なフィールドを調べる

root-sync に対する高度な変更は、Google Cloud コンソールまたは Google Cloud CLI でサポートされていないフィールドに kubectl コマンドを使用して行うことができます。kubectl コマンドを使用して RootSync オブジェクトまたは RepoSync オブジェクトを直接作成し、更新する場合は、RootSync フィールドと RepoSync フィールドをご覧ください。

次のセクションで作成した YAML ファイルを変更する前に、次の表を確認してください。次の表に、編集および追加できるフィールドを示します。この表にないフィールドを編集すると、Config Sync は、Google Cloud コンソールまたは Google Cloud CLI で最後に構成したときに設定した値に自動的に戻します。

キー 説明
spec.git.noSSLVerify noSSLVerify は、SSL 証明書の検証を有効にするか無効にするかを指定します。デフォルト: false
noSSLVerifytrue に設定されている場合、Git は SSL 証明書の検証をスキップします。
spec.git.caCertSecretRef.name 認証局(CA)証明書を含む Secret の名前。このフィールドを指定する場合、Git サーバーはこの CA によって発行された証明書を使用する必要があります。CA 証明書は「cert」という名前の鍵で Secret に保存する必要があります。
spec.override.resources コンテナ リソースのリクエストと上限のオーバーライドのリスト。省略可。
リストの各項目には、次の 3 つのフィールドが含まれます。
  • containerName: このフィールドは、git-syncoci-synchydration-controllerreconciler のいずれかです。
  • cpuRequest(オプション)
  • cpuLimit(オプション)
  • memoryRequest(オプション)
  • memoryLimit(オプション)

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

ファイルを作成する

root-sync の構成ファイルを作成および編集するには、次の手順を完了します。

  1. 正しいクラスタの構成情報を確実に取得するには、kubectl コマンドライン アクセスを構成します。

    gcloud container clusters get-credentials CLUSTER_NAME \
        --zone ZONE \
        --project PROJECT_ID
    

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

    • CLUSTER_NAME: 変更する Config Sync 構成のあるクラスタの名前
    • ZONE: クラスタを作成したゾーン
    • PROJECT_ID: プロジェクト ID
  2. Config Sync が作成した RootSync オブジェクトの構成情報を YAML ファイルにコピーします。

    kubectl get rootsync root-sync -n config-management-system -o yaml >
    FILE_NAME.yaml
    

    FILE_NAME は、構成ファイルの名前に置き換えます。

  3. 作成した YAML ファイルを開き、必要な構成の変更を行います。たとえば、git-sync コンテナのメモリ上限をオーバーライドするには、次の太字のフィールドを追加します。

    apiVersion: v1
    items:
    - apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
    annotations:
      configmanagement.gke.io/managed-by-hub: "true"
      configmanagement.gke.io/update-time: "1644945169"
    creationTimestamp: "2022-02-15T17:12:52Z"
    generation: 1
    name: root-sync
    namespace: config-management-system
    resourceVersion: "211980457"
    uid: aa30a94b-2825-4590-ad30-5af848403502
    spec:
    git:
      auth: none
      branch: main
      dir: /quickstart/config-sync
      period: 15s
      repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples
      revision: HEAD
      secretRef: {}
    override:
      resources:
      - containerName: "git-sync"
        memoryLimit: "400Mi"
    sourceFormat: unstructured
    # Remainder of RootSync omitted
    
  4. 変更を YAML ファイルに追加します。

    kubectl apply -f FILE_NAME.yaml
    
  5. Config Sync によって変更が適用されたことを確認するには、RootSync オブジェクトを表示します。

    kubectl describe rootsync root-sync -n config-management-system
    
  6. 変更によってエラーが発生していないことを確認するには、nomos status コマンドを使用します。

    nomos status
    

認証局を構成する

まだ信頼されていない認証局(CA)の証明書が構成されているサーバーの場合、CA 証明書を使用してサーバーへの HTTPS 接続を検証するように Config Sync を構成できます。これは、Git、Helm、または OCI サーバーでサポートされています。CA 証明書には、完全な SSL 証明書(ルート / 中間 / リーフ)が含まれている必要があります。サーバーですでに信頼できる CA が使用されているか、HTTPS 経由で接続していない場合は、この手順をスキップして caCertSecretRef を未設定のままにしてください。

RootSync

  1. Git サーバーの証明書の発行に使用された CA 証明書を取得し、ファイルに保存します。

  2. RootSync オブジェクトの場合、Secret は config-management-system Namespace 内に作成する必要があります。次に例を示します。

    kubectl create secret generic ROOT_CA_CERT_SECRET_NAME 
    --namespace=config-management-system
    --from-file=cert=/path/to/CA_CERT_FILE

  3. RootSync オブジェクトを構成する場合は、RootSync オブジェクトの caCertSecretRef.name フィールドの値を ROOT_CA_CERT_SECRET_NAME に設定します。

RepoSync

  1. Git サーバーの証明書の発行に使用された CA 証明書を取得し、ファイルに保存します。

  2. RepoSync オブジェクトの場合、Secret は RepoSync と同じ Namespace に作成する必要があります。次に例を示します。

    kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME 
    --namespace=REPO_SYNC_NAMESPACE
    --from-file=cert=/path/to/CA_CERT_FILE

  3. RepoSync を構成する場合は、RepoSync オブジェクトの caCertSecretRef.name フィールドの値を NAMESPACE_CA_CERT_SECRET_NAME に設定します。

RootSync オブジェクトを削除する

root-sync を削除するには、次のコマンドを実行します。

kubectl delete -f FILE_NAME

FILE_NAME は、RootSync 構成ファイルの名前に置き換えます。例: root-sync.yaml

RootSync オブジェクトまたは RepoSync オブジェクトを削除しても、Config Sync のアノテーションとラベルはクリーンアップされません。マネージド リソースをクリーンアップするには、空の Git ディレクトリから同期します。

次のステップ