はじめに

Google CloudNext ’22 で発表された内容の新サービスや、新たな機能について、できるものを実際に動かしてみたいと思います。
ちなみに新たに公開されたものとしては以下のように纏められているブログがありますので、こちらベースでみていきます。

今回はGAされた Cloud Deploy での Cloud Run へのデプロイについて動かしてみます。

Google Cloud Deploy について

もともとはGKEやAnthosへのDeployに対応していたもののようで今回 Cloud Run へ対応しました。

Cloud Deploy 自体は Kubernetes のデプロイに利用される、Skaffoldを利用したデプロイになります。
私はKubernetesに対して有識者ではないのですが、このSkaffold自体はGoogleによるOSSみたいです。
またSkaffold側のドキュメントをみてみると Cloud Run [NEW] と記載されていたり、Verify [NEW] と記載されていたり、Cloud Deploy のアップデートがSkaffoldにも反映されていました。

Easy and Repeatable Container & Kubernetes Development

では実際にやっていきます。

手順

実施の流れは大きく以下となります。

  • ターゲット、デリバリーパイプラインを登録するための定義ファイル作成
  • ターゲット、デリバリーパイプラインを登録
  • Cloud Run のサービス定義ファイルを作成、Skaffold 構成ファイル作成
  • 登録したパイプラインに Cloud Run のサービス定義を渡してデプロイ

ターゲット、デリバリーパイプラインを登録するための定義ファイル作成

以下の記事を参照し作成しました。

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: デリバリー名
 annotations: 
  key: test
 labels:
  key: test
description: 説明
serialPipeline:
 stages:
 - targetId: dev
   profiles: []
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name: dev
description: development service
run:
 location: projects/プロジェクト名/locations/リージョン

コードブロック内の上の方がdeliveryのパイプラインとなるもので、下のほうがCloud Runをターゲットとして定義する記載になります。

ターゲット、デリバリーパイプラインを登録

以下のコマンドを実行し Cloud Deployにデリバリープラン、ターゲットを登録します。

gcloud deploy apply --file 前の手順で作成したデリバリプランファイル --region=デプロイするリージョン --project 対象プロジェクト

登録すると以下のように作成したファイルに基づき、Cloud Deploy のデリバリプランが登録されます。

Cloud Run のサービス定義ファイルを作成、Skaffold 構成ファイル作成

今回はCloud Run を対象にデプロイするためdeploy箇所はCloud Runとし、参照する、Cloud Run のサービス定義ファイルを参照しています。

apiVersion: skaffold/v3alpha1
kind: Config
metadata: 
  name: cloud-run-application
manifests:
  rawYaml:
  - service.yaml
deploy:
  cloudrun: {}

Skaffoldの内容は冒頭の方に記載したドキュメントをみていただくのがいいですが、テンプレとしての参照は以下となります。

次に上記ファイルで参照しているservice.yamlを作成します。
こちらも上記のリンク内に記載がございますが、参照した該当箇所は以下となります。

なお今回は既に作成しているCloud Run のサービスがあったので、それをベースに改変しています。
※Cloud Runの対象サービスを開きタブの一番右のyaml箇所にて既存のサービスのyamlを参照できます。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: Cloud Run サービス名
spec:
  template:
    metadata:
      name: 
    spec:
      containers:
      - image: Artifact Registry or Container Registry の対象イメージの保存先
        ports:
        - name: http1
          containerPort: 8000
        env:
        - name: 何か必要があれば環境変数値の入力
          value: 環境変数へ入れる値の入力
        resources:
          limits:
            cpu: 1000m
            memory: 128Mi
  traffic:
  - percent: 100
    latestRevision: true

登録したパイプラインに Cloud Run のサービス定義を渡してデプロイ

以下を参照

今回は以下のコマンドを実行する。

gcloud deploy releases create リリース名 --project=プロジェクト名 --region=リージョン --delivery-pipeline=デリバリ名

デプロイ結果の確認

デプロイすると画面上以下のような表示になり、まずキューに格納されます。

次に進行中となります。

その後、デプロイが始まり成功しています。何回か失敗してしまいましたが、、、

コンテナの内容次第ですが、今回の環境はLaravelを作成していて、実際にCloud Run側のログにも改めてスタートしたことが出てきており、Cloud Runのログでも成功したことがわかります。

所感

今回はただデプロイするだけでしたので、通常何も特別なことを考えない場合のCloud Buildとそこまで大差無い状況でした。
ただ、デプロイのトラフィック制御だったりはCloud Buildよりサービスを定義できるので、やりやすい部分は出てくるかなとは思いました。
個人的に大きいと考える部分としては、同時に機能としてアップデートされた、以下のGoogleのブログにもある通り、デプロイ後の検証や、デプロイの承認フェーズを挟んだりと、可能なことが増えております。

In this latest release, Google Cloud Deploy add supports for Cloud Run deployment and deployment verification in Preview.

実は今回の記載内の記載としては無いですが、そこまで確認したので、それを次回記載します。
ただ、Cloud Deployというものに対して、この時点でドキュメントのみでイメージがわきづらかった部分が明らかになり、今回のNext記事群の中で、実施していて一番すっきりできて、楽しかったです。

現在進行中の案件だったりで、Cloud Deployを使えないか、検討してみたいと思います。
また、これから始まるものについては、これを使っていければいいなと思います。

元記事はこちら

Google Cloud Next ’22 で GAが発表されたCloud DeployによるCloud Run へのデプロイ(その1)
著者:@hirosait


アイレットなら、Google Cloud で稼働するサーバーを対象とした監視・運用・保守における煩わしい作業すべてを一括して対応し、経験豊富なプロフェッショナルが最適なシステム環境を実現いたします。Google Cloud プレミアサービスパートナーであるアイレットに、ぜひお任せください。

Google Cloud サーバー監視・運用サービスページ:
https://cloudpack.jp/service/gcp/maintenance.html

その他のサービスについてのお問合せ、お見積り依頼は下記フォームよりお気軽にご相談ください。
https://www.iret.co.jp/contact/service/form/