はじめに
naritomoと申します。
本職はインフラエンジニアを行っています。
最近色々活用し始めているterraformからのK8Sインフラ構築を実施してみました。
いろいろアドバイスいただけると嬉しいです。
立ち上げ概要
terraformでGKE(GCP上のK8S)を立ち上げるものになります。
必要なソースは以下にまとめてあります。
前提
以下のページなどを参考に、terraform稼働環境を作成し、GCPでの適当なリソースが作成できる状態にあること。
とくにgcp.jsonファイルを作成できていること。
Dockerを使用しない場合、以下のコマンドを利用できている状態になっていること。
aws
brew
*Terraform導入時に必要
tfenv
*terraform稼働コンテナを利用しない場合は必要
k8s関連コマンド(kubectl)を使用できていること。
以下のページを参考に手動コマンドでのGKE構築できていること。
(コンテナ利用しない場合)指定バージョン(1.5.7)のterraformを導入する。
tfenv install
terraformソースファイル入手
terraformを動かすフォルダ内にて、以下コマンドを稼働する。
git clone https://github.com/naritomo08/terraform_GKE_public.git
cd terraform_GKE
後にファイル編集などをして、git通知が煩わしいときは
作成したフォルダで以下のコマンドを入れる。
rm -rf .git
gcp.jsonファイルを本フォルダに持ってくる。
作成(基本ネットワーク、GKE作成)
tfstateフォルダに行き、tfstate用バケットを作成する。
作成する際、”main.tf”内の<バケット名>部分を適当な名前に変更すること。
同じく、”provider.tf”内の<プリジェクト名>部分を使用しているプロジェクト名にする。
defaultフォルダ内へ順番入り、リソース作成を実施する。
作成する際、”backend.tf”内の<バケット名>部分を前の手順で指定した名前に変更すること。
provider.tf,varidate.tf内の<プロジェクト名>をgcpで使用するプロジェクト名にする。
作成コマンド
以下のコマンドで作成可能
一度作成できれば最後のコマンドのみでよい。
terraform init
terraform plan
terraform apply
→ yesを入力する。
*いくつかエラーでてくる際は落ち着いてエラーを訳して対応すること。大体API立ち上げかAMI権限追加になります。
GKE利用方法
gcloud container clusters get-credentials cluster --region asia-northeast1
kubectl config get-contexts
→コンテキスト情報が出ること
kubectl get nodes
→3台のノードがでてくること。
サンプルデプロイ実施。
manifestフォルダに移動。
kubectl apply -f deploy.yml
kubectl apply -f svc-lb.yml
確認
kubectl get svc
→External-IPの値を確認する。(数分待つ。)
以下のサイトへアクセスしてnginx画面が出てくること。
http://<External-IP>
サンプルデプロイ削除
kubectl delete -f .
削除方法
以下のコマンドで削除可能
ccd ../default
terraform destroy
cd ../tfstate
terraform destroy
kubectl config current-context
→はじめに出てくるnameのものを控える。
kubectl config delete-context <コンテキスト名>
おわりに
この記事がTerraform/GKEを扱う方の助けになればと思います。