目次
はじめに
弊社では、インフラ構築に Terraform を使用しています。
Terraform は クラウド プラットフォームのリソースを作成するため、provider と呼ばれるプラグインを利用する必要があります。
Google Cloud のリソースを作成する場合は google provider を使用します。
provider はクラウド プラットフォームのリソース構築だけでなく、他にも使い方があります。
今回は Google Kubernetes Engine のクラスタへ、Terraform と Helm provider を組み合わせてソフトウェアをインストールする方法をご紹介します。
Helm provider を使用するメリット
Helm は、Kubernetes のパッケージマネージャーです。
Kubernetes アプリケーションを作成するために必要な情報をチャートと呼ばれるパッケージにまとめる事で、複雑な Kubernetes アプリケーションのインストール、更新などを管理しやすくします。
Google Cloud の Google Kubernetes Engine クラスタを構築する際、google provider はクラスタとノードプールを作成するまでを可能にしてくれます。
そこに、Helm provider を追加する事で、構築したクラスタにソフトウェアをインストールすることができます。
Terraform で構築するインフラと、基盤としてインストールするソフトウェアを Terraform で一括管理、設定することができ、構築の手間が減るのが嬉しいところです。
使用例
案件における使用例として、Terraform で構築した Google Kubernetes Engine クラスタに Helm で Agones をインストールする構成があります。
Agones は、ゲームサーバーのホスティングやスケーリングを行うプラットフォームソフトウェアです。
Agones についてはこちらの 過去記事 をご参照ください
Agones は Helm コマンドでインストールする際、以下のようなコマンドを必要とします。
(https://agones.dev/site/docs/installation/install-agones/helm/ より引用)
helm repo add agones https://agones.dev/chart/stable
helm repo update
helm install my-release --namespace agones-system --create-namespace agones/agones
こちらを、Terraform コードに組み込むと下記のようなコードになります。
terraform {
required_providers {
# google provider を宣言
google = {
source = "hashicorp/google"
version = "7.33.0"
}
# helm provider を宣言
helm = {
source = "hashicorp/helm"
version = "3.21.0"
}
}
}
data "google_client_config" "default" {
}
resource "google_container_cluster" "default" {
# GKE クラスタの宣言部、長いため省略
}
provider "helm" {
# Terraform がクラスタに対して Helm チャートのインストールを実施するために必要な認証情報
kubernetes {
host = "https://${data.google_container_cluster.default.endpoint}"
token = data.google_client_config.default.access_token
cluster_ca_certificate = base64decode(
data.google_container_cluster.default.master_auth[0].cluster_ca_certificate,
)
}
}
resource "helm_release" "agones" {
name = "agones"
repository = "https://agones.dev/chart/stable"
chart = "agones"
# version = <agones version> 特定バージョンが必要な場合は記載する
namespace = "agones-system"
create_namespace = true
}
Helm provider に GKE クラスタの認証情報を渡すのがポイントです。
まとめ
Helm チャートを Terraform で管理すると、インフラと、基盤としてインストールするソフトウェアを一括で管理することができ、便利です。
Helm チャートでインストールできる Kubernetes アプリケーションは多種多様です。
どんなアプリケーションが Helm で提供されているか気になった方は、まずは CNCF がホストしている Web サイト、Artifact Hub で調べてみるのがオススメです。




