Terraform を使用して GKE リソースをプロビジョニングする

Hashicorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。Terraform provider for Google Cloud を使用すると、GKE などの Google Cloud リソースをプロビジョニングして管理できます。

このページでは、Terraform の仕組みの概要、Google Cloud で Terraform の使用を開始するためのリソースなど、GKE で Terraform を使用する方法について説明します。また、GKE の Terraform リファレンス ドキュメント、コードサンプル、Terraform を使用して GKE リソースをプロビジョニングするガイドへのリンクもあります。

Google Cloud 向け Terraform の使用方法については、Terraform のインストールと構成または Google Cloud 向け Terraform のクイックスタートをご覧ください。

Terraform の仕組み

Terraform には宣言型で構成指向の構文があり、これを使用して、Google Cloud プロジェクトにプロビジョニングするインフラストラクチャを記述できます。1 つまたは複数の Terraform 構成ファイルで構成を作成し、Terraform CLI を使用して、この構成を GKE リソースに適用できます。

以降のステップでは、Terraform の仕組みについて説明します。

  1. プロビジョニングするインフラストラクチャを Terraform 構成ファイルに記述します。インフラストラクチャのプロビジョニング方法を記述するコードは必要ありません。Terraform がインフラストラクチャをプロビジョニングします。
  2. terraform plan コマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。
  3. 次に、terraform apply コマンドを実行します。これにより、次のアクションが実行されます。

    1. バックグラウンドで、対応する GKE API を呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
    2. Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースと実際のインフラストラクチャ内のリソースをマッピングする JSON ファイルです。Terraform は、このファイルを使用してインフラストラクチャの最新状態を記録し、リソースを作成、更新、破棄するタイミングを決定します。
    3. terraform apply を実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャとコードと比較し、必要に応じて更新を行います。

      • 構成ファイルで定義されたリソース オブジェクトが状態ファイルに存在しない場合は、Terraform によってリソース オブジェクトが作成されます。
      • リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
      • 状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。

GKE の Terraform リソース

リソースは、Terraform 言語の基本要素です。各リソース ブロックは、仮想ネットワークやコンピューティング インスタンスなど、1 つ以上のインフラストラクチャ オブジェクトを記述します。

次の表に、GKE で使用可能な Terraform リソースを示します。

GKE のプロダクトまたはサービス Terraform リソース
Google Kubernetes Engine(GKE)Standard エディション google_container_cluster
google_container_node_pool
Google Kubernetes Engine(GKE)Enterprise エディション google_gke_hub_feature
google_gke_hub_feature_iam
google_gke_hub_feature_membership
google_gke_hub_fleet
google_gke_hub_membership
google_gke_hub_membership_binding
google_gke_hub_membership_iam
google_gke_hub_membership_rbac_role_binding
google_gke_hub_namespace
google_gke_hub_namespace
google_gke_hub_scope
google_gke_hub_scope_iam
google_gke_hub_scope_rbac_role_binding
Backup for GKE google_gke_backup_backup_plan
google_gke_backup_backup_plan_iam
google_gke_backup_restore_plan
google_gke_backup_restore_plan_iam

GKE の Terraform ベースガイド

次の表に、GKE の Terraform ベースのハウツー ガイドとチュートリアルを示します。

