バージョン 1.6

管理クラスタの構成ファイル

このページでは、管理クラスタの構成ファイルのフィールドについて説明します。

構成ファイルのテンプレートの生成

gkeadm を使用して管理ワークステーションを作成した場合、gkeadm により管理クラスタの構成ファイル用のテンプレートが生成されます。また、gkeadm によって一部のフィールドに入力されます。

管理ワークステーションの作成に gkeadm を使用していない場合、gkectl を使用して管理クラスタの構成ファイルのテンプレートを生成できます。

管理クラスタの構成ファイルのテンプレートを生成するには:

gkectl create-config admin --config=[OUTPUT_FILENAME]

ここで、[OUTPUT_FILENAME] は生成されたテンプレートの任意のパスです。このフラグを省略すると、gkectl はファイルに admin-cluster.yaml という名前を付け、現在のディレクトリに配置します。

構成ファイルの入力

次のセクションで説明するように、構成ファイルでフィールド値を入力します。

bundlePath

文字列。GKE On-Prem バンドル ファイルのパス。

GKE On-Prem のフルバンドル ファイルには、GKE On-Prem の特定のリリースのすべてのコンポーネントが含まれています。管理ワークステーションを作成すると、フルバンドルが次の場所に追加されます。

/var/lib/gke/bundles/gke-onprem-vsphere-[VERSION]-full.tgz

例:

bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.5.2-gke.3-full.tgz"

vCenter

このセクションには、vCenter 環境に関する情報が表示されます。

vCenter.address

文字列。vCenter Server の IP アドレスまたはホスト名。

address フィールドを入力する前に、vCenter Server のサービス証明書をダウンロードして検査します。次のコマンドを入力して証明書をダウンロードし、vcenter.pem という名前のファイルに保存します。

true | openssl s_client -connect [VCENTER_IP]:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem

ここで、[VCENTER_IP] は vCenter Server の IP アドレスです。

証明書ファイルを開き、サブジェクトの共通名とサブジェクトの代替名を表示します。

openssl x509 -in vcenter.pem -text -noout

出力に Subject 共通名(CN)が表示されます。これが IP アドレスである場合も、ホスト名である場合もあります。例:

Subject: ... CN = 203.0.113.100
Subject: ... CN = my-vcenter-server.my-domain.example

出力では、Subject Alternative Name に 1 つ以上の DNS 名を含めることもできます。

X509v3 Subject Alternative Name:
    DNS:vcenter.my-domain.example

Subject 共通名または Subject Alternative Name のいずれか 1 つの DNS 名を選択して、構成ファイルの vcenter.address の値として使用します。例:

vCenter:
  address: "203.0.113.100"
vCenter:
  address: "my-vcenter-server.my-domain.example"

vCenter.datacenter

文字列。vCenter データセンターの名前。例:

vCenter:
  datacenter: "MY-DATACENTER"

vCenter.cluster

文字列。vCenter クラスタの名前。例:

vCenter:
  cluster: "MY-CLUSTER"

vCenter.resourcePool

文字列。vCenter リソースプールの名前。例:

デフォルト以外のリソースプールを使用している場合は、vCenter リソースプールの名前を指定します。例:

vCenter:
  resourcePool: "MY-POOL"

デフォルトのリソースプールを使用している場合は、次の値を指定します。

vCenter:
  resourcePool: "[VCENTER_CLUSTER]/Resources"

[VCENTER_CLUSTER] は、vCenter クラスタの名前です。

vCenter.datastore

文字列。vCenter データストアの名前。例:

vCenter:
  datastore: "MY-DATASTORE"

スタンドアロン ホストのルートリソース プールの指定をご覧ください。

vCenter.caCertPath

文字列。GKE On-Prem などのクライアントが vCenter Server にリクエストを送信すると、サーバーは、証明書または証明書バンドルを提示して、ID をクライアントに証明する必要があります。証明書またはバンドルを確認するには、GKE On-Prem に信頼チェーン内のルート証明書が必要です。

vCenter.caCertPath をルート証明書のパスに設定します。例:

vCenter:
  caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"

ご使用の VMware インストレーションには、vCenter サーバーに証明書を発行する認証局(CA)があります。信頼チェーンのルート証明書は、VMware が作成した自己署名証明書です。

デフォルトの VMWare CA を使用しない場合は、別の認証局を使用するように VMware を構成できます。

vCenter Server でデフォルトの VMware CA が発行した証明書を使用している場合は、次のように証明書をダウンロードします。

curl -k "https://[SERVER_ADDRESS]/certs/download.zip" > download.zip

ここで、[SERVER_ADDRESS] は vCenter サーバーのアドレスです。

unzip コマンドをインストールし、証明書ファイルを解凍します。

sudo apt-get install unzip
unzip downloads.zip

