2024年7月23日

【Google Cloud】第2回:GKE on VMwareを構築してみた~構築編前半~


Content
本記事は、以下記事シリーズの第2回です。
【Google Cloud】第1回:GKE on VMwareを構築してみた~概要編~
【Google Cloud】第2回:GKE on VMwareを構築してみた~構築編前半~ ★本記事
【Google Cloud】第3回:GKE on VMwareを構築してみた~構築編後半~
第1回では、GKE on VMwareの概要についてご説明しました。
本記事は実際にGKE on VMwareを構築するにあたり、どんな手順が必要となるのかをご説明します。

要件

ソフトウェア要件

ESXi、vCenter Serverで以下いずれかのバージョンをサポートしています。
・バージョン 7.0 の 7.0 Update 2 以降のアップデート
・バージョン 8.0

ライセンス要件

以下いずれかのライセンスが必要です。
・vSphere Enterprise Plus ライセンスと有効なサポートサブスクリプション
・vSphere Standard ライセンスと有効なサポートサブスクリプション

ハードウェア要件(最小要件)

以下の要件を満たすESXiを実行する物理ホストが1台必要です。
・2.7Ghzかつハイパースレッディングが有効な8つのCPU
・80GiBのRAM
・128GiBのストレージ

ネットワーク要件

・管理ワークステーションとクラスタノードはインターネットへ接続できる必要があります。
・ファイヤーウォールで以下の通信を許可する必要があります。
https://cloud.google.com/anthos/clusters/docs/on-prem/latest/how-to/firewall-rules?hl=ja#firewall_rules

その他要件

・管理ワークステーションとクラスタノードで使用可能なDNSサーバが必要です。
・クラスタノードで使用可能なNTPサーバが必要です。

前提

構築手順をご説明するにあたり、以下を前提とします。

・作業環境のOSはLinux、かつGoogle Cloud SDKはインストール済みとします
・vSphere環境の以下オブジェクトはすでに設定されているものとします
vSphere データセンター
vSphere クラスタ
vSphere データストア
vSphere ネットワーク
・各コマンドの大文字については、各自の環境に置き換えてください

Google Cloud リソースの設定

1.Google Cloudプロジェクト設定

Google Cloudプロジェクトが存在しない場合、以下のサイトを参照し、プロジェクトを作成します。
https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja#creating_a_project

2.IAM設定

以下のコマンドを実行し、後続の作業に必要なIAMロールを作業者に付与します。
※ACCOUNTは作業者のGoogleアカウントです

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/resourcemanager.projectIamAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/serviceusage.serviceUsageAdmin"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/iam.serviceAccountCreator"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:ACCOUNT" \
--role="roles/iam.serviceAccountKeyAdmin"

 

3.サービスアカウント設定

GKE on VMware を使用するには、Google Cloud プロジェクトに 4 つのサービス アカウントが必要ですが、2つは自動生成されるため、残り2つのサービスアカウントを手動で作成する必要があります。

Connect-register サービス アカウント(自動生成)
Logging-monitoring サービス アカウント(自動生成)
監査ロギング サービス アカウント(手動で作成)
コンポーネント アクセス サービス アカウント(手動で作成)

以下のコマンドを実行し、監査ロギング サービス アカウントを作成します。

gcloud iam service-accounts create audit-logging-sa \
--project PROJECT_ID

以下のコマンドを実行し、監査ロギング サービス アカウントのJSONキーをダウンロードします。
※ダウンロードしたJSONキーは後続作業を利用するため大切に保管してください
※SERVICE_ACCOUNT_EMAILはaudit-logging-sa@PROJECT_ID.iam.gserviceaccount.comです

gcloud iam service-accounts keys create audit-logging-key.json \
--iam-account SERVICE_ACCOUNT_EMAIL

以下のコマンドを実行し、コンポーネント アクセス サービス アカウントを作成します。

gcloud iam service-accounts create component-access-sa \
--display-name "Component Access Service Account" \
--project PROJECT_ID

以下のコマンドを実行し、コンポーネント アクセス サービス アカウントの JSONキーをダウンロードします。
※ダウンロードしたJSONキーは後続作業を利用するため大切に保管してください
※SERVICE_ACCOUNT_EMAILはcomponent-access-sa@PROJECT_ID.iam.gserviceaccount.comです

gcloud iam service-accounts keys create component-access-key.json \
--iam-account SERVICE_ACCOUNT_EMAIL

以下のコマンドを実行し、IAM ロールをコンポーネント アクセス サービス アカウントに追加します。
※SERVICE_ACCOUNT_EMAILはcomponent-access-sa@PROJECT_ID.iam.gserviceaccount.comです

