HashiCorp Terraform は、クラウド インフラストラクチャのプロビジョニングと管理に使用できる Infrastructure as Code(IaC)ツールです。Terraform には、クラウド プロバイダや他の API とやり取りできるプロバイダというプラグインが用意されています。 Google Cloud用の Terraform プロバイダを使用して、GKE などの Google Cloud リソースをプロビジョニングして管理できます。
このページでは、Compute Engine で Terraform を使用する方法について説明します。Terraform の仕組みの概要と、 Google Cloudで Terraform の使用を開始するためのリソースも紹介します。また、GKE の Terraform リファレンス ドキュメント、コードサンプル、Terraform を使用して GKE リソースをプロビジョニングするガイドへのリンクも掲載しています。
Google Cloud用 Terraform の使用方法については、Terraform をインストールして構成するまたは Google Cloud 用 Terraform クイックスタートをご覧ください。
Terraform の仕組み
Terraform には宣言型で構成指向の構文があり、これを使用して、 Google Cloud プロジェクトにプロビジョニングするインフラストラクチャを記述できます。1 つまたは複数の Terraform 構成ファイルで構成を作成し、Terraform CLI を使用して、この構成を GKE リソースに適用できます。
以降のステップでは、Terraform の仕組みについて説明します。
- プロビジョニングするインフラストラクチャを Terraform 構成ファイルに記述します。インフラストラクチャのプロビジョニング方法を記述するコードは必要ありません。Terraform がインフラストラクチャをプロビジョニングします。
terraform planコマンドを実行します。これにより、構成が評価され、実行プランが生成されます。プランを確認し、必要に応じて変更します。-
次に、
terraform applyコマンドを実行します。これにより、次のアクションが実行されます。- バックグラウンドで、対応する GKE API を呼び出し、実行プランに基づいてインフラストラクチャをプロビジョニングします。
- Terraform 状態ファイルを作成します。これは、構成ファイル内のリソースと実際のインフラストラクチャ内のリソースをマッピングする JSON ファイルです。Terraform は、このファイルを使用してインフラストラクチャの最新状態を記録し、リソースを作成、更新、破棄するタイミングを決定します。
-
terraform applyを実行すると、Terraform は状態ファイルのマッピングを使用して、既存のインフラストラクチャをコードと比較し、必要に応じて更新を行います。- 構成ファイルで定義されたリソース オブジェクトが状態ファイルに存在しない場合、Terraform はリソース オブジェクトを作成します。
- リソース オブジェクトが状態ファイルに存在し、構成ファイルと構成が異なる場合、Terraform は構成ファイルと一致するようにリソースを更新します。
- 状態ファイル内のリソース オブジェクトが構成ファイルと一致する場合、Terraform はリソースを変更しません。
GKE の Terraform リソース
リソースは、Terraform 言語の基本要素です。各リソース ブロックは、仮想ネットワークやコンピューティング インスタンスなど、1 つ以上のインフラストラクチャ オブジェクトを記述します。
次の表に、GKE で使用可能な Terraform リソースを示します。
GKE の Terraform ベースガイド
次の表に、GKE の Terraform ベースのすべての入門ガイドとチュートリアルを示します:
| ガイド | 詳細 |
|---|---|
| Terraform を使用して GKE クラスタを作成し、ワークロードをデプロイする | Terraform を使用して Google Kubernetes Engine(GKE)Autopilot クラスタを作成し、ワークロードをデプロイする方法について説明します。 |
| Autopilot クラスタを作成する | Autopilot で GKE クラスタを作成する方法について説明します。 |
| ゾーンクラスタ の作成 | GKE でデフォルトの機能を有効にして Standard ゾーンクラスタを作成する方法について説明します 。 |
| リージョン クラスタ を作成する | GKE で Standard リージョン クラスタを作成する方法について説明します。 |
| Terraform を使用してマルチテナント クラスタを 作成する | Terraform を使用してマルチテナント クラスタを作成し、ワークロードをデプロイする方法について説明します。 |
| ノードプールの 追加と管理 | GKE Standard クラスタを実行しているノードプールを追加して操作する方法について説明します。 |
| Arm ノードを含むノードプールとクラスタを作成する | Arm ノードを含む GKE Standard クラスタまたはノードプールを作成し、GKE で Arm ワークロードを実行できるようにする方法について説明します。 |
| 予��済みゾーンリソースの使用 | GKE で予約済みの Compute Engine リソースを使用する方法について説明します。 |
| ノードイメージを指定する | GKE Standard クラスタ内のノードにノードイメージを指定する方法について説明します。 |
| Windows Server ノードプールを��用するクラスタを作成する | Microsoft Windows Server を実行するノードプール を持つ GKE クラスタの作成方法について説明します。 |
| クラスタとノードプールのラベルを作成して管理する | ラベルが添付されたクラスタを作成する方法について説明します。 |
| タグを使用して GKE リソースを管理する | タグを使用して GKE クラスタを管理する方法について説明します。 |
| ノードシステム構成 のカスタマイズ | ノードシステム構成ファイルを使用して GKE ノードシステム構成をカスタマイズする方法について説明します。 |
| VPC ネイティブ クラスタを作成する | GKE で VPC ネイティブ クラスタを構成する方法について説明します。 |
| 内部ロードバランサを作成する | GKE で内部パススルー ネットワーク ロードバランサまたは内部ロードバランサを作成する方法について説明します。 |
| 基本的な本番環境クラスタ用にネットワークを構成する | ウェブ アプリケーションを GKE クラスタにデプロイし、HTTPS ロードバランサで公開する方法について説明します。 |
| クラスタのアップグレードのロールアウトを順序付ける | ロールアウトの順序付けを使用して GKE クラスタのアップグレードを管理する方法について説明します。 |
| GKE Standard に TPU ワークロードをデプロイする | GKE Standard クラスタで Cloud TPU アクセラレータ(TPU)を使用する大規模な人工知能 (AI)と ML モデルのトレーニング、チューニング、推論 ワークロードをリクエストしてデプロイする方法について説明します。 |
| GKE Standard ノードプールで GPU を実行する | GKE Standard クラスタのノードに NVIDIA GPU を割り当てて使用することで、人工知能(AI)ワークロードなどのコンピューティング負荷の高いワークロードを実行し、最適化する方法について説明します。 |
| マルチインスタンス GPU の実行 | マルチインスタンス GPU を実行して使用率を高め、費用を削減する方法について説明します。 |
| GKE で Ray オペレーターを有効にする | GKE で Ray オペレーターを有効にする方法について説明します。 |
| セカンダリ ブートディスクを使用してデータまたはコンテナ イメージをプリロードする | セカンダリ ブートディスクを使用してワークロードの起動レイテンシを改善する方法について説明します。 |
| 高可用性 PostgreSQL データベースを GKE に デプロイする | GKE に高可用性 PostgreSQL トポロジをデプロイする方法について説明します。PostgreSQL は、信頼性とデータの完全性で有名なオープンソースのオブジェクト リレーショナル データベースです。 |
| コントロール プレーンの指標を収集して表示する | 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)クラスタを構成する方法について説明します。 |
| ログのスループットを調整する | デフォルトのログ スループットとスループットを増やす方法について説明します。 |
| GKE 用のマネージド OpenTelemetry を デプロイする | GKE 用のマネージド OpenTelemetry を設定して、 OTLP トレース、指標、ログを Google Cloud Observability に送信する方法について説明します。 |
| kube-state-metrics を収集して表示する | Google Cloud Managed Service for Prometheus を使用して、kube-state-metrics を Cloud Monitoring に送信するように GKE クラスタを構成する方法について説明します。 |
| Policy Controller をインストールする | Terraform を使用して Policy Controller をインストールする方法について説明します。 |
| クラスタで Backup for GKE を有効にする | クラスタで Backup for GKE を有効にする方法について説明します。 |
| 復元中にリソースを変更する | 変換ルールを使用して、復元プロセス中に Kubernetes リソースを変更する方法について説明します。 |
| バックアップ プランで Permissive モードを有効にする | バックアップ プランで制約なしモードを有効にする方法について説明します。 |
| Backup for GKE API を有効にする | Backup for GKE を有効にする方法について説明します。 |
| 一連のバックアップを計画する | GKE でワークロードをバックアップするために使用する Backup for GKE のバックアップ プランを作成する方法について説明します。 |
| クラスタをフリートに 登録する Google Cloud | Terraform を使用して GKE クラスタをフリートに登録する方法について説明します。 Google Cloud |
| Config Sync をフリートのデフォルトとしてインストールする | すべての新しいクラスタに対して Config Sync をフリートレベルのデフォルトとして構成する方法について説明します。 |
| フリート全体でチームのリソースを 管理する | Config Sync と Terraform を使用して、クラスタのフリート全体でチームスコープ リソースを動的に作成する方法について説明します。 |
GKE の Terraform モジュールとブループリント
モジュールとブループリントを使用すると、 Google Cloud リソースの大規模なプロビジョニングと管理を自動化できます。モジュールとは、Terraform リソースを論理的に抽象化する、再利用可能な一連の Terraform 構成ファイルのことです。ブループリントは、特定のソリューションを実装および文書化した、モジュールとポリシーのパッケージです。このパッケージはデプロイして再利用できます。
次の表に、GKE に関連するすべてのモジュールとブループリントを示します。
| モジュールまたはブループリント | 詳細 |
|---|---|
| terraform-google-kubernetes-engine | 独自の GKE クラスタを構成します。 |
| terraform-google-gke-gitlab | GKE に GitLab をインストールします。 |
次のステップ
- GKE の Terraform コードサンプル
- Google Cloud の Terraform に関するドキュメント
- HashiCorp のGoogle Cloud プロバイダのドキュメント
- Google Cloudの Infrastructure as Code