LoginSignup
11
9

More than 5 years have passed since last update.

Terraform で GKE(GoogleContainerCluster) のコンテナクラスタを作成

Posted at

前提

  • GoogleCloudPlatform のアカウントは取得済み
  • Google Cloud SDK インストールおよび認証済み
  • terraformはインストール済み(今回の環境では0.6.8)

事前作業

GoogleDevelopersConsole にて以下の作業を行っておく

  • プロジェクトの作成
  • OAuth の同意設定
  • サービスアカウントキーの取得(JSON形式)

手順

tfファイルと同じ場所に事前に取得したサービスアカウントキーのJSONを置く

■tfファイルを作成

variable "project" {}
variable "region" {
  default = "asia-east1"
}
variable "cluster_name" {}
variable "zone" {}
variable "network" {}
variable "initial_node_count" {}
variable "machine_type" {}
variable "disk_size" {}
variable "master_auth_username" {}
variable "master_auth_password" {}

provider "google" {
  credentials = "${file("account.json")}"
  project     = "${var.project}"
  region      = "${var.region}"
}

resource "google_container_cluster" "default" {
  name = "${var.cluster_name}"
  zone = "${var.zone}"
  network = "${var.network}"
  initial_node_count = "${var.initial_node_count}"

  node_config {
    machine_type = "${var.machine_type}"
    disk_size_gb = "${var.disk_size}"
  }

  master_auth {
    username = "${var.master_auth_username}"
    password = "${var.master_auth_password}"
  }

}

■terraform.tfvarsの中身

project = "************"
cluster_name = "cluster-1"
zone = "asia-east1-b"
network = "default"
initial_node_count = "3"
machine_type = "f1-micro"
disk_size = "10"
master_auth_username = "***********"
master_auth_password = "***********"

※f1-micro の場合は、initial_node_count の値は3以上を指定

terraform apply 実行するとコンテナクラスタが作成される

Kubernetes の Web UI へのログイン

作成したコンテナクラスタの MASTER IP を確認

$ gcloud container clusters list
NAME       ZONE          MASTER_VERSION  MASTER_IP        MACHINE_TYPE  NUM_NODES  STATUS
cluster-1  asia-east1-b  1.1.3           ***.***.***.***  f1-micro      3          RUNNING

https://{上記 MASTER_IP に表示されているIPアドレス}/ui/ にアクセス
※Basic認証のID・パスワードは terraform の .tfvars に設定した master_auth_username / master_auth_password となります

01.png

kubectl の認証情報を取得

$ gcloud container clusters get-credentials cluster-1

ノードの確認

$ kubectl get node
NAME                               LABELS                                                    STATUS    AGE
gke-cluster-1-e6ff40f6-node-oxvo   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-oxvo   Ready     1m
gke-cluster-1-e6ff40f6-node-v2rg   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v2rg   Ready     1m
gke-cluster-1-e6ff40f6-node-v8mt   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v8mt   Ready     1m

※TIPS

cluster内のノード追加・削除に関しては、terraformからは変更できない

initial_node_count = "4" に変更して terraform plan 実行すると cluster が再作成されることが分かる

-/+ google_container_cluster.default
    cluster_ipv4_cidr:                    "10.52.0.0/14" => "<computed>"
    endpoint:                             "***.***.***.***" => "<computed>"
    initial_node_count:                   "3" => "4" (forces new resource)

ノードの追加方法

まずはインスタンスグループを確認する

$ gcloud compute instance-groups managed list
NAME                         ZONE         BASE_INSTANCE_NAME          SIZE TARGET_SIZE INSTANCE_TEMPLATE            AUTOSCALED
gke-cluster-1-e6ff40f6-group asia-east1-b gke-cluster-1-e6ff40f6-node 3    3           gke-cluster-1-e6ff40f6-1-1-3 no

gcloud コマンドにて確認したインスタンスグループに対して、サイズ変更(ノード数を3→4に変更)

$ gcloud compute instance-groups managed resize gke-cluster-1-e6ff40f6-group --size 4
...snip...
currentActions:
  abandoning: 0
  creating: 1
  deleting: 0
  none: 3
  recreating: 0
  refreshing: 0
  restarting: 0
...snip...
targetSize: 4
zone: asia-east1-b

ノードの確認

$ kubectl get node
NAME                               LABELS                                                    STATUS    AGE
gke-cluster-1-e6ff40f6-node-c723   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-c723   Ready     1m
gke-cluster-1-e6ff40f6-node-oxvo   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-oxvo   Ready     23m
gke-cluster-1-e6ff40f6-node-v2rg   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v2rg   Ready     23m
gke-cluster-1-e6ff40f6-node-v8mt   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v8mt   Ready     23m

ノードの削除

ノード数を4→3に変更

$ gcloud compute instance-groups managed resize gke-cluster-1-e6ff40f6-group --size 3

ノードの確認

$ kubectl get node
NAME                               LABELS                                                    STATUS    AGE
gke-cluster-1-e6ff40f6-node-oxvo   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-oxvo   Ready     34m
gke-cluster-1-e6ff40f6-node-v2rg   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v2rg   Ready     34m
gke-cluster-1-e6ff40f6-node-v8mt   kubernetes.io/hostname=gke-cluster-1-e6ff40f6-node-v8mt   Ready     34m
11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9