Google Cloud Deploy にデプロイ後に検証を行う機能を導入
Google Cloud Japan Team
※この投稿は米国時間 2022 年 9 月 29 日に、Google Cloud blog に投稿されたものの抄訳です。
Google Cloud Deploy に、デプロイ検証と呼ばれる新機能が導入されます。この機能により、開発者やオペレーターは、Cloud Deploy 通知や手動テストの使用などの大規模な統合テストを実施することなく、デプロイ後のテストをオーケストレーションして実行できるようになります。
2021 年に発表された State of DevOps レポートによると、継続的なテストの有無から、継続的デリバリーの成否を高い精度で予測できることが明らかになっています。デリバリー プロセス全体を通してテスト担当者と開発者が密接に連携を取り、早い段階から頻繁にテストを行うようにすることで、チームはプロダクト、サービス、アプリケーションに対してイテレーションや変更を迅速に行えるようになります。
特定の条件が満たされているかどうかを判断することでデプロイをさらに深く検証する、デリバリー後のテストに関してはどうでしょうか。ほとんどの場合、これらのテストを実行する機能は今後も企業にとって不可欠であり、継続的デリバリー ツールの鍵となります。
8 月の投稿でご説明したように、Cloud Deploy ではレンダリングとデプロイの操作に Skaffold を使用しています。この新機能は、「verify」と呼ばれる新しい Skaffold フェーズを活用したものです。開発者とオペレーターは、このフェーズでテスト コンテナのリストを追加し、追加したコンテナをデプロイ後に実行することで、デプロイの成否を監視することができます。
使い方
Cloud Code サンプルのpython-hello-world を使用して、デプロイ検証の仕組みを説明しましょう。Cloud Build トリガーとファイルを設定し、Cloud Deploy パイプラインを作成したら、デプロイ後の検証機能を試行できるようになります。
まず、新しい検証フェーズを挿入するために、skaffold.yaml を修正する必要があります。
任意のコンテナ イメージ(スタンドアロンのコンテナと Skaffold によってビルドされたコンテナのいずれも可)を使用できるため、開発者は簡単なテストから複雑なシナリオまで柔軟に実行することができます。今回のケースでは「wget」を使い、「/hello」ページが存在するかどうか、動作しているかどうか(HTTP 200 レスポンス)を確認します。
Kubernetes の readiness プローブを使えば、アプリケーションや Pod がリクエストを受け取る準備ができているかどうかを確認できますが、この新しい Cloud Deploy 機能を使えば、制御された事前定義済みテストを実行できます。たとえば、アプリケーション指標の確認や統合テストの実施などを行えます。
次に、clouddeploy.yaml を見てみましょう。デプロイ後の検証は、Skaffold プロファイルに対応したさまざまなターゲットに対して使用できます(ここでは「dev」ターゲットを指定しています)。また、デプロイ検証を行うターゲットを以下のように設定する必要があります。
この新しい戦略構成では、将来的に Cloud Deploy のデプロイ戦略を追加できる可能性がありますが、現時点では標準のものを使用します。
これらの変更後、「gcloud builds submit」を使用して CI / CD プロセスをトリガーするか、ソース リポジトリにコードをプッシュして Cloud Build をトリガーできます。ビルドフェーズ(継続的インテグレーション)の後、Cloud Build は Google Cloud Deploy リリースを作成し、指定されたデリバリー パイプラインを介して「dev」ターゲットにデプロイします。
重要: Cloud Deploy のレンダリングやデプロイと同様、検証コンテナはお使いのアプリケーションの環境とは異なる Cloud Build の安全なホスト環境で動作します。そのため、デプロイ後の検証を行うには、アプリケーションを公開するか、Cloud Build プライベート プールを使用する必要があります。
デプロイのステータスを確認するには、Cloud Deploy を開き、デリバリー パイプラインに移動して、リリースリストの最後のリリースをクリックします。リリースの詳細ページで、ロールアウトのリストから最後のロールアウトを選択します。
上のスクリーンショットは、デプロイ後の検証が成功したことを示しています。検証ログをクリックすると詳細を確認できます。skaffold.yaml の「wget」検証のアドレスを変更して処理を再実行すると、検証に失敗したときの様子を確認できます。
デプロイ検証に失敗すると、ロールアウトも失敗する
すべてのデプロイ検証テストに合格する必要があります。デプロイ検証テストが失敗すると、ロールアウトも失敗します。ただし、ロールアウトに失敗した場合、デプロイ後の検証を再実行できます。また、検証の開始時や完了時に Pub/Sub 通知を受信することができます。
試してみましょう
Google Cloud Deploy のチュートリアル ページが更新され、デプロイ検証のチュートリアルが追加されました。このインタラクティブなチュートリアルでは、Google Cloud Deploy サービスの設定と使用の手順を確認できます。このパイプラインには、自動デプロイ検証が含まれています。これは、各ステージでチェックを実行し、アプリケーションが正常にデプロイされたかどうかを確認する機能です。
今後の計画
包括的で使用が簡単、かつ優れた費用対効果の DevOps ツールは、効率的なソフトウェア開発チームを作るうえで重要な存在です。Google は、Google Cloud Deploy が完全な CI / CD パイプラインの実装を実現するうえで皆様に役立つことを願っています。この取り組みはまだ始まったばかりです。今後数か月にわたって Google Cloud Deploy に魅力的な機能や特徴を導入してまいりますので、引き続きご注目ください。
また、プロダクト ページ、ドキュメント、クイックスタート、チュートリアルもご参照いただけます。最後に、Google Cloud Deploy に関するご意見やご感想については、ぜひこちらから会話に参加してお知らせください。ご連絡をお待ちしております。- デベロッパー リレーションズ エンジニア Alvaro Huanca
- Cloud カスタマー エンジニア Wilgner Garcia