生産性を高めるシステム構成の統合管理やコード化・データ化を徹底解説
- Cloud
- Compute Engine
- Config Connector
- Terraform
本記事は、2022年4月20日に開催された Google の公式イベント「 Google Cloud ML サミット」において、 Google Cloud パートナーエンジニアの栃沢直樹氏が講演された「インフラストラクチャのコード化と Compute Engine の運用管理をアップデート」のレポート記事となります。
今回はインフラストラクチャを運用する上で「よりクラウドらしい」方法を実現するための重要なポイントについて、 Terraform with Google Cloud や Config Connector などの具体的なサービスを交えながらわかりやすくご紹介します。
なお、本記事内で使用している画像に関しては、 Google Cloud ML サミット「インフラストラクチャのコード化と Compute Engine の運用管理をアップデート」を出典元として参照しております。
それでは、早速内容を見ていきましょう。
目次
生産性を高めるモダンなクラウド運用とは?
下図の左側に「ビジネスにおいて必要なもの」を並べており、これらを実現するための「モダンなクラウド運用において重要なポイント」を右側に並べています。
このように、クラウド運用を進める上ではパブリッククラウドやデータセンターなど、あらゆる場所へシンプルに展開でき、開発速度や安全性を高めながらコンプライアンスも遵守する必要があります。さらに、自社ビジネスの成長に柔軟に対応するためのスケール性も重要なポイントです。
そして、これらのモダンなクラウド運用を実現するためには仕組みを活用することが大切です。ここからは「システム構成の統合管理」と「システム構成のコード化・データ化」の2点に焦点をあてて、それぞれについて詳しく解説します。
生産性を高めるシステム構成の統合管理方法とツールの紹介
コンピューティングリソースの移行ステップ
はじめに、コンピューティングリソースの移行ステップを見ていきましょう。
まずは既存システムを見える化し、コストや予算を踏まえて移行計画を策定します。そして、ワークロードを移行した後、それを管理するフェーズに入ります。最後の運用管理のフェーズでは Cloud Monitoring や Cloud Logging などのサービスが多く使われていますが、今回は VM Manager を深掘りしてご説明します。
VM Manager とは?
VM Manager とは、 Google Compute Engine をより深く管理するためのサービスです。 VM Manager はマネージドで提供されており、複雑さを簡素化することで大規模な環境でも手間なくシステムを管理できます。
VM Manager には、大きく分けて次の3つの機能が存在します。
- OS Inventory Management
- OS Configuration Management
- OS Patch Management
それでは、各機能について順番に見ていきましょう。
OS Inventory Management
OS Inventory Management はインスタンスの OS バージョンやインスタンスにインストールされているパッケージ情報など、様々な情報を一元的に取得します。部門ごとに管理しているインスタンスに対しても、すべてのアセット情報を部門を跨いで管理することでガバナンスを強化できます。
OS Configuration Management
OS Configuration Management は事前に設定したポリシーに則り、インスタンスへのソフトウェアのインストールや削除、更新をマネージドサービスとして提供しています。
定期的にポリシーに則っているかどうかを確認し、ポリシー定義と差異がある場合には OS 標準のパッケージマネージャーを利用して修正できます。また、 OS やラベル、リージョンなどによってゲストポリシーの適用対象となるインスタンスを制御することも可能です。
なお、 OS ポリシーの作成に活用できるサンプルコードも提供されているため、初めての場合でも安心して使うことができます。
OS Patch Management
OS Patch Management はインスタンスにおける OS の更新作業を簡略化し、 OS を脆弱性などの脅威から保護します。また、更新を適用する OS をはじめ、様々なパラメータを定めることで、煩雑な更新作業を一括管理することが可能になります。
なお、 VM Manager にはリファレンスというガイドが用意されており、動画やクイックガイドなどを見ながら使い方を確認できるので、安心して利用できる点も嬉しいポイントです。
システム構成のコード化・データ化
コード化・データ化のメリット
システム構成をコード化・データ化することで、一般的には次のようなメリットを享受できます。
- 構築工数の削減
- 再現性
- 設定ミスの防止
- 設定内容の可視化
- 継続的な活用によるバージョン管理
つまり、人為的な作業に頼らなくても良い部分を仕組みとして実装することで、自社の業務効率化や生産性向上に繋がります。
なお、コード化は英語で Infrastructure as Code 、データ化は Configuration as Data と呼ばれています。ここから先はコード化・データ化をこれらの英単語を使って表現します。
Infrastructure as Code とは?
Infrastructure as Code とは、システムをそれぞれ手動で設定するのではなく、「目指すべき構成」を「コード」として定義することです。これにより、下図のような運用管理の効率化を実現できます。
ここで、 Infrastructure as Code を実現するためのツールを2つご紹介します。
Deployment Manager は Google Cloud (GCP)のネイティブサービスであり、 Google Cloud (GCP)環境での利用を想定しているため、ハイブリッドクラウドやマルチクラウドなどの環境で使う場合には不向きだと言えます。
そこで効果を発揮するツールが Terraform です。 Terraform を活用することで、オンプレミスやハイブリッドクラウド、マルチクラウドなど、様々な環境で Infrastructure as Code を実現できます。また、 Terraform は Google Cloud (GCP)向けにモジュールを提供しており、 Google Cloud (GCP)の各リソースを展開する上で必要な様々なモジュールが用意されています。
例えば、 Terraform と Cloud Build を組み合わせて使うことで、コードレビューの承認プロセスを確立してオペレーションミスを防ぐことができ、組織としての対応を実現可能になります。
また、現在は Public Preview となっていますが、既存リソースから Terraform コードをエクスポートすることも可能です。これは Google Cloud CLI を利用して、デプロイされている Google Cloud (GCP)のリソースから Terraform 形式でエクスポートするものです。
なお、 Terraform に関するリファレンスも用意されているので、ご興味のある方はぜひご覧ください。先ほどご紹介した Cloud Build との連携についても解説されています。
Configuration as Data とは?
Configuration as Data とは、インフラストラクチャやアプリケーションの「望ましい状態」を「データ」として定義し、デプロイ、管理する宣言型アプローチです。これにより、下図のような運用管理の効率化を実現できます。
Google Cloud (GCP)のリソースを Configuration as Data で管理する場合、インフラストラクチャの構築機能としては Kubernetes Resource Model (KRM)をベースとした考え方になります。
KRM は Kubernetes のデプロイの仕組みを利用するため、汎用的に使うことができ、 Kubernetes 以外の Google Cloud (GCP)の各リソースを管理できます。また、コードの依存関係を極力意識せず、パラメータのみを設定できますし、リファレンスやブループリントも用意されているため、 Kubernetes 初心者でも安心して利用できます。
そして、定義したデータの管理では GitOps を活用します。 Git リポジトリの情報を信頼できる唯一の情報としてデプロイの再現性・完全性を担保でき、バージョニングや複製についても適切に管理することが可能です。さらに、 CI / CD の既存のパイプラインとの親和性が高い点も嬉しいポイントです。
Google Cloud (GCP)では Config Controller というマネージドサービスを提供しています。これは Google Cloud (GCP)リソースのプロビジョニングとオーケストレーションを行うホスト型サービスであり、下図のような様々な機能を搭載しています。
Config Controller を構成するコンポーネントは下図の通りです。 Config Sync や Policy Controller など、用途に応じて使える様々なコンポーネントが用意されています。
GitOps の部分は Config Sync が用意されており、 GitHub やリポジトリとの連携などを担います。また、ポリシー管理に関しては Policy Controller で制約テンプレートやカスタムテンプレートを管理でき、リソース管理は Config Connector でマニフェストの内容を「理想の状態」として、実環境との差分をチェックできます。
以下は Config Controller による Google Cloud (GCP)リソースの管理イメージを図に示したものです。
Config Controller が展開されると、先ほどご説明した3つのコンポーネントが動きます。その後、参照するリソースリポジトリを設定してマニフェストのファイルを展開すれば、それがトリガーとなり実際の環境をプロビジョニングします。
そして、プロビジョニングが開始された後は実際の環境とマニフェストの情報を常に照合し、そこに差異が生じた場合はマニフェストの状態に戻してくれます。これにより、運用管理の手間をかけることなく、常に理想の状態を維持することが可能になります。
ここで、 Configuration as Data と GitOps を組み合わせて活用するメリットをご紹介します。まずはコンプライアンスやバージョニングなどの観点から、本番環境に安全にデプロイできるプロセスを確立できる点が挙げられます。
また、マニフェストによる理想の状態が維持され、理想と実環境間での差異は発生せず、管理対象が大規模になった場合でも運用負荷が一定になる点も嬉しいポイントです。
なお、 Config Connector Resources をはじめとした様々なリファレンスが用意されているので、ご興味のある方はぜひご覧ください。さらに制約テンプレートも存在するので、運用する上での参考になると思います。
また、現在は Public Preview となっている Landing Zone という機能があり、 Google Cloud (GCP)のベストプラクティスに基づいた環境を迅速にセットアップするためのブループリントを yaml で提供しています。
ここまで、 Terraform with Google Cloud と Config Connector の2つについて詳しくご紹介しました。それぞれ目的や選択のポイントが異なるため、自社の状況に合わせて最適なものを選ぶようにしてください。
まとめ
今回はインフラストラクチャを運用する上で「よりクラウドらしい」方法を実現するための重要なポイントについて、 Terraform with Google Cloud や Config Connector などの具体的なサービスを交えながらわかりやすくご紹介しました。
Compute Engine のインスタンスに対しても Google Cloud (GCP)が提供するマネージドサービスを活用して、インベントリやセキュリティ管理を実装することができます。そして、システム構成の統合管理やコード化・データ化を実現することで、組織レベルでの適切なインフラ管理を仕組みとして実現することが可能になります。
インフラストラクチャの基本的なキャッチアップやリファレンス・ブループリントなど、 Infrastructure as Code や Configuration as Data を取り組む上で必要なことを意識して、できる部分から始めてみてはいかがでしょうか?
弊社トップゲートでは、Google Cloud (GCP) 利用料3%OFFや支払代行手数料無料、請求書払い可能などGoogle Cloud (GCP)をお得に便利に利用できます。さらに専門的な知見を活かし、幅広くあなたのビジネスを加速させるためにサポートをワンストップで対応することが可能です。
Google Workspace(旧G Suite)に関しても、実績に裏付けられた技術力やさまざまな導入支援実績があります。あなたの状況に最適な利用方法の提案から運用のサポートまでのあなたに寄り添ったサポートを実現します!
Google Cloud (GCP)、またはGoogle Workspace(旧G Suite)の導入をご検討をされている方はお気軽にお問い合わせください。
メール登録者数3万件!TOPGATE MAGAZINE大好評配信中!
Google Cloud(GCP)、Google Workspace(旧G Suite) 、TOPGATEの最新情報が満載!