管理ワークステーションの作成

このページでは、管理ワークステーション仮想マシン(VM)の最新バージョンを作成する方法について説明します。

既存の管理ワークステーションをアップグレードするには、GKE On-Prem のアップグレードをご覧ください。

概要

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

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

始める前に

  1. 管理ワークステーションの概要を確認します
  2. インストールの準備の手順を完了します。
  3. govc がインストール済みであることを確認します。
  4. Terraform バージョン 0.11 がインストールされていることを確認します。

管理ワークステーション OVA をダウンロードする

ダウンロード トピックから、最新バージョンの管理ワークステーション OVA をダウンロードします。最新の OVA ファイルは次のとおりです。

gke-on-prem-admin-appliance-vsphere-1.1.2-gke.0.ova

ここで、1.1.2-gke.0 は最新の GKE On-Prem バージョンです。OVA には、GKE On-Prem クラスタをインストールして管理するために必要なすべてのクラスタ コンポーネント、コマンドライン ツールなどのエンティティが含まれます。最新の OVA には、これらのエンティティの最新バージョンが含まれています。

このファイルを、管理ワークステーションの作成に使用しているコンピュータのどこかに保存します。

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 環境で構成したリソースプールの名前です。

OVA を vSphere(標準スイッチ)にインポートする

vSphere 標準スイッチを使用している場合、次のコマンドを使用して OVA を vSphere にインポートします。

govc import.ova -options - ~/gke-on-prem-admin-appliance-vsphere-1.1.2-gke.0.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.1.2-gke.0.ova <<EOF
{
  "DiskProvisioning": "thin",
  "MarkAsTemplate": true,
  "NetworkMapping": [
      {
          "Name": "VM Network",
          "Network": "[YOUR_DISTRIBUTED_PORT_GROUP_NAME]"
      }
  ]
}
EOF

Terraform 構成ファイルをコピーする

  1. Terraform ファイルのディレクトリを作成します。

    mkdir "[TERRAFORM_DIR]"
    

    [TERRAFORM_DIR] は、Terraform ファイルを保持するディレクトリのパスです。

  2. 管理ワークステーションに静的 IP アドレスを指定するか、DHCP サーバーを使用して IP アドレスを取得するかによって、次のいずれかの Terraform 構成をコピーします。

    TF ファイルと TFVARS ファイルの両方をコピーしてください。TF ファイルは、VM 作成を実行する Terraform HCL config です。

  3. 構成をそれぞれ [TERRAFORM_DIR]/terraform.tf[TERRAFORM_DIR]/terraform.tfvars に保存します。

DHCP

静的 IP

SSH 公開鍵の作成

ローカルのノートパソコンやワークステーションから管理ワークステーションに SSH 接続できるように、SSH 公開鍵を作成します。Linux ベースのオペレーティング システムでは、ssh-keygen を使用できます。

ssh-keygen -t rsa -f ~/.ssh/vsphere_workstation -N ""

TFVARS ファイルを変更する

テキスト エディタで terraform.tfvars を開き、次の変数の値を指定します。これらの値のほとんどは、vCenter Client にログインすることで確認できます。

vcenter_user

vCenter Server ユーザー アカウントを文字列として指定します。ユーザー アカウントには管理者のロールか、それと同等の権限が必要です(システム要件をご覧ください)。例:

vcenter_user = "administrator@vsphere.local"

vcenter_password

vCenter Server ユーザー アカウントのパスワードを文字列で指定します。例:

vcenter_password = "#STyZ2T#Ko2o"

vcenter_server

vCenter Server のアドレス(IP またはホスト名)を文字列として指定します。例:

vcenter_server = "198.51.100.0"

ssh_public_key_path

SSH 公開鍵へのパスを指定します。これは前の手順で作成しています。

ssh_public_key_path = "~/.ssh/vsphere_workstation.pub"

vm_name

管理ワークステーションの名前を指定します。

vm_name = "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"

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

network

管理ワークステーションを作成する vSphere ネットワークを文字列で指定します。例:

network = "VM Network"

vm_template

VM テンプレート名を文字列として指定します。前の手順で OVA をインポートし、テンプレートとしてマークしました。

vm_template = "gke-on-prem-admin-appliance-vsphere-[VERSION]"

管理ワークステーションに静的 IP アドレスを使用する

管理ワークステーションに静的 IP を使用する場合は、静的 IP TF と TFVARS ファイルをコピーします。TFVAR ファイルで、次の変数の値を入力します。

ipv4_address

管理ワークステーションの IPv4 静的 IP アドレスを指定します。例:

ipv4_address = "203.0.113.0"

ipv4_netmask_prefix_length

管理ワークステーションを作成するネットワークのサブネット マスクのビット数を指定します。次に例を示します。

ipv4_netmask_prefix_length = "22"

ipv4_gateway

管理ワークステーションを作成するサブネットのゲートウェイを指定します。VMware の vsphere_virtual_machine のドキュメントをご覧ください。

例:

ipv4_gateway = "198.51.100.0

dns_nameservers

管理ワークステーションで使用する DNS ネームサーバーをカンマで区切って指定します。例:

dns_nameservers = "8.8.8.8,8.8.4.4"

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