1 回の unzip コマンドで解凍できない場合は、再度コマンドを入力します。

certs/lin で証明書ファイルを見つけます。

vCenter.credentials.fileRef.path

文字列。vCenter ユーザー アカウントのユーザー名とパスワードを保持する認証情報構成ファイルのパス。ユーザー アカウントには管理者ロールまたは同等の権限が必要です。vSphere の要件をご覧ください。例:

vCenter:
  credentials:
    fileRef:
      path: "my-config-folder/admin-creds.yaml"

vCenter.credentials.fileRef.entry

文字列。vCenter ユーザー アカウントのユーザー名とパスワードを保持する認証情報構成ファイルにある認証情報ブロックの名前。例:

vCenter:
  credentials:
    fileRef:
      entry: "vcenter-creds"

vCenter.dataDisk

文字列。GKE on-prem は、Kubernetes オブジェクト データを保持する仮想マシンディスク(VMDK)を作成します。インストーラによって VMDK が作成されますが、vCenter.dataDisk フィールドに VMDK の名前を指定する必要があります。例:

vCenter:
  dataDisk: "my-disk.vmdk"

network

このセクションには、管理クラスタ ネットワークに関する情報が含まれます。

network.hostConfig

このセクションには、クラスタで使用される NTP サーバー、DNS サーバー、DNS 検索ドメインに関する情報が格納されます。

次のフィールドのどちらかまたは両方に値を指定した場合は、このセクションを入力します。それ以外の場合は、このセクションを削除します。

  • loadBalancer.seesaw.ipBlockFilePath
  • network.ipMode.ipBlockFilePath

network.hostConfig.dnsServers

文字列の配列。ホストが使用する DNS サーバーのアドレス。例:

network:
  hostConfig:
    dnsServers:
    - "172.16.255.1"
    - "172.16.255.2"

network.hostConfig.ntpServers

文字列の配列。ホストが使用する時刻サーバーのアドレス。例:

network:
  hostConfig:
    ntpServers:
    - "216.239.35.0"

network.hostConfig.searchDomainsForDNS

文字列の配列。ホストが使用する DNS 検索ドメイン。これらのドメインは、ドメイン検索リストの一部として使用されます。例:

network:
  hostConfig:
    searchDomainsForDNS:
    - "my.local.com"

network.ipMode.type

文字列。クラスタノードが DHCP サーバーから IP アドレスを取得するようにするには、これを "dhcp" に設定します。クラスタノードに、指定したリストから静的 IP アドレスを選択させる場合は、これを "static" に設定します。

例:

network:
  ipMode:
    type: "static"

network.ipMode.ipBlockFilePath

ipMode.type"static" に設定した場合は、このフィールドに入力します。

ipMode.type"dhcp" に設定した場合は、このフィールドを削除します。

文字列。管理クラスタノードの IP ブロック ファイルのパス。例:

network:
  ipMode:
    ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"

network.serviceCIDRnetwork.podCiDR

文字列。管理クラスタには、Service に使用する IP アドレスの範囲と Pod に使用する IP アドレスの範囲が必要です。これらの範囲は、network.serviceCIDR フィールドと network.podCIDR フィールドで指定します。これらのフィールドにはデフォルト値が入力されています。入力した値は、必要に応じて任意の値に変更できます。

Service と Pod の範囲は重複しないようにします。また、Service と Pod の範囲が、クラスタ内のノードで使用する IP アドレスと重複しないようにしてください。

例:

network:
  ...
  serviceCIDR: "10.96.232.0/24"
  podCIDR: "192.168.0.0/16"

network.vCenter.networkName

文字列。クラスタノードの vSphere ネットワークの名前。

名前に特殊文字が含まれる場合は、エスケープ シーケンスを使用する必要があります。