gcloud projects add-iam-policy-binding PROJECT_ID \
--member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role "roles/serviceusage.serviceUsageViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role "roles/iam.roleViewer"
gcloud projects add-iam-policy-binding PROJECT_ID \
--member "serviceAccount:SERVICE_ACCOUNT_EMAIL" \
--role "roles/iam.serviceAccountViewer"

 

4.Google API有効化

!!注意!!
本手順を実行すると、課金が発生する可能性があります。
事前に無料トライアルを登録することでGKE Enterpriseを90日無料で利用することが可能ですので、手順が気になる方は「補足:GKE Entterpriseの無料トライアル登録」をご参照ください。

Cloud Shellから以下のコマンドを実行し、APIを有効化します。

gcloud services enable --project PROJECT_ID \
anthos.googleapis.com \
anthosgke.googleapis.com \
anthosaudit.googleapis.com \
cloudresourcemanager.googleapis.com \
connectgateway.googleapis.com \
container.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
gkeonprem.googleapis.com \
serviceusage.googleapis.com \
stackdriver.googleapis.com \
opsconfigmonitoring.googleapis.com \
monitoring.googleapis.com \
logging.googleapis.com \
iam.googleapis.com \
storage.googleapis.com \
kubernetesmetadata.googleapis.com
gcloud container vmware clusters query-version-config \
--project=PROJECT_ID \
--location="REGION"

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

1.gkeadmをダウンロードする

クラスタを作成する前に、管理ワークステーションを作成する必要があります。
管理ワークステーションは、vSphere 環境で GKE Enterprise クラスタを作成するために必要なツールとリソースを備えたスタンドアロンの VM です。また、gkeadmは、管理者ワークステーションを作成するためのコマンドラインツールです。

以下のコマンドを実行し、gkeadmをダウンロードします。
※手順は検証当時の最新バージョンのため、
こちらから最新のコマンドを確認して実行してください

gsutil cp gs://gke-on-prem-release/gkeadm/1.28.200-gke.111/linux/gkeadm ./
chmod +x gkeadm

gkeadm のバージョンを確認するには、次のコマンドを実行します。

./gkeadm version

 

2.認証情報ファイルを作成する

作業端末から管理ワークステーションを作成する際に、vCenterへの接続が必要です。
そのため、vCenter Serverへの接続するための認証情報ファイルを作成します。

現在のディレクトリに「credential.yaml」というファイル名で認証情報ファイルを作成します。

apiVersion: v1
kind: CredentialFile
items:
- name: vCenter
username: "USERNAME" #vCenter Serverにログインする際のユーザー名
password: "PASSWORD" #上記ユーザーのログインパスワード

 

3.管理ワークステーションの構成ファイルを作成する

再度、現在のディレクトリに admin-ws-config.yaml という名前のファイルを作成します。

すべてのコードを表示する▼
gcp:
componentAccessServiceAccountKeyPath: "COMPONENT_ACCESS_SA_KEY_PATH" #手順1.3.4でダウンロードしたjsonファイルのパス
vCenter:
credentials:
address: "ADDRESS" #vCenter ServerのIPアドレス
fileRef:
path: "credential.yaml"
entry: "vCenter"
datacenter: "DATA_CENTER" #vSphere データセンターの名前
datastore: "DATASTORE" #vSphere データストアの名前
cluster: "VSPHERE_CLUSTER" vSphere クラスタの名前
network: "NETWORK" #vSphere ネットワークの名前
resourcePool: "RESOURCE_POOL" #vSphere リソースプールの名前またはパス
caCertPath: "CA_CERT_PATH" #vCenter Server のルート CA 証明書のパス
proxyUrl: ""
adminWorkstation:
name: "minimal-installation-admin-workstation" #管理ワークステーションのVM名
cpus: 4
memoryMB: 8192
diskGB: 50
dataDiskName: gke-on-prem-admin-workstation-data-disk/minimal-installation-data-disk.vmdk
dataDiskMB: 512
network:
ipAllocationMode: "static"
hostConfig:
ip: "ADMIN_WS_IP" #管理ワークステーション用の IP アドレス
gateway: "DEFAULT_GATEWAY_IP" #管理ワークステーションとクラスタノードを持つサブネットのデフォルト ゲートウェイの IP アドレス
netmask: "NETMASK" #管理ワークステーションとクラスタノードを持つサブネットのネットマスク
dns:
- "DNS_SERVER_IP" #DNS サーバーの IP アドレス
proxyUrl: ""
ntpServer: "NTP_SERVER_IP" #NTP サーバーの IP アドレス

 

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

