概要
Terraform は、AWS などのクラウド環境を構成し、クラウド環境に Kubernetes などのソフトウェアをインストールするためのオープンソース ツールです。Terraform または GKE on AWS のインストール手順のいずれかを使用して、AWS 環境を構成し、構成した環境にクラスタを作成できます。
このページでは、Terraform を使用して AWS 環境を構成し、GitHub に保存されているサンプル構成を使用してクラスタをインストールする方法について説明します。これらのスクリプトを使用するには、Terraform の基本的な知識が必要です。特に、Terraform 構成ファイルを編集して、独自のユーザーとプロジェクトの情報を追加し、デフォルトのクラスタ構成に必要な変更を行う必要があります。
AWS 環境を構成して、Terraform を使用せずにクラスタを作成するには、AWS の前提条件の概要とクラスタを作成する手順をご覧ください。
スクリプトの動作
このスクリプトでは Terraform を構成して、AWS VPC を作成し、そこにクラスタをデプロイします。作成された VPC は、すべての GKE on AWS の前提条件を満たし、Google の手動 VPC 作成手順によって作成された VPC と同じネットワーク トポロジを有します。
スクリプト セットで作成するクラスタには、次の特徴があります。
- 3 つのコントロール プレーン ノード(3 つの構成されたアベイラビリティ ゾーンのそれぞれに 1 つずつ)。これらのノードはタイプ t3.large です。
- 種類が t3.large のノードを 2 つ含む 1 つのノードプール。
このノードプールは AWS
us-east-1
リージョンにデプロイされ、5 つのノードに自動スケーリングできます。
デフォルトの VPC とクラスタを変更する方法
適切な Terraform ファイルを編集することで、Terraform スクリプトによって作成された VPC とクラスタの特性を変更できます。
variables.tf
ファイルを編集して、リージョンとアベイラビリティ ゾーンを調整します。- AWS インスタンス タイプを変更します。
- サブネット、アベイラビリティ ゾーン、ロードバランサなど、VPC の特性を
modules/vpc
サブフォルダ内のファイルを編集して変更します。
特定の Google Cloud リージョンと関連する Kubernetes バージョンから制御される AWS リージョンのリストについては、次のコマンドを実行します。
gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`
GOOGLE_CLOUD_REGION
は、GKE on AWS がクラスタを制御する Google Cloud リージョンの名前に置き換えます。
前提条件
Google Cloud CLI のインストール手順に沿って Google Cloud CLI をインストールします。 すでにインストールされている場合は、こちらの手順に沿ってバージョン 412.0.0 以降が実行されていることを確認してください。
AWS CLI のインストール手順に沿って AWS CLI をインストールします。
AWS アクセスキーを作成します。
次のコマンドを使用して、ローカル AWS 環境を構成します。
aws configure
Terraform を作成する
次のコマンドを実行して、Google Cloud CLI 認証を構成します。
gcloud config set project GOOGLE_PROJECT_ID gcloud auth application-default login --no-launch-browser
Google Cloud プロジェクトで必要なサービスを有効にします。
gcloud --project="GOOGLE_PROJECT_ID" services enable \ gkemulticloud.googleapis.com \ gkeconnect.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ anthos.googleapis.com \ logging.googleapis.com \ monitoring.googleapis.com \ opsconfigmonitoring.googleapis.com
GOOGLE_PROJECT_ID
は、実際の Google プロジェクト ID に置き換えます。リポジトリのローカルコピーを作成し、
AWS
フォルダに変えます。git clone https://github.com/GoogleCloudPlatform/anthos-samples.git cd anthos-samples/anthos-multi-cloud/AWS
GKE on AWS をデプロイする
terraform.tfvars
ファイルで次の行を編集して、デフォルト値を置き換えます。gcp_project_id = GOOGLE_PROJECT_ID admin_users = ["GCP_ACCOUNT_EMAIL"]
次のように置き換えます。
GOOGLE_PROJECT_ID
: Google プロジェクト ID。これは、Google Cloud コンソールのダッシュボード ページの左側にあります。ACCOUNT_EMAILS
: 作成後にクラスタにログインできるメールアドレスのカンマ区切りリスト(例:"admin@example.com","operator@example.com"
)。少なくとも 1 つのアドレスに 1 つの Google Cloud アカウントが必要です。クラスタに追加の ID プロバイダを追加するには、GKE Identity Service を使用して ID を管理するをご覧ください。
Terraform プランを初期化して作成します。
terraform init
Terraform によって、Google Cloud プロバイダなどの必要なライブラリがインストールされます。
Terraform プランを適用して、AWS Virtual Private Cloud とクラスタを作成します。
terraform apply
手順に沿ってクラスタの作成を開始します。
インストールには 12 分ほどかかります。Terraform が AWS Virtual Private Cloud とクラスタの作成を完了すると、クラスタに関する情報が出力され、var.sh
という名前のファイルが作成されます。追加のノードプールを作成する場合は、このファイルの値を使用できます。
クラスタが正常に作成されたことを確認するには、Google Cloud プロジェクトの Google Cloud コンソールの Kubernetes Engine ページに表示されることを確認します。
クラスタに接続する
クラスタへの接続を確認して詳細を取得するには、次のコマンドを実行します。
gcloud container fleet memberships get-credentials CLUSTER_NAME
kubectl get nodes
CLUSTER_NAME
は、使用するクラスタの名前に置き換えます。クラスタ名は、Terraform 出力ファイルの var.sh
で確認できます。
出力には、クラスタ内のノードのリストとステータスが含まれます。
クラスタと AWS Virtual Private Cloud を削除する
クラスタと AWS Virtual Private Cloud を削除する前に、次のものをすべて削除する必要があります。
- AWS Virtual Private Cloud 内のアクティブな AWS ロードバランサ
- Terraform で作成されていないクラスタ内の追加のノードプール
- Terraform で作成されていない AWS Virtual Private Cloud の追加クラスタ
Terraform で作成したクラスタと AWS Virtual Private Cloud を削除するには、次のコマンドを実行します。
terraform destroy
Terraform はノードからワークロードをドレインし、プライマリ ノードプールとクラスタを削除して、AWS Virtual Private Cloud を削除します。
Cloud Logging と Cloud Monitoring を承認する
Cloud Logging と Cloud Monitoring を有効にする場合、クラスタを作成した後に、Google Cloud プロジェクトに許可ポリシーを追加する必要があります。
Google Cloud CLI を使用して許可ポリシーを追加します。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。
次のステップ
- Google の一元化されたクラスタ イベントログの詳細については、Cloud Logging をご覧ください。
- Google の Cloud Monitoring ツールについては、Cloud Monitoring をご覧ください。
- 一元化された構成管理をインストールするには、Config Controller を使用してクラスタを構成するをご覧ください。
Terraform GKE on AWS スクリプトの詳細については、以下をご覧ください。