上記の手順を完了すると、管理ワークステーション VM を作成する準備が整います。

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

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

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

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

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

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

    terraform output ip_address

    管理ワークステーションの IP アドレスをメモするか、シェルで変数としてエクスポートします。

  3. 生成された鍵と IP アドレスを使用して、管理ワークステーションに SSH 接続します。

    ssh -i ~/.ssh/vsphere_workstation ubuntu@$(terraform output ip_address)

    アドレスを使用する場合は、次のようにします。

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

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

gkectldocker がインストールされていることを確認します。

gkectl version
docker version

管理ワークステーション用のプロキシの構成

環境がプロキシの背後にある場合は、以下のセクションに従って、プロキシを使用するように Google Cloud CLI と Docker を構成します。

プロキシを使用するように Google Cloud CLI を構成する

管理ワークステーション VM から次の手順を実行します。

プロキシを使用してノートパソコンやワークステーションからインターネットに接続している場合は、プロキシ用に Google Cloud CLI を構成する必要があります。そうすると、gcloud コマンドとgsutil コマンドを実行できるようになります。手順については、プロキシ / ファイアウォールの背後で gcloud CLI を使用する場合の構成をご覧ください。

プロキシを介して pull するように Docker レジストリを構成する

管理ワークステーション VM から次の手順に沿って進めます。

Docker レジストリを使用し、ネットワークがプロキシの背後で実行されている場合は、管理ワークステーションで実行されている Docker デーモンを構成して、プロキシ経由でイメージを pull する必要があります。

  1. HTTP プロキシと HTTPS プロキシのアドレスを収集します。

  2. プロキシを使用せずに接続する必要があるすべてのホストの IP アドレスとホスト名を収集します。

    • vCenter Server の IP アドレス。
    • すべての ESXi ホストの IP アドレス。
    • ロードバランサに構成する IP アドレス。
    • 192.168.0.0/16 の範囲。

    管理ワークステーションで、これらのアドレスを no_proxy 変数に追加します。

    printf -v no_proxy '%s,' [ADDRESSES];
    

    必要に応じて、後で参照できるように範囲を環境変数にエクスポートできます。アプリケーションとプロセスは、この変数を使用する場合があります。

    export no_proxy="${no_proxy%,}";
  3. /root/.docker/config.json/home/[ユーザー]/.docker/config.json、または設定に応じた場所に保存された Open Docker の構成ファイル

  4. config.json 内で、次の行を追加します。

    "proxies": {
    
    "default": {
           "httpProxy": "[HTTP_PROXY]",
           "httpsProxy": "[HTTPS_PROXY]",
           "noProxy": "[ADDRESSES]"
               }
    }

    ここで

    • [HTTP_PROXY] は HTTP プロキシです(存在する場合)。
    • [HTTPS_PROXY] は HTTPS プロキシです(存在する場合)。
    • [ADDRESSES] は、プロキシなしで接続する必要があるアドレスとホスト名のカンマ区切りのリストです。
  5. Docker を再起動して変更を反映します。

    sudo systemctl restart docker

トラブルシューティング

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

Terraform の vSphere プロバイダのセッション数の上限

GKE On-Prem は Terraform の vSphere プロバイダを使用して、vSphere 環境で VM を起動します。プロバイダのセッション数は最大 1,000 です。現在の実装では、使用後にアクティブなセッションが終了しません。実行中のセッションが多すぎると、503 エラーが発生する可能性があります。

セッションは 300 秒後に自動的に終了します。

現象

実行中のセッションが多すぎると、次のエラーが発生します。

Error connecting to CIS REST endpoint: Login failed: body:
  {"type":"com.vmware.vapi.std.errors.service_unavailable","value":
  {"messages":[{"args":["1000","1000"],"default_message":"Sessions count is
  limited to 1000. Existing sessions are 1000.",
  "id":"com.vmware.vapi.endpoint.failedToLoginMaxSessionCountReached"}]}},
  status: 503 Service Unavailable
考えられる原因

環境内で実行されている Terraform プロバイダのセッションが多すぎます。

解決策

現時点で、これは意図したとおりに機能しています。セッションは 300 秒後に自動的に終了します。詳細については、GitHub の問題 #618 をご覧ください。

Docker 用のプロキシの使用: oauth2: cannot fetch token

現象

プロキシの使用中に次のエラーが発生します。

oauth2: cannot fetch token: Post https://oauth2.googleapis.com/token: proxyconnect tcp: tls: oversized record received with length 20527
考えられる原因

HTTP ではなく HTTPS プロキシを指定した可能性があります。

解決策

Docker の構成で、プロキシ アドレスを https:// ではなく http:// に変更します。

ライセンスが有効であることを確認する

特に試用版ライセンスを使用している場合は、ライセンスが有効であることを確認してください。F5、ESXi ホスト、または vCenter ライセンスの有効期限が切れた場合、予期しないエラーが発生することがあります。

openssl で管理ワークステーション OVA を検証できない

現象

管理ワークステーションの OVA ファイルに対して openssl dgst を実行しても Verified OK が返されない

考えられる原因

OVA ファイルに問題があるため、正常な検証ができません。

解決策

管理ワークステーション OVA をダウンロードするの説明に従って、管理ワークステーションの OVA をもう一度ダウンロードしてデプロイしてみてください。問題が解決しない場合は、Google にお問い合わせください。

次のステップ