このページでは、 Google Cloud コンソールまたは Google Cloud CLI を使用して Config Sync をインストールした後に、kubectl コマンドで Config Sync を構成する方法について説明します。
コンソールまたは CLI を使用して多くの構成を変更できますが、SSL 証明書の検証を制御したり、認証局を使用したりするには、kubectl コマンドを使用して Config Sync のデフォルトをオーバーライドする必要があります。
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。noSSLVerify が true に設定されている場合、Git は SSL 証明書の検証をスキップします。 |
spec.git.caCertSecretRef.name |
認証局(CA)証明書を含む Secret の名前。このフィールドを指定する場合、Git サーバーはこの CA によって発行された証明書を使用する必要があります。CA 証明書は「cert」という名前の鍵で Secret に保存する必要があります。 |
spec.override.resources |
コンテナ リソースのリクエストと上限のオーバーライドのリスト。省略可。 リストの各項目には、次の 3 つのフィールドが含まれます。
リソースのリクエストまたは上限のオーバーライド値が指定されていない場合は、リクエストまたは上限のデフォルトのリソース値が使用されます。 |
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 です。このフィールドの値を文字列で指定します(例: 30s、5m)。 |
spec.override.enableShellInRendering |
enableShellInRendering は、レンダリング プロセスでシェルアクセスを有効にするかどうかを指定します。Kustomize のリモートベースにはシェルアクセスが必要です。このフィールドを true に設定すると、レンダリング プロセスでのシェルアクセスが有効になり、公開リポジトリからリモートベースを pull できます。デフォルト値は false です。 |
ファイルを作成する
root-sync の構成ファイルを作成および編集するには、次の手順を完了します。
正しいクラスタの構成情報を確実に取得するには、
kubectlコマンドライン アクセスを構成します。gcloud container clusters get-credentials CLUSTER_NAME \ --zone ZONE \ --project PROJECT_ID次のように置き換えます。
CLUSTER_NAME: 変更する Config Sync 構成のあるクラスタの名前ZONE: クラスタを作成したゾーンPROJECT_ID: プロジェクト ID
Config Sync が作成した RootSync オブジェクトの構成情報を YAML ファイルにコピーします。
kubectl get rootsync root-sync -n config-management-system -o yaml > FILE_NAME.yamlFILE_NAMEは、構成ファイルの名前に置き換えます。作成した 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変更を YAML ファイルに追加します。
kubectl apply -f FILE_NAME.yamlConfig Sync によって変更が適用されたことを確認するには、RootSync オブジェクトを表示します。
kubectl describe rootsync root-sync -n config-management-system変更によってエラーが発生していないことを確認するには、
nomos statusコマンドを使用します。nomos status
認証局を構成する
まだ信頼されていない認証局(CA)の証明書が構成されているサーバーの場合、CA 証明書を使用してサーバーへの HTTPS 接続を検証するように Config Sync を構成できます。これは、Git、Helm、または OCI サーバーでサポートされています。CA 証明書には、完全な SSL 証明書(ルート / 中間 / リーフ)が含まれている必要があります。サーバーですでに信頼できる CA が使用されているか、HTTPS 経由で接続していない場合は、この手順をスキップして caCertSecretRef を未設定のままにしてください。
RootSync
Git サーバーの証明書の発行に使用された CA 証明書を取得し、ファイルに保存します。
RootSyncオブジェクトの場合、Secret はconfig-management-systemNamespace 内に作成する必要があります。次に例を示します。kubectl create secret generic ROOT_CA_CERT_SECRET_NAME
--namespace=config-management-system
--from-file=cert=/path/to/CA_CERT_FILERootSyncオブジェクトを構成する場合は、RootSyncオブジェクトのcaCertSecretRef.nameフィールドの値を ROOT_CA_CERT_SECRET_NAME に設定します。
RepoSync
Git サーバーの証明書の発行に使用された CA 証明書を取得し、ファイルに保存します。
RepoSyncオブジェクトの場合、Secret は RepoSync と同じ Namespace に作成する必要があります。次に例を示します。kubectl create secret generic NAMESPACE_CA_CERT_SECRET_NAME
--namespace=REPO_SYNC_NAMESPACE
--from-file=cert=/path/to/CA_CERT_FILERepoSyncを構成する場合は、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 ディレクトリから同期します。
次のステップ
- RootSync フィールドと RepoSync フィールドの詳細を確認する。
- RootSync オブジェクトと RepoSync オブジェクトをモニタリングする方法を確認する。