このページでは、GKE On-Prem のインストールに使用できる管理ワークステーションを作成する方法について説明します。
このトピックでは、静的 IP アドレスを持つ管理ワークステーションを作成します。
Dynamic Host Configuration Protocol(DHCP)を使用して IP アドレスを取得する管理ワークステーションを作成する場合、DHCP を使用した管理ワークステーションの作成をご覧ください。
Linux でコマンドを実行する場合は、このトピックの手順に代わる別の方法があります。別の方法とは、管理ワークステーションの作成の大部分を自動化する gkeadm
ツールを使用することです。
概要
管理ワークステーションは、GKE On-Prem クラスタを作成して管理するために必要なすべてのツールを備えた、vSphere VM です。管理ワークステーションを作成するには、このトピックで説明される次の手順を行います。
- 管理ワークステーション VM の圧縮イメージである管理ワークステーション Open Virtual Appliance(OVA)ファイルをダウンロードします。
- vSphere へのコマンドライン インターフェースである
govc
を使用して、OVA を vSphere に VM テンプレートとしてインポートします。 - HashiCorp Terraform 構成ファイルをコピーして入力します。
- Terraform バージョン 0.11 を使用して、管理ワークステーション VM を作成します。
許可リストに登録したサービス アカウントのキーを作成する
許可リストに登録したサービス アカウントの JSON キーファイルがない場合は、ここで作成します。
gcloud auth login
-
gcloud iam service-accounts keys create whitelisted-key.json \ --iam-account [ALLOWLISTED_SERVICE_ACCOUNT_EMAIL]
ここで、[ALLOWLISTED_SERVICE_ACCOUNT_EMAIL] は許可リストに登録されたサービス アカウントのメールアドレスです。
管理ワークステーション OVA をダウンロードする
管理ワークステーションの OVA には、GKE On-Prem クラスタのインストールと管理に必要なすべてのクラスタ コンポーネント、コマンドライン ツール、その他のエンティティが含まれています。
許可リストに登録されたサービス アカウントを有効にします。
gcloud auth activate-service-account --key-file [KEY_ALLOWLISTED_ACCOUNT]
ここで、[KEY_ALLOWLISTED_ACCOUNT] は許可リストに登録したサービス アカウントの JSON キーファイルのパスです。
最新バージョンの管理ワークステーション OVA とその署名ファイルをダウンロードします。
gsutil cp gs://gke-on-prem-release/admin-appliance/1.3.2-gke.1/gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1.{ova,ova.1.sig} ./
openssl
を使用して OVA を検証する
openssl
を使用して、公開鍵に対してダウンロードした OVA ファイルを確認します。
openssl dgst -verify - -signature gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1.ova.1.sig gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1.ova <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
このコマンドで想定される出力は Verified OK
です。
govc
を使用して OVA を vSphere にインポートし、VM テンプレートとしてマークする
以降のセクションでは、以下を行います。
- vCenter Server と vSphere 環境の要素を宣言する変数を作成する。
- 管理ワークステーションの OVA を vSphere にインポートし、VM テンプレートとしてマークする。
govc
の変数を作成する
管理ワークステーション OVA を vSphere にインポートする前に、vCenter Server と vSphere 環境の要素を宣言する変数を govc
に指定する必要があります。
export GOVC_URL=https://[VCENTER_SERVER_ADDRESS]/sdk export GOVC_USERNAME=[VCENTER_SERVER_USERNAME] export GOVC_PASSWORD=[VCENTER_SERVER_PASSWORD] export GOVC_DATASTORE=[VSPHERE_DATASTORE] export GOVC_DATACENTER=[VSPHERE_DATACENTER] export GOVC_INSECURE=true
次のように、vSphere のデフォルトのリソースプールを使用することも、独自のリソースプールを作成することもできます。
# If you want to use a resource pool you've configured yourself, export this variable: export GOVC_RESOURCE_POOL=[VSPHERE_CLUSTER]/Resources/[VSPHERE_RESOURCE_POOL]
# If you want to use vSphere's default resource pool, export this variable instead: export GOVC_RESOURCE_POOL=[VSPHERE_CLUSTER]/Resources
ここで
- [VCENTER_SERVER_ADDRESS] は、vCenter Server の IP アドレスまたはホスト名です。
- [VCENTER_SERVER_USERNAME] は、vCenter Server で管理者のロールまたは同等の権限を持つアカウントのユーザー名です。
- [VCENTER_SERVER_PASSWORD] は、vCenter Server アカウントのパスワードです。
- [VSPHERE_DATASTORE] は、vSphere 環境で構成したデータストアの名前です。
- [VSPHERE_DATACENTER] は、vSphere 環境で構成したデータセンターの名前です。
- [VSPHERE_CLUSTER] は、vSphere 環境で構成したクラスタの名前です。 デフォルト以外のリソースプールを使用する場合、
- [VSPHERE_RESOURCE_POOL] は、vSphere 環境で構成したリソースプールの名前です。
プロキシの変数を作成する
プロキシを使用している場合は、HTTP アドレスと HTTPS アドレスの変数をエクスポートします。[PROXY_ADDRESS] はプロキシの IP アドレスまたはホスト名です。
export HTTP_PROXY=http://[PROXY_ADDRESS] export HTTPS_PROXY=https://[PROXY_ADDRESS]
OVA を vSphere(標準スイッチ)にインポートする
vSphere 標準スイッチを使用している場合、次のコマンドを使用して OVA を vSphere にインポートします。
govc import.ova -options - gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1.ova <<EOF { "DiskProvisioning": "thin", "MarkAsTemplate": true } EOF
OVA を vSphere(分散スイッチ)にインポートする
vSphere 分散スイッチを使用している場合、このコマンドを実行して OVA を vSphere にインポートします。ここで、[YOUR_DISTRIBUTED_PORT_GROUP_NAME] は分散ポートグループの名前です。
govc import.ova -options - gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1.ova <<EOF { "DiskProvisioning": "thin", "MarkAsTemplate": true, "NetworkMapping": [ { "Name": "VM Network", "Network": "[YOUR_DISTRIBUTED_PORT_GROUP_NAME]" } ] } EOF
Terraform 構成ファイルをコピーする
Terraform ファイルのディレクトリを作成します。
mkdir [TERRAFORM_DIR]
[TERRAFORM_DIR] は、Terraform ファイルを保持するディレクトリのパスです。
次の TF ファイルと TFVARS ファイルをコピーして、[TERRAFORM_DIR]/terraform.tf
と [TERRAFORM_DIR]/terraform.tfvars
にそれぞれ保存します。
TF ファイルは、VM 作成を実行する Terraform HCL config です。
ここで指定した Terraform ファイルは、静的 IP アドレスを持つ管理ワークステーションに適用されます。DHCP を使用して IP アドレスを取得する管理ワークステーションを作成する場合、DHCP を使用した管理ワークステーションの作成に示す Terraform ファイルを使用します。
SSH 認証鍵を作成する
ローカルのノートパソコンやワークステーションから管理ワークステーションに SSH 接続できるように、SSH 認証鍵を作成します。Linux ベースのオペレーティング システムでは、ssh-keygen
を使用できます。
ssh-keygen -t rsa -f ~/.ssh/vsphere_workstation -N ""
TFVARS ファイルを変更する
テキスト エディタで terraform.tfvars
を開き、次の変数の値を指定します。これらの値のほとんどは、vCenter Client にログインすることで確認できます。
vcenter_user
vCenter Server ユーザー アカウントを文字列として指定します。ユーザー アカウントには管理者のロールか、それと同等の権限が必要です(vSphere の要件をご覧ください)。
例:
vcenter_user = "administrator@vsphere.local"
vcenter_password
vCenter Server ユーザー アカウントのパスワードを文字列で指定します。例:
vcenter_password = "#STyZ2T#Ko2o"
vcenter_server
vCenter Server のアドレス(IP またはホスト名)を文字列として指定します。例:
vcenter_server = "198.51.100.2"
ssh_public_key_path
SSH 公開鍵へのパスを指定します。これは前の手順で作成しています。
ssh_public_key_path = "~/.ssh/vsphere_workstation.pub"
vm_name
管理ワークステーションに任意の名前を指定します。例:
vm_name = "my-admin-workstation"
datastore
次のように、vSphere データストアの名前を文字列として指定します。例:
datastore = "MY-DATASTORE"
datacenter
次のように、vSphere データセンターの名前を文字列として指定します。例:
datacenter = "MY-DATACENTER"
cluster
次のように、vSphere クラスタの名前を文字列として指定します。例:
cluster = "MY-CLUSTER"
resource_pool
デフォルト以外のリソースプールを使用している場合は、vSphere リソースプールの名前を文字列として指定します。例:
resource_pool = "MY-POOL"
デフォルトのリソースプールを使用している場合は、次の値を指定します。
resource_pool = "[MY_CLUSTER]/Resources"
ここで、[MY_CLUSTER] は vSphere クラスタの名前です。
スタンドアロン ホストのルートリソース プールの指定をご覧ください。
network
管理ワークステーションを作成する vSphere ネットワークを文字列で指定します。例:
network = "MY-VM-NETWORK"
vm_template
VM テンプレート名を文字列として指定します。前の手順で OVA をインポートし、テンプレートとしてマークしました。テンプレート名に .ova
拡張子がないことに注意してください。
vm_template = "gke-on-prem-admin-appliance-vsphere-1.3.2-gke.1"
ipv4_address
管理ワークステーションの IPv4 静的 IP アドレスを指定します。例:
ipv4_address = "203.0.113.1"
ipv4_netmask_prefix_length
管理ワークステーションを作成するネットワークのサブネット マスクのビット数を指定します。例:
ipv4_netmask_prefix_length = "22"
ipv4_gateway
管理ワークステーションを作成するサブネットのデフォルト ゲートウェイの IP アドレスを指定します。例:
ipv4_gateway = "198.51.100.1
dns_nameservers
管理ワークステーションで使用する DNS ネームサーバーをカンマで区切って指定します。例:
dns_nameservers = "8.8.8.8,8.8.4.4"
管理ワークステーションを作成する
これで、管理ワークステーション VM を作成する準備ができました。このセクションの手順では、Terraform バージョン 0.11 を使用します。
Terraform 構成ファイル(TF と TFVARS)を含むディレクトリに移動します。
ディレクトリで Terraform を初期化し、構成を適用します。これには、数分かかることがあります。
terraform init && terraform apply -auto-approve -input=false
管理ワークステーションに SSH 接続する
Terraform 構成ファイルがあるディレクトリに移動します。
管理ワークステーションの IP アドレスを取得します。
terraform output ip_address
管理ワークステーションの IP アドレスをメモしておきます。
SSH 認証鍵と IP アドレスを使用して管理ワークステーションに SSH 接続します。
ssh -i ~/.ssh/vsphere_workstation ubuntu@[ADMIN_WORKSTATION_IP_ADDRESS]
管理ワークステーションが正しく設定されていることを確認する
gkectl
と docker
が管理ワークステーションにインストールされていることを確認します。
gkectl version docker version
管理ワークステーションで NTP サーバーを構成する
デフォルトでは、管理ワークステーションはネットワーク タイム プロトコル(NTP)サーバーとして ntp.ubuntu.com を使用します。組織が別の時刻サーバーを使用している場合は、他の組織と同じ NTP サーバーを使用するよう管理ワークステーションを構成します。
次のコマンドを入力して、管理ワークステーションの NTP サーバーを構成します。
sudo mkdir -p /etc/systemd/timesyncd.conf.d/ sudo bash -c "cat >> /etc/systemd/timesyncd.conf.d/cloud-init.conf" << EOF [Time] NTP=[NTP_SERVER] EOF sudo systemctl restart systemd-timesyncd timedatectl status
ここで、[NTP_SERVER] は NTP サーバーのホスト名または IP アドレスです。
NTP サーバーが機能していることを確認するには、次のコマンドを入力します。
timedatectl
出力は次のようになります。
Local time: Tue 2019-12-17 00:21:50 UTC Universal time: Tue 2019-12-17 00:21:50 UTC RTC time: Tue 2019-12-17 00:21:50 Time zone: Etc/UTC (UTC, +0000) System clock synchronized: yes systemd-timesyncd.service active: yes RTC in local TZ: no
トラブルシューティング
OVA のダウンロード中に AccessDeniedException
が発生する
- 現象
管理ワークステーションの OVA と署名のダウンロード中に、次のエラーが返されます。
AccessDeniedException: 403 whitelisted-service-account@project.iam.gserviceaccount.com does not have storage.objects.list access to gke-on-prem-release
- 考えられる原因
許可リストに登録されたサービス アカウントが有効になっていません。
- 解決策
許可リストに登録されたサービス アカウントが有効になっていることを確認します。問題が解決しない場合は、Google にお問い合わせください。
openssl
で管理ワークステーション OVA を検証できない
- 現象
管理ワークステーションの OVA ファイルに対して
openssl dgst
を実行してもVerified OK
が返されない- 考えられる原因
OVA ファイルに問題があるため、正常な検証ができません。
- 解決策
管理ワークステーション OVA をダウンロードするの説明に従って、管理ワークステーションの OVA をもう一度ダウンロードしてデプロイしてみてください。問題が解決しない場合は、Google にお問い合わせください。
詳しくは、トラブルシューティングをご覧ください。