次のコマンドを使用して、管理ワークステーションを作成します。

./gkeadm create admin-workstation --auto-create-service-accounts

※コマンドが正常に終了した場合、以下のような結果が出力されます

Admin workstation information saved to /home/linux-user/minimal-installation-admin-workstation
This file is required for future upgrades
SSH into the admin workstation with the following command:
ssh -i /home/linux-user/.ssh/gke-admin-workstation ubuntu@192.168.100.173
********************************************************************

 

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

前手順で出力されたコマンドを利用して、管理ワークステーションに接続します。
※以下は実行例のため、自身の環境に置き換えて実施してください

ssh -i /home/linux-user/.ssh/gke-admin-workstation ubuntu@192.168.100.173

※初回は以下の確認が表示されるため、「yes」と入力しEnterを押してください

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

「exit」と入力し、管理ワークステーションからログアウト(SSH接続を終了)します。

6.監査ロギングキーを管理ワークステーションにコピーする

前の手順でダウンロードしたjsonキーファイルを管理ワークステーションに監査ロギングキーをコピーする必要があります。
※後続のクラスタ作成で必要になるため

次のコマンドを実行し、管理ワークステーションのホーム ディレクトリに JSON キーファイルをコピーします。
※SSH公開鍵(gke-admin-workstation)、jsonキーファイルのパス(audit-logging-key.json)、管理ワークステーションのIPアドレス(172.16.20.49)は各自の環境に置き換えて実行してください

scp -i /home/linux-user/.ssh/gke-admin-workstation audit-logging-key.json ubuntu@172.16.20.49:~

再度管理ワークステーションにSSH接続します。

以下のコマンドを実行し、ホーム ディレクトリ内のファイルを一覧表示します。

ls -1

※以下のような結果が出力されます。各ファイルは後続の手順で必要になります。

admin-cluster.yaml 管理クラスタを作成するためのテンプレート構成ファイル
admin-ws-config.yaml 管理ワークステーションの構成ファイル
audit-logging-key.json 監査ログのサービス アカウント キー ファイル名
component-access-key.json コンポーネント アクセス サービス アカウントのキーファイル
connect-register-sa-XXXXXXXXXX.json connect-register サービス アカウント キーのファイル名
credential.yaml 管理ワークステーションの構成で指定した credential.yaml ファイル
vc01-cert.pem 管理ワークステーションの構成で指定した vCenter 証明書ファイル
log-mon-sa-XXXXXXXXXX.json logging-monitoring サービス アカウント キーのファイル名
logs ログの出力先ディレクトリ
user-cluster.yaml ユーザー クラスタを作成するためのテンプレート構成ファイル

補足:GKE Entterpriseの無料トライアル登録

ⅰ. Google Cloud管理コンソールにログインします。
ⅱ. 左メニューから「Kubernetes Engine」>「Enterpriseの詳細」>「GKE ENTERPRISEの詳細」を選択します。

ⅲ. 「90日間の無料試用を開始」にチェックし、「GKE エンタープライズの有効化」を選択します。

ⅳ. 「確認」を選択します。

ⅴ. 「GKE Enterpriseの有効化に成功」と表示されることを確認します。

※90日を過ぎると自動で課金が有効になる可能性がありますのでご注意ください
※無効化する手順については以下のリンクをご参照ください
https://cloud.google.com/kubernetes-engine/enterprise/docs/setup/disable-anthos?hl=ja

まとめ

本記事では、GKE on VMwareの前提条件、Google Cloud リソースの設定手順、管理ワークステーション作成手順についてご説明いたしました。
前の記事では、GKE on VMwareの概要、特徴、アーキテクチャ、料金について、
次の記事では管理クラスタ・ユーザクラスタ作成、コンテナデプロイまでの手順についてご説明しておりますので、興味のある方はご覧いただけますと幸いです。

>【Google Cloud】第1回:GKE on VMwareを構築してみた~概要編~
【Google Cloud】第2回:GKE on VMwareを構築してみた~構築編前半~ ★本記事
>【【Google Cloud】第3回:GKE on VMwareを構築してみた~構築編後半~

参考記事

>https://cloud.google.com/anthos/clusters/docs/on-prem/latest/how-to/minimal-create-clusters?hl=ja#create_your_admin_workstation
>https://cloud.google.com/anthos/clusters/docs/on-prem/latest/how-to/create-admin-workstation?hl=ja

2024年7月23日 【Google Cloud】第2回:GKE on VMwareを構築してみた~構築編前半~

Category Google Cloud

ご意見・ご相談・料金のお見積もりなど、
お気軽にお問い合わせください。

お問い合わせはこちら