ユーザー クラスタの構成ファイル

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

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

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

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

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

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

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

構成ファイルの入力

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

name

文字列。ユーザー クラスタの任意の名前。例:

name: "my-user-cluster"

gkeOnPremVersion

文字列。ユーザー クラスタの GKE On-Prem のバージョン。例:

gkeOnPremVersion: 1.4.3-gke.3

vCenter

vCenter 環境のすべての要素を管理クラスタに指定したものと同じにする場合は、このセクションを削除するか、コメントアウトしたままにします。

vCenter 環境の一部を管理クラスタに対して指定したのとは異なるものにする場合は、このセクションの該当するフィールドに入力します。ここで vCenter セクションで設定したフィールドにより、管理クラスタ構成ファイルの対応するフィールドがオーバーライドされます。

vCenter.credentials.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.101
Subject: ... CN = my-user-vc-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.credentials.address の値として使用します。例:

vCenter:
  credentials:
    address: "203.0.113.101"
    ...
vCenter:
  credentials:
    address: "my-user-vc-server.my-domain.example"
    ...

vCenter.credentials.username

文字列。ユーザー クラスタの vCenter Server にアクセスするための vCenter Server ユーザー アカウント。ユーザー アカウントには管理者ロールまたは同等の権限が必要です。vSphere の要件をご覧ください。

例:

vCenter:
  credentials:
    username: "my-user-account@vsphere.local"

vCenter.credentials.password

文字列。vCenter Server ユーザー アカウントのパスワード。例:

vCenter:
  credentials:
    password: "#STyZ2T#Ko2o"

vCenter.datastore

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

vCenter:
  datastore: "MY-USER-DATASTORE"

vCenter.resourcePool

文字列。ユーザー クラスタの vCenter リソースプールの名前。デフォルト以外のリソースプールを使用している場合は、vCenter リソースプールの名前を指定します。

例:

vCenter:
  resourcePool: "MY-USER-POOL"

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

vCenter:
  resourcePool: "[VCENTER_CLUSTER]/Resources"

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

スタンドアロン ホストのルートリソース プールの指定を参照してください。

vCenter.caCertPath

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

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

vCenter:
  caCertPath: "/usr/local/google/home/me/certs/user-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 で証明書ファイルを見つけます。

network

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

network.ipMode.type

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

network:
  ipMode:
    type: "static"

network.ipBlockFilePath

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

ipMode.type"dhcp" に設定した場合は、このフィールドを削除するか、コメントアウトしたままにします。

文字列。ユーザー クラスタの hostconfig ファイルのパス。例:

network:
  ipBlockFilePath: "/my-config-directory/user-hostconfig.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-USER-CLUSTER-NETWORK"

loadBalancer

このセクションには、ユーザー クラスタのロードバランサに関する情報が含まれます。

loadBalancer.vips.controlPlaneVIP

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

loadBalancer:
  vips:
    controlplaneVIP: "203.0.113.3"

loadBalancer.vips.ingressVIP

上り(内向き)トラフィックのロードバランサに選択した IP アドレス。例:

loadBalancer:
  vips:
    ingressVIP: "203.0.113.4"

loadBalancer.kind

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

loadBalancer:
  kind: "Seesaw"

loadBalancer.manualLB

loadbalancer.kind"manualLB" に設定した場合は、このセクションに入力します。それ以外の場合は、このセクションを削除するか、コメントアウトしたままにします。

loadBalancer.manualLB.ingressHTTPNodePort

整数。管理クラスタの Ingress サービスは、NodePort 型の Service として実装されます。この Service には、HTTP 用の ServicePort があります。HTTP ServicePorts の nodePort 値を選択する必要があります。

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

loadBalancer:
  manualLB:
    ingressHTTPNodePort: 32527

loadBalancer.manualLB.ingressHTTPSNodePort

整数。管理クラスタの Ingress サービスは、NodePort 型の Service として実装されます。この Service には HTTPS 用の ServicePort があります。HTTPS ServicePort の nodePort 値を選択する必要があります。

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

loadBalancer:
  manualLB:
    ingressHTTPSNodePort: 30139

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.credentials.address

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

loadBalancer:
  f5BigIP:
    credentials:
      address: "203.0.113.2"

loadBalancer.f5BigIP.credentials.username

文字列。GKE On-Prem が F5 BIG-IP ロードバランサへの接続に使用できるアカウントのユーザー名。例:

loadBalancer:
  f5BigIP:
    credentials:
      username: "my-admin-f5-name"

loadBalancer.f5BigIP.credentials.password

文字列。GKE On-Prem が F5 BIG-IP ロードバランサへの接続に使用できるパスワード。例:

