GoogleはGoogle Cloud DeployのGAリリースを発表した。Google Kubernetes Engine向けのマネージド継続的デリバリーサービスだ。このサービスでは、特定のリリースで存続する宣言型ビルド、外部ワークフローの接続のサポート、および詳細なセキュリティと監査の制御が提供される。
Google Cloud Deploy内では、デリバリパイプラインとデリバリターゲットが宣言的に定義されている。デリバリパイプラインは、デプロイの進行中に各ターゲットにアプリケーションを配信するワークフローの定義である。ターゲットは、環境の構成と組み合わせてアプリケーションがデプロイされる特定のKubernetesクラスタである。Google Cloud Deployは、Skaffoldを使ってKubernetesマニフェストをレンダリングする。Skaffoldは、未加工のマニフェストと、Helm、Kustomize、kptなどのツールからのマニフェストのレンダリングをサポートする。
Google Cloud Deployの重要な機能の1つは、ビルドが宣言型であり、リリースごとに保存されることである。新しいリリースがプロモートされると、パイプラインとターゲットはそのリリースの現在の状態で保存される。デリバリパイプラインとターゲット定義ファイルを更新することができるが、将来のリリースにのみ反映される。Google Cloud Deployドキュメントに記載されているように「この保存により、デリバリパイプライン定義への最近の変更が、生成されたマニフェストに対応できない方法によりリリースに影響を与えてしまうことを防ぐ。」
デリバリパイプライン構成ファイルは、Google Cloud Deployのメインの構成ファイルである。慣例により、関連付けられたターゲットと組み合わせるとき、それはclouddeploy.yaml
というファイルに含まれる。独自のファイルでターゲット定義を定義できるが、ターゲット名はデリバリパイプライン内で一意でなければならないことに注意してください。
リリースの承認は、コンソールを介して行うか、Pub/SubとGoogle Cloud Deploy APIを使ってサードパーティのワークフロー管理システムを介して機能するように設定できる。ターゲットの承認を要求するには、ターゲット構成でrequireApproval
プロパティをtrueに設定する必要がある。
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name:
description:
requireApproval: true
ロールアウトの承認は、ロールroles/clouddeploy.approver
を持つユーザがgcloudを介して行うことができる。
gcloud deploy rollouts approve rollout-name --delivery-pipeline=pipeline-name
Pub/Subを使うと、トピックclouddeploy-operations
からのメッセージをリッスンすることで、リリースのプロモーション手順を自動化できる。成功メッセージを受信すると、必要に応じてテストなどの追加のワークフローステップを実行できる。これらの手順が完了したら、次のコマンドを呼び出して、リリースを次のステージに進めることができる。
gcloud deploy releases promote RELEASE_NAME \
--delivery-pipeline=PIPELINE_NAME \
--region=REGION \
--annotations=KEY=VALUE,...
監査の目的で、Cloud Audit Logsは、ユーザが呼び出したGoogle Cloud Deployアクティビティを一元的に追跡する。アクセスはIAMを介して制御でき、実行レベルの機能を持つロールを決めたりできる。
Google Cloud Deployによって自動的に追跡される多くのメトリックがある。これには、デプロイ履歴、デプロイの成功、およびデプロイ頻度などがある。メトリックはデリバリパイプラインによって測定され、本番ターゲット(進行中の最終ターゲット)へのデプロイに対して計測される。
リリースの詳細については、お知らせの投稿と製品ページをご覧ください。アカウントごとの最初のアクティブなデリバリパイプラインは無料だが、アカウント内の追加のデリバリパイプラインごとに月額$15.00の料金がかかる。