概要
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
は、使用するクラスタの名前に置き換えます。クラスタ名は、var.sh
Terraform 出力ファイルで確認できます。
出力には、クラスタ内のノードのリストとステータスが含まれます。
クラスタと 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 スクリプトの詳細については、以下をご覧ください。