loadBalancer:
  f5BigIP:
    credentials:
      password: "rJDlm^%7aOzw"

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 の hostconfig ファイルのパスに設定します。例:

loadbalancer:
  seesaw:
    ipBlockFilePath: "admin-seesaw-hostconfig.yaml"

loadBalancer.seesaw.vird

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

loadBalancer:
  seesaw:
    vrid: 125

loadBalancer.seesaw.masterIP

文字列。コントロール プレーンの Seesaw 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

masterNode

このセクションには、ユーザー クラスタのコントロール プレーン ノードとして機能する管理クラスタ内のノードに関する情報が含まれます。

masterNode.cpus

整数。このユーザー クラスタのコントロール プレーンとして機能する各管理クラスタノードの CPU 数。例:

masterNode:
  cpus: 8

masterNode.memoryMB

整数。このユーザー クラスタのコントロール プレーンとして機能する各管理クラスタノードのメモリのメガバイト数。例:

masterNode:
  memoryMB: 8192

masterNode.replicas

整数。このユーザー クラスタのコントロール プレーン ノードの数。このフィールドに 1 または 3 を設定します。例:

masterNode:
  replicas: 3

nodePools

オブジェクトの配列。各オブジェクトはノードプールを表します。

nodePools[i].name

文字列。ノードプールに付ける名前。例:

nodePools:
- name: "my-node-pool"

noodePools[i].labels

マッピング。プール内の各ノードに適用するラベル。例:

nodePools:
- name: "my-node-pool"
  labels:
    environment: "production"
    tier: "cache"

nodePools[i].taints

オブジェクトの配列。各オブジェクトは taint を表します。例:

nodePools:
- name: "my-node-pool"
  taints:
  - key: "staging"
    value: "true"
    effect: "NoSchedule"

nodePools[i].cpus

整数。プール内の各ノードの CPU 数。例:

nodePools"
- name: "my-node-pool"
  cpus: 8

nodePools[i].memoryMB

整数。プール内の各ノードのメモリ容量(MB)。例:

nodePools"
- name: "my-node-pool"
  memoryMB: 8192

nodePools[i].replicas

整数。プール内のノード数。例:

nodePools:
- name: "my-node-pool"
  replicas: 5

nodePools[i].vsphere.datastore

文字列。プール内の各ノードが作成される vCenter データストアの名前。例:

nodePools:
- name: "my-node-pool"
  vsphere:
    datastore: "my-datastore"

antiAffinityGroups.enabled

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

antiAffinityGroups:
  enabled: true

authentication

このセクションには、クラスタ ユーザーの認証方法と認可方法に関する情報が含まれます。

authentication.oidc

OpenID Connect(OIDC)を使用してこのクラスタへのアクセスを管理する場合は、このセクションに入力します。それ以外の場合は、このセクションを削除するか、コメントアウトしたままにします。

authentication.oidc.issuerURL

文字列。OpenID プロバイダの URL。クライアント アプリケーション(gcloud CLI や Google Cloud コンソールなどの)で、この URL に認証リクエストを送信します。Kubernetes API サーバーは、この URL を使用してトークン検証用の公開鍵を検出します。HTTPS を使用する必要があります。例:

authentication:
  oidc:
    issuerURL: "https://example.com/adfs"

authentication.oidc.kubectlRedirectURL

文字列。gcloud CLI のリダイレクト URL。例:

authentication:
  oidc:
    kubectlRedirectURL: "https://localhost:1025/callback"

authentication.oidc.clientID

文字列。OpenID プロバイダへの認証リクエストを行うクライアント アプリケーションの ID。gcloud CLI と Google Cloud コンソールの両方でこの ID が使用されます。例:

authentication:
  oidc:
    clientID: "my-big-hex-string"

authentication.oidc.clientSecret

文字列。クライアント アプリケーション用の Secret。gcloud CLI と Google Cloud コンソールの両方でこの Secret が使用されます。例:

authentication:
  oidc:
    clientSecret: "N3i&JlLZoD!W"

authentication.oidc.username

文字列。ユーザー名として使用する JWT クレーム。デフォルトは sub で、これはエンドユーザーの一意の識別子である必要があります。OpenID プロバイダによっては、emailname などの他のクレームを選択できます。ただし、他のプラグインとの競合を避けるため、email 以外のクレームには発行者の URL が先頭に付加されます。例:

authentication:
  oidc:
    username: "sub"

authentication.oidc.usernamePrefix

文字列。既存の名前と競合しないように、ユーザー名のクレームの先頭に付加される接頭辞。このフィールドを指定せず、usernameemail 以外の値の場合、接頭辞はデフォルトの issuerurl# になります。値 - を使用すると、すべての接頭辞を無効にできます。例:

