Terraformを使ってGKEクラスタを作成する。

はじめに
VietnamLabブログのTerraform - Infrastructure as Codeブログでは TerraformツールとInfrastructure as Codeの概念について基本的な知識を研究しました。クラウドに各サービスを展開することがますます一般になっている傾向では、インフラの管理とインフラ展開自動化の問題は大事なことになっています。その問題を解決する為に、TerraformとInfrastructure as Codeが開発されました。本ブログでは、簡単なKubernetesクラスターを初期化するために、Terraform とGoogle Kubernetes Engineの使い方について紹介します。
必要な設定
基本的なステップ
- Terraformを設定する。
- Google Cloudのアカウントを作成する。 (新しいアカウントはGoogleから1年間使用できる300ドルのクレジットをもらうため、Google Cloudを使用しても費用はかかりません。)
- Google Cloud SDKをインストールする。
Google Cloud SDKの設定
Google Cloudのサービスを使用するには、まず、アカウントを作成した後、Google Cloudの管理ページに遷移し、Billingを選択してクレジットカード番号を入力する必要があります(実際の使用コストが発生した場合のみにお金が差し引かれます)。 次に、新しいプロジェクトを作成する必要があります。これは、Google Cloudに関連するすべての操作がプロジェクトで行われるためです。 Google Cloud SDKがインストールされると、gcloudコマンドがシステムに存在します。 次のコマンドを実行して、Google CloudSDKの設定を行います。 $ gloud init このコマンドを実行すると、ブラウザが開き、ログインしてGoogleアカウントで認証できるようになります。認証が完了した後、コマンドはCloud SDKがやり取りするデフォルトのプロジェクトを選択するようにガイドします。作成したプロジェクトを選択するか、新しいプロジェクトを作成して、選択したプロジェクトのCompute zoneを選択できます。 次のステップでは、以下の必要なAPIを有効にします。 $ gcloud services enable container.googleapis.com $ gcloud services enable cloudresourcemanager.googleapis.com $ gcloud services enable storage-api.googleapis.com $ gcloud services enable iam.googleapis.com TerraformがGoogle Cloudとやり取りするには、サービスアカウントを作成し、このサービスアカウントの権限を設定する必要があります。 $ gcloud iam service-accounts create [service_account_name] # service_account_nameは任意です。 $ gcloud projects add-iam-policy-binding [project_name] "serviceAccount:[service_account_name]@[project_name].iam.gserviceaccount.com" --role "roles/editor" # project_nameは作成したプロジェクト名です。 次に、Terraformが使用するキーファイルを生成します(注:このキーファイルを使用してGoogle Cloudと直接やり取りできるため、公開ではなく秘密にする必要があります)。 $ gcloud iam service-accounts keys create key.json --iam-account [service_account_name]@[project_name].iam.gserviceaccount.comCloud Storage Bucketを初期化して、Terraform stateを保存する
インフラストラクチャの現在の状態は、Terraformによってstateファイルに保存されます。デフォルト値を使用する場合、ローカルに保存され、このローカル装置のみがシステムの現在のstateにアクセスし、作成されたインフラストラクチャと操作できます。 stateファイルへのアクセスを共有するには、stateをクラウドに保存するようにTerraformを設定する必要があります。この記事では、Google Cloud Storageを使用します。 以下のgsutilコマンド(Google Cloud SDKのインストール時に使用可能)は、Cloud Storage bucketを初期化し、バージョン管理機能を設定します(Terraformのドキュメントで推奨されています)。 $ gsutil mb gs://[bucket_id] # bucket_idは任意で、ユニークです。 $ gsutil versioning set on gs://[bucket_id]Terraformの設定
まず、Terraform設定ファイルを格納するフォルダーを作成し、以下の内容の.gitignoreファイルを追加します。 # Local .terraform directories **/.terraform/* # .tfstate files *.tfstate *.tfstate.* # secret .tfvars files secret.tfvars # account file *key.json 次に、以下のようにmain.tf ファイルを作成します。このファイルでは、Terraform がGoogle Cloud Storeを使用してstateを保存するように設定し、同時にTerraform がGoogle Cloudとやり取りできるように設定しました。 terraform { backend "gcs" {} } provider "google" { credentials = file("key.json") project = var.project region = var.region } 次に、使用する変数とその値を宣言します。デフォルトでは、Terraformはterraformコマンド実行フォルダーのterraform.tfvars または*.auto.tfvars ファイルから変数の値を読み込みます。また、コマンドラインから値を渡すか、Terraform が-var-file オプションで他のファイルを使用するように設定することもできます(staging.tfvars、 dev.tfvarsなどの環境用に各ファイルを作成できます)。- 変数を宣言する。
- # variables.tf
- variable "project" {
- type = string
- }
- variable "region" {
- type = string
- }
- variable "general_machine_type" {
- type = string
- }
- variable "min_node_count" {
- type = number
- }
- variable "max_node_count" {
- type = number
- }
- variable "is_preemptible" {
- type = bool
- }
- 値を宣言する。
- # terraform.tfvars
- project = "[project_name]"
- region = "asia-southeast1"
- general_machine_type = "n1-standard-1"
- min_node_count = 1
- max_node_count = 2
- is_preemptible = true
オフショア開発サービスとAIソリューションの詳細については、以下にお問い合わせください。 |
|
メール: |
[email protected] |
電話番号: |
84-24-3772-4304 |
IoT Solutions