Google Cloud Deploy の概要: GKE に対するマネージド型の継続的デリバリー
Google Cloud Japan Team
※この投稿は米国時間 2021 年 9 月 23 日に、Google Cloud blog に投稿されたものの抄訳です。
継続的デリバリーは、Google Kubernetes Engine(GKE)を導入している組織にとって常に最重要事項です。ですが、コンテナ イメージのアーティファクトをさまざまな環境にデプロイする際の継続的デリバリーは、特に Kubernetes 環境では未だに手間がかかります。受け入れられているベスト プラクティスは限られており、継続的デリバリーのツール、パイプライン、再現可能なプロセスの構築やスケーリングは、現場での豊富な経験が必要とされる大変な作業です。
しかし今回のリリースにより、今後はそんな心配も必要なくなります。
このたび、Google Cloud Deploy が公開されたことをお知らせいたします。これは、GKE に対する継続的デリバリーの容易さ、速さ、信頼性を高めることを可能にしたマネージド型の独自の継続的デリバリー サービスです。継続的デリバリーの課題を解決
Google Cloud Deploy は、50 組を超えるお客様と議論を重ね、GKE に継続的デリバリーを行う際に直面する課題についてよく理解したうえで作られたサービスです。クラウドネイティブ型のビジネスであっても従来型のビジネスであっても、浮かび上がってくる 3 つの課題は共通していました。「所有コスト」、「セキュリティと監査」、「インテグレーション」です。
それでは、これらの課題についてと、Google Cloud Deploy での対応方法について詳しく見ていきましょう。
所有コスト
Google では、Kubernetes 継続的デリバリーの運用コストが高いことを何度も耳にしてきました。ベスト プラクティスかつ再現可能なプラクティスを特定して、デリバリー ツールとパイプラインをスケーリングし、何のメンテナンスもなく最新の状態に保つことは、リソースを大量に消費し、中核事業から時間を奪っていきます。
「継続的デリバリーを取り入れられるだけの余裕はありません。ベスト プラクティスをサポートしてくれるような、すぐに使用できる独自のサービスが必要です」と話すお客様もいました。
Google Cloud Deploy は正面から所有コストに対処します。
Google Cloud Deploy はマネージド サービスとして、セルフマネージド型の継続的デリバリー ソリューションに通常付随する、スケーリングとメンテナンスの負担を取り除きます。これにより、継続的デリバリー ツールの維持に費やしてきた時間が不要となり、その時間をお客様に価値を提供するために使うことができます。
Google Cloud Deploy は、構造も提供します。デリバリー パイプラインとターゲットは宣言的に定義され、リリースごとに保存されます。つまり、デリバリー パイプラインが変更された場合でも、本番環境にデプロイするまでのリリースのフローでは、耐久性が維持されます。デリバリー パイプラインへの変更により生じた、実施中のリリースでの問題をトラブルシューティングするために、これ以上時間を奪われることはありません。
さまざまな GKE ロールやペルソナが、継続的デリバリーのプロセスに関与していることがわかりました。DevOps エンジニアは、リリースのプロモーションとロールバックの意思決定に集中する一方で、ビジネスの意思決定者が考慮しているのはデリバリー パイプラインの状態とベロシティである場合もあります。Google Cloud Deploy のユーザー エクスペリエンスでは、こうした多角的な視点を念頭に置きながら、さまざまなペルソナによるコンテキストに合ったレビューの実施や意思決定を行いやすくすることで、効率の向上と所有コストの削減を実現します。
セキュリティと監査
多くの異なるユーザーが継続的デリバリー システムを操作し、さまざまな意思決定を行っています。しかし、すべてのユーザーや決定に同じだけの権限があるわけではありません。たとえば、デリバリー パイプラインの定義や更新が可能であるからといって、リリースも作成できるとは限りませんし、ステージングにリリースをプロモートできるからといって、本番環境への承認が可能というわけではありません。現代の継続的デリバリーは、セキュリティや監査のための留意事項で溢れています。誰が、どこで、どのようにアクセスできるかを制限することは、リリースの整合性と安全を維持するうえで必要不可欠です。
Google Cloud Deploy は、個別のリソース アクセス制御と実行レベルのセキュリティにより、全体にわたってきめ細かい制限を実現しています。また、不正な承認に対する追加の安全保護対策として、リリース プロモーション、ロールバック、承認などのフロー管理機能も活用することができます。
Google Cloud Deploy での監査は、その他の Google Cloud サービスと同様に機能します。Cloud Audit Logs は、ユーザー呼び出しの Google Cloud Deploy アクティビティを監査し、誰が特定のリリースをプロモートしたか、誰がデリバリー パイプラインを更新したかの情報を一元化して認識できるようにします。
インテグレーション
継続的デリバリー能力をすでに持っているかどうかにかかわらず、ソフトウェア配信方法に関係する継続的インテグレーション(CI)、承認ワークフローおよび / またはオペレーション ワークフロー、その他のシステムは、すでに保有している場合が多いと考えられます。
Google Cloud Deploy では、次の 3 つの形で GKE デリバリー ツール エコシステムが採用されています。CI システムへの接続性、最先端の構成(レンダリング)ツールへのサポート、サードパーティとのインテグレーションを可能にする Pub/Sub 通知。
既存の CI ツールへの Google Cloud Deploy の接続は、簡単に行うことができます。コンテナを構築した後に、Google Cloud Deploy が、進行シーケンスの最初の環境で Kubernetes マニフェスト構成(レンダリング)とデプロイ プロセスを開始するデリバリー パイプラインのリリースを作成します。Jenkins や Cloud Build、またはその他の CI ツールを使用している場合、通常この手順は `gcloud beta deploy releases create` というシンプルなものです。
Kubernetes へのデリバリーは、時間の経過とともにたびたび変更されます。Google Cloud Deploy はお客様をサポートするために Skaffold を活用し、開発環境と本番環境の間の構成の標準化を可能にします。Kubernetes にまだ慣れていない組織では、だいたいの場合、マニフェストをそのまま使用してデプロイしますが、慣れてくるとより高度なツール(Helm、Kustomize、kpt)を使用する場合もあります。Google Cloud Deploy と Skaffold の組み合わせであれば、デリバリー パイプラインに影響を与えずにこうしたツールへの移行が可能です。
さらに、たとえばデプロイ後のテスト実行またはサードパーティ承認ワークフローといった、その他のインテグレーションを促進するために、Google Cloud Deploy ではリリースのライフサイクル全体を通して Pub/Sub メッセージを発行します。
今後の計画
包括的で使用が簡単、かつ優れた費用対効果の DevOps ツールは、効率的なソフトウェア開発チームを作るうえで重要な存在です。Google は、Google Cloud Deploy が CI / CD パイプラインの完成の助けになることを願っています。この取り組みはまだ始まったばかりです。今後、月単位や四半期単位で Google Cloud Deploy に魅力的な機能や特徴を導入してまいりますので、引き続きご注目ください。
それまでにプレビューの使用を開始するには、プロダクト ページ、ドキュメント、クイックスタート、チュートリアルをご覧ください。最後に、Google Cloud Deploy に関するご意見やご感想については、ぜひこちらから会話に参加してお知らせください。ご連絡をお待ちしております。
- プロダクト マネージャー Victor Szalvay
- プロダクト マネージャー S. Bogdan