Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Build × Terraform = “Infra” CI / CD

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for SouMatsuda SouMatsuda
October 01, 2019

Cloud Build × Terraform = “Infra” CI / CD

Avatar for SouMatsuda

SouMatsuda

October 01, 2019

Other Decks in Technology

Transcript

  1. Cloud Build × Terraform = “Infra” CI / CD Google

    Cloud Build Day 2019/10/01 @mtds_08
  2. 自己紹介 松田 創 ( Matsuda Sou ) ◦ NEC ネッツエスアイ株式会社

    所属 ◦ インフラエンジニア ▪ 普段は Kubernetes や Red Hat OpenShift Container Platform 等 のコンテナ関連のプロダクトや GCP を主に触ってます。 ◦ Twitter : @mtds_08 (作りたて)
  3. Terraform とは • HashiCorp 社により開発されている、オープンソースの インフラストラクチャ自動構築/管理ツール ◦ 類似ツール : Pulumi,

    Cloud Development Kit ( AWS ) ...等 • インフラをコードとして宣言的に定義 ( IaC : Infrastructure as Code ) ◦ 環境の自動構築や、ソースコードリポジトリでのバージョン管理を実現 • パブリッククラウドの様々なサービス や、インフラソフトウェア ( OpenStack, Kubernetes 等) をサポート
  4. Terraform の主な設定ファイル • tf ファイル ◦ 構築および管理を行うインフラリソースを定義するファイル ◦ HCL (

    HashiCorp Configuration Language ) と呼ばれる 独自言語で定義 • .tfstate ファイル ◦ 構築したインフラリソースの現在の状態 ( 設定値 ) を管理する ための json ファイル ◦ リモートストレージ ( Google Cloud Storage 等 ) への格納も可能
  5. Terraform を GCP で利用する場合の実行例 Terraform CLI .tf File Node Pool

    Compute Engine GKE Cluster Kubernetes Engine GKE Network Cloud Network tfstate Bucket Cloud Storage Cloud API Cloud APIs 一括 Deploy GCS に .tfstate File を格納 terraform apply Terraform で管理 インフラの状態を保持 init : 初期化 plan : 実行計画作成 apply : デプロイ destroy : 削除
  6. インフラをコードとして定義する Infrastructure as Code によって 実現可能な、CI / CD の手法をインフラの管理・運用に適用する考え方 インフラ

    CI / CD とは Test & Build 成果物の 管理 インフラ管 理者 Infrastructure コード リポジトリ Deploy CI/CD ツール CI/CD パイプライン Trigger Release Push
  7. IaC と インフラ CI / CD のメリット • 構築フェーズ ◦

    同一構成環境の複製が容易 ( 開発→ステージング→本番 ) ◦ 環境構築時のオペレーションミスの撲滅 • 運用フェーズ ◦ インフラのバージョン管理による変更の追跡が可能 ◦ サービスの安定運用やインフラの品質向上を継続的に実施
  8. Cloud Build × Terraform の環境構成例 CI / CD Pipeline Trigger

    インフラ 管理者 Push Terraform Container Infra Deploy Cloud Build Image Pull Infra Repo Cloud Source Repositories Node Pool GKE Cluster Nodes Node Pool Nodes Container Run init 初期化 apply デプロイ plan テスト Sync Deploy tfstate Bucket Cloud Storage Remote Backend GitHub Terraform Cloud Builder※ ※https://github.com/GoogleCloudPlatform/cloud-builders-community/tree/master/terraform
  9. まずは個人的な GCP 検証や PoC にて Cloud Build × Terraform を利用

    使ってみた所感 • 良かった点 ◦ Cloud Build is 使いやすい ▪ しかもコミュニティで Terraform Cloud Builder が提供されており、すぐ試せる ◦ 頻繁にクラウドインフラの変更作業が発生する場合、 作業の工数を削減可能 ▪ インフラの変更履歴が管理されているのも嬉しい • 課題・今後の展望 ◦ とはいえ、学習コストはそれなりにかかる ▪ 今後は 個人 → チーム → 社内 と展開していきたい ◦ 既存環境への適用が難しい ▪ terraformer 等のエクスポートツールに期待