DHCP を使用した管理ワークステーションの作成

このページでは、動的ホスト構成プロトコル(DHCP)を使用して IP アドレスを取得する管理ワークステーションを作成する方法について説明します。

静的 IP アドレスを持つ管理ワークステーションを作成するには、管理ワークステーションの作成をご覧ください。

概要

管理ワークステーションは、GKE On-Prem クラスタの作成と管理に必要なツールをすべて含む vSphere VM です。管理ワークステーションを作成するには、このトピックで説明される次の手順を行います。

  • 管理ワークステーション VM の圧縮イメージである管理ワークステーション Open Virtual Appliance(OVA)ファイルをダウンロードします。
  • vSphere へのコマンドライン インターフェースである govc を使用して、OVA を vSphere に VM テンプレートとしてインポートします。
  • HashiCorp Terraform 構成ファイルをコピーして入力します。
  • Terraform バージョン 0.11 を使用して、管理ワークステーション VM を作成します。

許可リストに登録したサービス アカウントのキーを作成する

許可リストに登録したサービス アカウントの JSON キーファイルがない場合は、ここで作成します。

  1. gcloud auth login
  2. 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 テンプレートとしてマークする

以降のセクションでは、以下を行います。

  1. vCenter Server と vSphere 環境の要素を宣言する変数を作成する。
  2. 管理ワークステーションの 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 です。

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"

管理ワークステーションを作成する

これで、管理ワークステーション VM を作成する準備ができました。このセクションの手順では、Terraform バージョン 0.11 を使用します。

  1. Terraform 構成ファイル(TF と TFVARS)を含むディレクトリに移動します。

  2. ディレクトリで Terraform を初期化し、構成を適用します。これには、数分かかることがあります。

    terraform init && terraform apply -auto-approve -input=false

管理ワークステーションに SSH 接続する

  1. Terraform 構成ファイルがあるディレクトリに移動します。

  2. 管理ワークステーションの IP アドレスを取得します。

    terraform output ip_address

    管理ワークステーションの IP アドレスをメモしておきます。

  3. SSH 認証鍵と IP アドレスを使用して管理ワークステーションに SSH 接続します。

    ssh -i ~/.ssh/vsphere_workstation ubuntu@[ADMIN_WORKSTATION_IP_ADDRESS]
    

管理ワークステーションが正しく設定されていることを確認する

gkectldocker が管理ワークステーションにインストールされていることを確認します。

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 にお問い合わせください。

詳しくは、トラブルシューティングをご覧ください。