このドキュメントでは、GKE On-Prem クラスタの作成に使用できる管理ワークステーションの作成方法について説明します。
このトピックでは、静的 IP アドレスを持つ管理ワークステーションを作成します。これは、静的 IP アドレスを使用するクラスタを作成するときの基本的なインストール手順と同じです。
Dynamic Host Configuration Protocol(DHCP)を使用して IP アドレスを取得する管理ワークステーションを作成する場合、DHCP を使用した管理ワークステーションの作成をご覧ください。
このドキュメントの手順では、gkeadm
コマンドライン ツールを使用します。これは Linux でのみ利用可能です。GKE On-Prem の今後のバージョンでは、Windows と MAC OS でも gkeadm
を使用できるようになります。Windows または MAC OS を実行するパソコンを使用して管理ワークステーションを作成する場合は、静的 IP アドレスを使用した管理ワークステーションの作成または DHCP を使用した管理ワークステーションの作成をご覧ください。
gkeadm
のダウンロード
gkeadm
コマンドライン ツールをダウンロードし、実行可能にします。
gsutil cp gs://gke-on-prem-release-public/gkeadm/1.3.2-gke.1/linux/gkeadm ./ chmod +x gkeadm
構成ファイルのテンプレートの生成
管理ワークステーションを作成するには、gkeadm
ツールに構成ファイルが必要です。構成ファイルのテンプレートを生成するには:
./gkeadm create config
出力は admin-ws-config.yaml
という名前のファイルになります。
gcp: # Path of the allowlisted service account's JSON key file whitelistedServiceAccountKeyPath: "" # Specify which vCenter resources to use vCenter: # The credentials and address GKE On-Prem should use to connect to vCenter credentials: address: "" username: "" ... adminWorkstation: ... network: # The IP allocation mode: 'dhcp' or 'static' ipAllocationMode: "" # # The host config in static IP mode. Do not include if using DHCP # hostConfig: # # The IPv4 static IP address for the admin workstation ...
構成ファイルの入力
このセクションの説明に沿って、構成ファイルでフィールド値を入力します。
gcp.whitelistedServiceAccountKeyPath
文字列。許可リストに登録されたサービス アカウントの JSON キーファイルのパス。JSON キーファイルの作成については、許可リストに登録されたサービス アカウントをご覧ください。例:
whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json"
vCenter.credentials.address
文字列。vCenter Server の IP アドレスまたはホスト名。
address
フィールドを入力する前に、vCenter Server のサービス証明書をダウンロードして検査します。次のコマンドを入力して証明書をダウンロードし、vcenter.pem
という名前のファイルに保存します。
true | openssl s_client -connect VCENTER_IPVCENTER_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-host.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.1" ...
vcenter: credentials: address: "my-host.my-domain.example" ...
vCenter.credentials.username
文字列。vCenter Server のユーザー アカウント。ユーザー アカウントには管理者ロールまたは同等の権限が必要です。vSphere の要件をご覧ください。
例:
username: "administrator@vsphere.local"
vCenter.credentials.password
文字列。vCenter Server ユーザー アカウントのパスワード。例:
password: "#STyZ2T#Ko2o"
vCenter.datacenter
文字列。vSphere データセンターの名前。例:
datacenter: "MY-DATACENTER"
vCenter.datastore
文字列。vSphere データストアの名前。例:
datastore: "MY-DATASTORE"
vCenter.cluster
文字列。vSphere クラスタの名前。次に例を示します。
cluster: "MY-CLUSTER"
vCenter.network
文字列。管理ワークステーションの作成先の vSphere ネットワークの名前。例:
network: "MY-VM-NETWORK"
vCenter.resourcePool
文字列。デフォルト以外のリソースプールを使用している場合は、vSphere リソースプールの名前を指定します。例:
resourcePool: "MY-POOL"
デフォルトのリソースプールを使用している場合は、次の値を指定します。
resourcePool: "MY_CLUSTER/Resources"
MY_CLUSTER
は、vSphere クラスタの名前に置き換えます。
スタンドアロン ホストのルートリソース プールの指定をご覧ください。
vCenter.caCertPath
文字列。GKE On-Prem などのクライアントが vCenter Server にリクエストを送信すると、サーバーは、証明書または証明書バンドルを提示して、ID をクライアントに証明する必要があります。証明書またはバンドルを確認するには、GKE On-Prem に信頼チェーン内のルート証明書が必要です。
vCenter.caCertPath
をルート証明書のパスに設定します。例:
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 Server のアドレスに置き換えます。
unzip
コマンドをインストールし、証明書ファイルを解凍します。
sudo apt-get install unzip unzip downloads.zip
1 回の unzip コマンドで解凍できない場合は、再度コマンドを入力します。
certs/lin
で証明書ファイルを見つけます。
proxyUrl
文字列: gkeadm
の実行に使用するマシンがプロキシ サーバーを使用してインターネットにアクセスする場合は、このフィールドをプロキシ サーバーの URL に設定します。例:
proxyUrl: "https://my-proxy.example.local"
adminWorkstation.name
文字列。管理ワークステーションに付ける名前。例:
name: "my-admin-workstation"
adminWorkstation.cpus
整数。管理ワークステーションの仮想 CPU の数。例:
cpus: 4
adminWorkstation.memoryMB
整数。管理ワークステーションのメモリのメガバイト数。例:
memoryMB: 8192
adminWorkstation.diskGB
整数。管理ワークステーションの仮想ディスク容量のメガバイト数。50 以上の値を指定してください例:
diskGB: 50
adminWorkstation.network.ipAllocationMode
文字列。"static"
に設定します。例:
ipAllocationMode: "static"
adminWorkstation.network.hostConfig.ip
文字列。管理ワークステーション用の任意の IP アドレス。例:
ip: "172.16.5.1"
adminWorkstation.network.hostConfig.gateway
文字列。管理ワークステーションを含むネットワークのデフォルト ゲートウェイの IP アドレス。例:
gateway: "172.16.6.254"
adminWorkstation.network.hostConfig.netmask
文字列。管理ワークステーションを含むネットワークのネットマスク。例:
netmask: "255.255.248.0"
adminWorkstation.network.hostConfig.dns
文字列配列。管理ワークステーションで使用できる DNS サーバーの IP アドレスの配列。例:
dns: - "172.16.255.1" - "172.16.255.2"
adminWorkstation.proxyUrl
文字列。ネットワークがプロキシ サーバーの背後にあり、管理ワークステーションと GKE On-Prem クラスタの両方で同じプロキシ サーバーを使用する場合は、adminworkstation.proxyURL
をプロキシ サーバーの URL に設定します。例:
adminworkstation: proxyUrl: "http://aw-proxy.example"
adminWorkstation.ntpServer
文字列。管理ワークステーションで使用するネットワーク タイム プロトコル サーバーのホスト名または IP アドレス。例:
ntpServer: "216.239.35.0"
空のままにすると、GKE On-Prem は "ntp.ubuntu.com"
を使用します。
完成した admin-ws-config.yaml
ファイルの例を次に示します。
gcp: whitelistedServiceAccountKeyPath: "my-key-folder/whitelisted-key.json" vCenter: credentials: address: "203.0.113.1" username: "administrator.vsphere.local" password: "#STyZ2T#Ko2o" datacenter: "MY-DATACENTER" datastore: "MY-DATASTORE" cluster: "MY-CLUSTER" network: "MY-VM-NETWORK" resourcePool: "MY-POOL" caCertPath: "/usr/local/google/home/me/certs/the-root.cert" proxyUrl: "" adminWorkstation: name: "my-admin-workstation" cpus: 4 memoryMB: 8192 diskGB: 50 network: ipAllocationMode: "static" hostConfig: ip: "172.16.5.1" gateway: "172.16.6.254" netmask: "255.255.248.0" dns: - "172.16.255.1" - "172.16.255.2 proxyUrl: "" ntpServer: "216.239.35.0"
管理ワークステーションの作成
gkeadm
を使用して管理ワークステーションと一連のサービス アカウントを作成するには、resourcemanager.projectIamAdmin
と serviceusage.serviceUsageAdmin
の IAM ロールをデフォルトの Cloud 請求先アカウントに付与する必要があります。デフォルトのアカウントを表示するには、次のコマンドを実行します。
gcloud config get-value account
必要なロールを付与するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEFAULT_ACCOUNT" \ --role="roles/resourcemanager.projectIamAdmin" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEFAULT_ACCOUNT" \ --role="roles/serviceusage.serviceUsageAdmin"
次のように置き換えます。
PROJECT_ID
: Connect プロジェクトの ID。DEFAULT_ACCOUNT
: デフォルトの Cloud 請求先アカウント。
管理ワークステーションと一連のサービス アカウントを作成します。サービス アカウントを手動で作成して構成する場合は、--auto-create-service-accounts
フラグを省略します。
./gkeadm create admin-workstation --auto-create-service-accounts
出力には、管理ワークステーションの作成に関する詳細情報が含まれます。たとえば、gkeadm
が次のタスクを実行したことがわかります。
プリフライト チェックを実行しました。
OVA イメージをダウンロードし、vSphere テンプレートとしてアップロードしました。
SSH 認証鍵を作成しました。
管理ワークステーション VM を作成しました。
管理ワークステーションにインストールされている
gkectl
と Docker のバージョンを出力しました。管理ワークステーション上の NTP サーバーに関する情報を出力しました。
サービス アカウントとその JSON キーファイルを作成しました。これらのサービス アカウントは、許可リストに登録されたサービス アカウントの親であるプロジェクトのメンバーです。
サービス アカウントに適切な IAM ロールを割り当てました。これらのロールは、許可リストに登録されたサービス アカウントの親であるプロジェクトで付与されます。
サービス アカウントの JSON キーファイルを管理ワークステーションにコピーしました。
vCenter Server の CA 証明書ファイルを管理ワークステーションにコピーしました。
管理ワークステーションで
config.yaml
を準備しました。後でconfig.yaml
を使用してクラスタを作成します。
... - Validation Category: vCenter - [SUCCESS] Credentials - [SUCCESS] Version - [SUCCESS] Datacenter - [SUCCESS] Datastore - [SUCCESS] Resource Pool - [SUCCESS] Network All validation results were SUCCESS. ****************************************** Admin workstation VM successfully created: - Name: my-admin-workstation - IP: 172.16.5.1 - SSH Key: /usr/local/google/home/me/.ssh/gke-admin-workstation ****************************************** Printing gkectl and docker versions on admin workstation... gkectl version gkectl 1.3.1-gke.0 (git-3aaf91927) docker version Client: Version: 19.03.2 API version: 1.40 Go version: go1.12.9 Git commit: 6a30dfca03 Built: Mon Sep 30 22:47:02 2019 OS/Arch: linux/amd64 Experimental: false ... Getting allowlisted service account... Creating other service accounts and JSON key files... - log-mon-sa-2004211642 - connect-agent-sa-2004211642 - connect-register-sa-2004211642 Enabling APIs... - project my-project - serviceusage.googleapis.com - iam.googleapis.com - cloudresourcemanager.googleapis.com Configuring IAM roles for service accounts... - my-allowlisted-sa for project my-project - roles/serviceusage.serviceUsageViewer - roles/iam.serviceAccountCreator - roles/iam.roleViewer - log-mon-sa-2004211642 for project my-project - roles/stackdriver.resourceMetadata.writer - roles/logging.logWriter - roles/monitoring.metricWriter - connect-agent-sa-2004211642 for project my-project - roles/gkehub.connect - connect-register-sa-2004211642 for project my-project - roles/gkehub.admin - roles/serviceusage.serviceUsageViewer Copying files to admin workstation... - /usr/local/google/home/me/certs/vcenter-ca-cert.pem - /usr/local/google/home/me/service-account-keys/whitelisted-key.json - log-mon-sa-2004211642.json - connect-agent-sa-2004211642.json - connect-register-sa-2004211642.json Preparing config.yaml for gkectl... ******************************************************************** Admin workstation is ready to use. SSH into the admin workstation with the following command: ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1 ******************************************************************** Admin workstation information saved to /usr/local/google/home/me/my-admin-workstation
管理ワークステーションへの SSH 接続の確立
上述の出力の終わり付近に、管理ワークステーションへの SSH 接続に使用できるコマンドが表示されています。ここで、そのコマンドを入力します。例:
ssh -i /usr/local/google/home/me/.ssh/gke-admin-workstation ubuntu@172.16.5.1
管理ワークステーション上のファイルを一覧表示します。
ls -1
出力に、GKE On-Prem 構成ファイル、CA 証明書ファイル、サービス アカウントの JSON キーファイルが表示されます。
config.yaml connect-agent-sa-200303-143027.json connect-register-sa-200303-143027.json log-mon-sa-200303-143027.json the-root.crt whitelisted-key.json
GKE On-Prem 構成ファイルの検査
管理ワークステーションで、構成ファイルが作成され、config.yaml
という名前が付けられます。後でこのファイルを使用して、管理者クラスタとユーザー クラスタを作成します。テキスト エディタを使用して config.yaml
を開きます。多くのフィールドには、admin-ws-config.yaml
ファイルで指定した値がすでに入力されています。次に例を示します。
vcenter: credentials: address: 203.0.113.1 username: administrator@vsphere.local password: STyZ2T#Ko2o datacenter: MY-DATACENTER datastore: MY-DATASTORE cluster: MY-CLUSTER network: MY-VM-NETWORK … gkeconnect: projectid: my-project-id registerserviceaccountkeypath: /home/ubuntu/connect-register-sa-xxx.json agentserviceaccountkeypath: /home/ubuntu/connect-agent-sa-xxx.json stackdriver: projectid: my-project-id clusterlocation: "" enablevpc: false serviceaccountkeypath: /home/ubuntu/log-mon-sa-xxx.json
単一の Google Cloud プロジェクトの使用
GKE On-Prem 構成ファイルには、Google Cloud プロジェクト ID を指定できるいくつかのフィールドがあります。たとえば、gkeconnect
にプロジェクト ID を指定し、stackdriver
に別のプロジェクト ID を指定できます。
gkeconnect: projectid: "" ... stackdriver: projectid: ""
gkeadm
が GKE on-prem 構成ファイルを準備したときに、すべての projectid
フィールドが、許可リストに登録されたサービス アカウントの親プロジェクトに設定されています。また、gkeadm
によって、許可リストに登録されたサービス アカウントの親であるプロジェクトのサービス アカウントにロールが付与されています。つまり、gkeadm
では、単一の Google Cloud プロジェクトが使用されています。
複数の Google Cloud プロジェクトを柔軟に使用したい場合には、projectid
フィールドに値を手動で入力し、サービス アカウントにロールを手動で付与する必要があります。詳細については、複数の Google Cloud プロジェクトの使用をご覧ください。