このページでは、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 。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.yaml
FILE_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.yaml
Config 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-system
Namespace 内に作成する必要があります。次に例を示します。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 オブジェクトをモニタリングする方法を確認する。