ガイド 詳細
Terraform で GKE クラスタを作成してワークロードをデプロイする Terraform を使用して Google Kubernetes Engine(GKE)Autopilot クラスタを作成し、ワークロードをデプロイする方法について説明します。
GKE Autopilot クラスタで Cloud Service Mesh をプロビジョニングする GKE Autopilot クラスタにマネージド Cloud Service Mesh を設定する方法について説明します。
クラスタとノードプールのラベルを作成して管理する ラベル付きのクラスタを作成する方法について説明します。
タグを使用して GKE リソースを管理する タグを使用して GKE クラスタを管理する方法について説明します。
Autopilot クラスタを作成する Autopilot で GKE クラスタを作成する方法について説明します。
GKE Standard ノードプールで GPU を実行する GKE Standard クラスタのノードに NVIDIA® 画像処理装置(GPU)ハードウェア アクセラレータを割り当てて使用することで、人工知能(AI)や画像処理などのコンピューティング負荷の高いワークロードを実行し、最適化する方法について説明します。
セカンダリ ブートディスクを使用してデータまたはコンテナ イメージをプリロードする セカンダリ ブートディスクを使用してワークロードの起動レイテンシを改善する方法について説明します。
VPC ネイティブ クラスタを作成する GKE で VPC ネイティブ クラスタを構成する方法について説明します。
GKE Standard に TPU ワークロードをデプロイする GKE Standard クラスタで Cloud TPU アクセラレータ(TPU)を使用して、大規模な人工知能(AI)と ML モデルのトレーニング、チューニング、推論ワークロードをリクエストしてデプロイする方法について説明します。
内部ロードバランサを作成する GKE で内部パススルー ネットワーク ロードバランサまたは内部ロードバランサを作成する方法について説明します。
ノードプールの追加と管理 GKE Standard クラスタを実行しているノードプールを追加して操作する方法について説明します。
Arm ノードを含むノードプールとクラスタを作成する Arm ノードを含む GKE Standard クラスタまたはノードプールを作成し、GKE で Arm ワークロードを実行できるようにする方法について説明します。
予約済みゾーンリソースの使用 GKE で予約済みの Compute Engine リソースを使用する方法について説明します。
高可用性 PostgreSQL データベースを GKE にデプロイする GKE に高可用性 PostgreSQL トポロジをデプロイする方法について説明します。PostgreSQL は、信頼性とデータの整合性で有名なオープンソースのオブジェクト リレーショナル データベースです。
ノードイメージを指定する GKE Standard クラスタ内のノードにノードイメージを指定する方法について説明します。
Windows Server ノードプールを使用したクラスタの作成 Microsoft Windows Server を実行するノードプールを持つ GKE クラスタの作成方法について説明します。
マルチインスタンス GPU の実行 マルチインスタンス GPU を実行して使用率を高め、費用を削減する方法について説明します。
クラスタのアップグレードのロールアウトを順序付ける ロールアウトの順序付けを使用して GKE クラスタのアップグレードを管理する方法について説明します。
ゾーンクラスタの作成 GKE でデフォルトの機能を有効にして Standard ゾーンクラスタを作成する方法について説明します。
基本的な本番環境クラスタ用にネットワークを構成する ウェブ アプリケーションを GKE クラスタにデプロイし、HTTPS ロードバランサで公開する方法について説明します。
コントロール プレーンの指標を収集して表示する Google Cloud Managed Service for Prometheus を使用して、Kubernetes API サーバー、スケジューラ、Controller Manager によって出力された指標を Cloud Monitoring に送信するように GKE クラスタを構成する方法について説明します。
cAdvisor / Kubelet の指標を収集して表示する Google Cloud Managed Service for Prometheus を使用して、厳選された一連の cAdvisor / Kubelet 指標を Cloud Monitoring に送信するように Google Kubernetes Engine(GKE)クラスタを構成する方法について説明します。
ログのスループットを調整する デフォルトのログ スループットとスループットを増やす方法について説明します。
クラスタで Backup for GKE を有効にする クラスタで Backup for GKE を有効にする方法について説明します。
復元中にリソースを変更する 変換ルールを使用して、復元プロセス中に Kubernetes リソースを変更する方法について説明します。
バックアップ プランで Permissive モードを有効にする バックアップ プランで制約なしモードを有効にする方法について説明します。
Backup for GKE API を有効にする Backup for GKE を有効にする方法について説明します。
一連のバックアップを計画する GKE でワークロードをバックアップするために使用する Backup for GKE のバックアップ プランを作成する方法について説明します。

GKE の Terraform モジュールとブループリント

モジュールとブループリントを使用すると、Google Cloud リソースの大規模なプロビジョニングと管理を自動化できます。モジュールとは、Terraform リソースを論理的に抽象化する、再利用可能な一連の Terraform 構成ファイルのことです。ブループリントは、特定のソリューションを実装および文書化した、モジュールとポリシーのパッケージです。このパッケージはデプロイして再利用できます。

次の表に、GKE に関連するモジュールとブループリントを示します。

モジュールまたはブループリント 詳細
terraform-google-container-vm 独自の GKE クラスタを構成します。
terraform-google-gke-gitlab GKE に GitLab をインストールします。

次のステップ