authentication:
  oidc:
    usernamePrefix: "my-prefix"

authentication.oidc.group

文字列。プロバイダがセキュリティ グループを返すために使用する JWT クレーム。例:

authentication:
  oidc:
    group: "sec-groups"

authentication.oidc.groupPrefix

文字列。既存の名前と競合しないように、グループ クレームの先頭に付加される接頭辞。たとえば、グループ foobar と接頭辞 gid- が指定されている場合、gid-foobar となります。デフォルトでは、この値は空で、接頭辞はありません。例:

authentication:
  oidc:
    groupPrefix: "gid-"

authentication.oidc.scopes

文字列。OpenID プロバイダに送信する追加スコープのカンマ区切りリスト。例:

authentication:
  oidc:
    scopes: "offline-access"

Microsoft Azure または Okta による認証の場合は、これを offline_access に設定します。

authentication.oidc.extraParams

文字列。OpenID プロバイダに送信する追加の Key-Value パラメータのカンマ区切りリスト。

例:

authentication:
  oidc:
    extraparams: "prompt=consent"

authentication.oidc.deployCloudConsoleProxy

文字列。ユーザー認証用のオンプレミス OIDC プロバイダへの Google Cloud Console でのアクセスを許可するために、クラスタにリバース プロキシをデプロイするかどうかを指定します。文字列("true" または "false")である必要があります。ID プロバイダが公開されたインターネット経由で到達できない場合、Google Cloud Console を使用して認証するには、このフィールドに "true" を設定する必要があります。空白のままにすると、このフィールドはデフォルトで "false" になります。

authentication.oidc.caPath

文字列。ID プロバイダのウェブ証明書を発行した認証局(CA)の証明書へのパス。この値は必須ではない場合があります。たとえば、ID プロバイダの証明書がよく知られている公開 CA によって発行された場合は、ここに値を指定する必要はありません。ただし、deployCloudConsoleProxy"true" の場合は、よく知られた公開 CA であってもこの値を指定する必要があります。

例:

authentication:
  oidc:
    caPath: "my-cert-folder/provider-root-cert.pem"

authentication.sni

クラスタの Kubernetes API サーバーに追加のサービス証明書を提供する場合は、このセクションに入力してください。それ以外の場合は、このセクションを削除するか、コメントアウトしたままにします。

authentication.sni.certPath

文字列。Kubernetes API サーバーのサービス証明書のパス。例:

authentication:
  sni:
    certPath: "my-cert-folder/example.com.crt"

authentication.sni.keyPath

文字列。証明書の秘密鍵ファイルのパス。例:

authentication:
  sni:
    keyPath: "my-cert-folder/example.com.key"

stackdriver

このセクションには、ログと指標の保存に使用する Google Cloud プロジェクトとサービス アカウントに関する情報が含まれます。

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"

gkeConnect

このセクションには、クラスタを Google Cloud に接続するために使用する Google Cloud プロジェクトとサービス アカウントに関する情報が含まれます。

gkeConnect.projectID

文字列。クラスタを Google Cloud プロジェクトに接続するために使用する Cloud プロジェクトの ID。次に例を示します。

gkeConnect:
  projectID: "my-connect-project-123"

gkeConnect.registerServiceAccountKeyPath

文字列。接続登録サービス アカウントの JSON 鍵ファイルのパス。例:

gkeConnect:
  registerServiceAccountKeyPath: "my-key-folder/connect-register-key.json"

gkeConnect.agentServiceAccountKeyPath

文字列。接続エージェント サービス アカウントの JSON 鍵ファイルのパス。例:

gkeConnect:
  agentServiceAccountKeyPath: "my-key-folder/connect-agent-key.json"

usageMetering

クラスタの使用状況の測定を有効にする場合は、このセクションに入力します。それ以外の場合は、このセクションを削除するか、コメントアウトしたままにします。

usageMetering.bigQueryProjectID

文字列。使用状況の測定データを保存する Google Cloud プロジェクトの ID。例:

usageMetering:
  bigQueryProjectID: "my-bq-project"

usageMetering.bigQueryDatasetID

文字列。使用状況の測定データを格納する BigQuery データセットの ID。例:

usageMetering:
  bigQueryDatasetID: "my-bq-dataset"

usageMetering.bigQueryServiceAccountKeyPath

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

usageMetering:
  bigQueryServiceAccountKeyPath: "my-key-folder/bq-key.json"

usageMetering.enableConsumptionMetering

ブール値。使用量をベースとした測定を有効にするには、これを true に設定します。それ以外の場合は false に設定します。例:

usageMetering:
  enableConsumptionMetering: true

cloudRun.enabled

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

cloudRun:
  enabled: true