[Google Cloud Next '24 Las Vegas] Infrastructure as Code の活用

 2024.04.21 XIMIX Google Cloud チーム

IMG_0507

Google Cloud Next '24 Las Vegasとは

Google Cloud Next '24は、2024年4月9日から4月11日の3日間、アメリカ・ラスベガスのMandalay Bayにおいて開催されるGoogleのクラウドサービスに関する世界最大級のイベントです。開発者、エンジニア、IT専門家、業界リーダーが集結し、3日間にわたり技術の最前線を駆け巡ります。特に今年のイベントは、AI/ML(人工知能・機械学習)にフォーカスが当てられ、セッションの約4割がAI/ML関連となり、その最新情報が発表されることが強く期待されています。

私たち日本情報通信株式会社も、Google Cloudに精通した専門家として、技術イノベーションの最新動向を取り入れ、顧客に対するソリューション提供に活かしていくことを目指して参加しています。

このような貴重な機会ですので、現地からいち早くブログで最新情報や熱量を発信してまいります。

本記事で紹介するセッション概要

  • 講演日時:2024年4月11日 03:45 - 04:30 GMT-7
  • セッションタイトル:Multi-project, multi-runtime, multi-region infrastructure as code
  • 登壇者
    • Rosemary Wang
      • Developer Advocate - HashiCorp
  • セッション内容のサマリ
    Infrastructure as code を使ってクラウドのリソースをプロビジョニングしました。1年後、リソースの使用状況や依存関係をよりよく管理するためにリファクタリングし、新しいリージョン、ランタイム、プロジェクトを追加することに気づくでしょう。このセッションでは、ゼロからマルチリージョン、マルチランタイム、マルチプロジェクト、マルチクラウドにスケールするためのパターンとプラクティスを学びます。スケールの基礎を最初に確立することで、リファクタリングの労力を減らし、新しいランタイム、リージョン、プロジェクト、さらにはクラウドをシステムに追加することができます。

このセッションで期待できること

  • Infrastructure as code (Terraform) の構成例、実装例について知ることができます。
  • Infrastructure as code (Terraform) を使用する際に何を考慮して実装すべきか知ることができます。

セッション内容

まず Terraform にて組織を管理する際、以下 3 つの観点を意識して設計することが重要です。
  • 1レイヤ毎に1つの state(Terraform) として管理
    • 環境ごとに異なる state にて管理する
  • 1レイア毎に1つのサービスアカウントにて管理
    • リソース作成の為の最低限の権限を付与する
  • 1レイア毎に1つのパイプラインにて管理
    • 変更を個別に展開する

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0008

Terraform を長く運用していくと、管理部分が非常に煩雑になる為、この考え方は基本原則として実装すると保守性の高いコードが作成できます。

では、実際のサンプルを見ていきましょう。

構成サンプル

このセクションでは Terraform にて Google Cloud プロジェクトの管理方法に関する、ディレクトリ構成の推奨例をご紹介します。

bootstrap  common というディレクトリを作成し、組織に共通したリソース配置用プロジェクトを作成しています。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0016

続いて、各環境毎にもディレクトリを作成し、その中で環境に必要なプロジェクトを分けて管理しています。この例では、モニタリングとシークレットプロジェクトは環境毎に共通的に払い出す対象としています。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0020

さらに、ランタイム、ビジネスユニットを観点としプロジェクトを管理する方法です。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0025

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0024

扱うプロジェクト別に、それぞれの観点でディレクトリ構成や何を管理するかの検討にこの考え方は非常に有効です。

続いて、実際の Terraform コードを実装する際に考慮すべき観点においてのサンプルをご紹介します。

サンプルコード

サンプルコードでは以下のユースケースの実装例をご紹介します。

  • 環境別管理の定義
    • 環境によって異なるリソースの定義
  • 複数リージョンにリソースを展開する場合の定義

この項では、以下のモジュールを使用してサンプルコードをご紹介します。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0027

環境別管理の定義

基本的に環境別の管理は provider ブロックにて記述します。ここにプロジェクトを記載することで、リソース毎にプロジェクトを指定することなく、意図したプロジェクトに作成されるように認識されます。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0028

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0029

本番環境にのみ構築したいリソースが存在する場合、本番環境の Terraform にそのリソースを定義します。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0030

複数リージョンにリソースを展開する場合の定義

複数リージョンにリソースを構築したい状況もよくあるケースかと思います。その場合は provider ブロックを複数定義し、alias にて対象を選択できるようにします。これにより、複数リージョンをプロビジョニングできるようになります。

ARC303 - Multi-project, multi-runtime, multi-region infrastructure as code_page-0033

これらは Style Guide - HashiCorp Developer でも推奨コーディング方法として紹介されています。

会場の様子

広い場内に多くのエンジニアが聴講に来られていました。IaCの注目度とその運用に対する難しさを多くの方が抱えているのだと再認識できたセッションでした。

まとめ・感想

これらの Terraform のサンプルは terraform-google-modules を元に考えられており、弊社でも Google Cloud 基盤を構築する際に参考としたものになります。Google Cloud 基盤を構成する際は、是非参考にしてみてはいかがでしょうか。

参考

Multi-project, multi-runtime, multi-region infrastructure as code

Google Cloud、Google Workspace に関するご相談はXIMIXへ!

Google Cloud、Google Workspaceに関する お問い合わせはこちら
XIMIX®は日本情報通信株式会社が所有する登録商標です。(商標登録第6755234号)

執筆者紹介

XIMIX Google Cloud チーム
XIMIX Google Cloud チーム

[Google Cloud Next '24 Las Vegas] Infrastructure as Code の活用

BACK TO LIST