特殊文字 エスケープ シーケンス
スラッシュ(/ %2f
バックスラッシュ(\ %5c
パーセント記号(% %25

ネットワーク名が一意でない場合は、/DATACENTER/network/NETWORK_NAME などのネットワークのパスを指定できます。

例:

network:
  vCenter:
    networkName: "MY-CLUSTER-NETWORK"

loadBalancer

このセクションでは、管理クラスタのロードバランサに関する情報について説明します。

loadBalancer.vips.controlPlaneVIP

文字列。管理クラスタの Kubernetes API サーバー用にロードバランサで構成するために選択した IP アドレス。例:

loadBalancer:
  vips:
    controlplaneVIP: "203.0.113.3"

loadBalancer.vips.addonsVIP

文字列。ロードバランサでアドオン用に選択した IP アドレス。例:

loadBalancer:
  vips:
    addonsVIP: "203.0.113.4"

loadBalancer.kind

文字列。"Seesaw""F5BigIP""ManualLB" のいずれかに設定します。次に例を示します。

loadBalancer:
  kind: "Seesaw"

loadBalancer.manualLB

loadbalancer.kind"ManualLB" に設定した場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

loadBalancer.manualLB.ingressHTTPNodePort

このフィールドを構成ファイルから削除します。管理クラスタでは使用されません。

loadBalancer.manualLB.ingressHTTPSNodePort

このフィールドを構成ファイルから削除します。管理クラスタでは使用されません。

loadBalancer.manualLB.controlPlaneNodePort

整数。管理クラスタの Kubernetes API サーバーは、NodePort 型の Service として実装されます。Service の nodePort 値を選択する必要があります。

このフィールドに nodePort 値を設定します。例:

loadBalancer:
  manualLB:
    contolPLaneNodePort: 30968

loadBalancer.manualLB.addonsNodePort

整数。管理クラスタ内のアドオン サーバーは、NodePort 型の Service として実装されます。Service の nodePort 値を選択する必要があります。

このフィールドに nodePort 値を設定します。例:

loadBalancer:
  manualLB:
    addonsNodePort: 31405

loadBalancer.f5BigIP

loadbalancer.kind"f5BigIP" に設定した場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

loadBalancer.f5BigIP.address

文字列。F5 BIG-IP ロードバランサのアドレス。例:

loadBalancer:
  f5BigIP:
    address: "203.0.113.2"

loadBalancer.f5BigIP.fileRef.path

文字列。GKE On-Prem が F5 BIG-IP ロードバランサへの接続に使用できるアカウントのユーザー名とパスワードが保持される認証情報構成ファイルのパス。例:

loadBalancer:
  f5BigIP:
    fileRef:
      path: ""my-config-folder/admin-creds.yaml"

loadBalancer.f5BigIP.fileRef.entry

文字列。F5 BIG-IP アカウントのユーザー名とパスワードを保持する認証情報構成ファイルにある認証情報ブロックの名前。例:

loadBalancer:
  f5BigIP:
    fileRef:
      entry: "f5-creds"

loadBalancer.f5BigIP.partition

文字列。管理クラスタ用に作成した BIG-IP パーティションの名前。例:

loadBalancer:
  f5BigIP:
    partition: "my-f5-admin-partition"

loadBalancer.f5BigIP.snatPoolName

文字列。SNAT を使用している場合は、SNAT プールの名前。SNAT を使用していない場合は、このフィールドを削除します。例:

loadBalancer:
  f5BigIP:
    snatPoolName: "my-snat-pool"

loadBalancer.seesaw

loadbalancer.kind"Seesaw" に設定した場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

loadBalancer.seesaw.ipBlockFilePath

文字列。Seesaw VM の IP ブロック ファイルのパスに設定します。例:

loadBalancer:
  seesaw:
    ipBlockFilePath: "admin-seesaw-ipblock.yaml"

loadBalancer.seesaw.vird

整数。Seesaw VM の仮想ルーター識別子。この識別子は VLAN 内で一意なものにする必要があります。有効な範囲は 1~255 です。例:

loadBalancer:
  seesaw:
    vrid: 125

loadBalancer.seesaw.masterIP

文字列。Seesaw VM または VM ペアの VIP。例:

loadBalancer:
  seesaw:
    masterIP: 172.16.20.21

loadBalancer.seesaw.cpus

整数。Seesaw VM の CPU 数。例:

loadBalancer:
  seesaw:
    cpus: 8

loadBalancer.seesaw.memoryMB

整数。Seesaw VM のメモリのメガバイト数。例:

loadBalancer:
  seesaw:
    memoryMB: 8192

loadBalancer.seesaw.vCenter.networkName

文字列。Seesaw VM を含むネットワークの名前。例:

loadBalancer:
  seesaw:
    vCenter:
      networkName: "my-seesaw-network"

loadBalancer.seesaw.enableHA

ブール値。高可用性の Seesaw ロードバランサを作成する場合は、これを true に設定します。それ以外の場合は false に設定します。例:

loadBalancer:
  seesaw:
    enableHA: true

antiAffinityGroups.enabled

ブール値。DRS ルールの作成を有効にするには、この値を true に設定します。それ以外の場合は false に設定します。例:

antiAffinityGroups:
  enabled true

GKE On-Prem は管理クラスタのノードに対して VMware Distributed Resource Scheduler(DRS)の反アフィニティ ルールを自動的に作成し、データセンター内の少なくとも 3 つの物理ホストにそれを分散させます。

この機能を使用するには、vSphere 環境が次の条件を満たしている必要があります。

  • VMware DRS が有効になっていること。VMware DRS には、vSphere Enterprise Plus ライセンス エディションが必要です。

  • vSphere ユーザー アカウントに Host.Inventory.Modify cluster 権限があること。

  • 利用可能な物理ホストが少なくとも 3 つあること。

前述のとおり、vSphere スタンダード ライセンスがある場合、VMware DRS を有効にすることはできません。

DRS が有効になっていない場合や、vSphere VM をスケジュール設定できるホストが 3 つ以上ない場合は、antiAffinityGroups.enabledfalse に設定します。

proxy

ネットワークがプロキシ サーバーの背後にある場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

proxy.url

文字列。プロキシ サーバーの HTTP アドレス。スキームのデフォルト ポートと同じ場合でも、ポート番号を含めます。例:

proxy:
  url: "http://my-proxy.example.local:80"

ここで指定するプロキシ サーバーは、GKE On-Prem クラスタで使用されます。また、管理ワークステーションで HTTPS_PROXY 環境変数を設定しない限り、管理ワークステーションはこの同じプロキシ サーバーを使用するように自動的に構成されます。

proxy.url を指定する場合は、proxy.noProxy も指定する必要があります。

proxy.noProxy

文字列。プロキシ サーバーを経由しない IP アドレス、IP アドレス範囲、ホスト名、ドメイン名のカンマ区切りのリスト。GKE On-Prem がこれらのアドレス、ホスト、ドメインのいずれかにリクエストを送信する場合、そのリクエストは直接送信されます。例:

proxy:
  noProxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"

privateRegistry

非公開の Docker レジストリがある場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

privateRegistry.address

文字列。非公開の Docker レジストリを実行するマシンの IP アドレス。例:

privateRegistry:
  address: "203.0.113.10"

privateRegistry.credentials.fileRef.path

文字列。GKE On-Prem が非公開 Docker レジストリへのアクセスに使用できるアカウントのユーザー名とパスワードを保持する認証情報構成ファイルのパス。例:

privateRegistry:
  credentials:
    fileRef:
      path: "my-config-folder/admin-creds.yaml"

privateRegistry.credentials.fileRef.entry

文字列。非公開 Docker レジストリのアカウントのユーザー名とパスワードを保持する認証情報構成ファイルにある認証情報ブロックの名前。

privateRegistry:
  credentials:
    fileRef:
      entry: "private-registry-creds"

privateRegistry.caCertPath

文字列。Docker が非公開レジストリからイメージを pull する場合、レジストリは証明書を提示して自身の ID を証明する必要があります。レジストリの証明書は、認証局(CA)によって署名されます。Docker は、CA 証明書を使用してレジストリの証明書を検証します。

このフィールドを CA 証明書のパスに設定します。例:

privateRegistry:
  caCertPath: "my-cert-folder/registry-ca.crt"

gcrKeyPath

文字列。GKE On-Prem コンポーネントのダウンロードに使用するサービス アカウントの JSON キーファイルのパス。例:

gcrKeyPath: "my-key-folder/access-key.json"

stackdriver

このセクションでは、ログと指標の保存に使用するプロジェクトとサービス アカウントに関する情報について説明します。

stackdriver.projectID

文字列。ログを表示する Google Cloud プロジェクトのプロジェクト ID。例:

stackdriver:
  projectID: "my-logs-project"

stackdriver.clusterLocation

文字列。ログを保存する Google Cloud リージョン。お使いのオンプレミス データセンターの近くのリージョンを選択することをおすすめします。例:

stackdriver:
  clusterLocation: "us-central1"

stackdriver.enableVPC

ブール値。クラスタのネットワークが VPC によって管理されている場合は、このフィールドを true に設定します。これにより、すべてのテレメトリーが Google の制限された IP アドレスを通過するようになります。それ以外の場合は、このフィールドに false を設定します。例:

stackdriver:
  enableVPC: false

stackdriver.serviceAccountKeyPath

文字列。ロギング モニタリング サービス アカウントの JSON 鍵ファイルのパス。例:

stackdriver:
  serviceAccountKeyPath: "my-key-folder/log-mon-key.json"

cloudAuditLogging

クラスタの Kubernetes API サーバーの監査ログを Cloud Audit Logs と統合する場合は、このセクションに入力します。それ以外の場合は、このセクションを削除します。

cloudAuditLogging.projectid

文字列。監査ログを表示する Google Cloud プロジェクトのプロジェクト ID。例:

cloudAuditLogging:
  projectid: "my-audit-project"

cloudAuditLogging.clusterlocation

文字列。監査ログを保存する Google Cloud のリージョン。お使いのオンプレミス データセンターの近くのリージョンを選択することをおすすめします。例:

cloudAuditLogging:
  clusterlocation: "us-central1"

cloudAuditLogging.serviceaccountkeypath

文字列。監査ログ サービス アカウントの JSON 鍵ファイルのパス。例:

cloudAuditLogging:
  serviceaccountkeypath: "my-key-folder/audit-log-key.json"

autoRepair.enabled

ブール値。ノードの自動修復を有効にするには、これを true に設定します。それ以外の場合は false に設定します。例:

autoRepair:
  enabled: true