🚀

Cloud RunにCloud Deployで自動デプロイする

2023/09/06に公開

https://zenn.dev/urakawa_jinsei/articles/26074f9e465f79
前回の記事では、Cloud Deployを使わずにCloud Runにデプロイしていましたが、今回はCloud Deployでデプロイする方法を紹介します。

https://cloud.google.com/deploy/docs/deploy-app-run?hl=ja

Skaffold 構成を準備する

skaffold.yaml
apiVersion: skaffold/v3alpha1
kind: Config
metadata:
  name: deploy-run-quickstart
profiles:
- name: dev
  manifests:
    rawYaml:
    - run-dev.yaml
deploy:
  cloudrun: {}

Cloud Run サービスを準備する

run-dev.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: deploy-qs-dev
spec:
  template:
    spec:
      containers:
      - image: my-app-image
 traffic:
  - percent: 100
    latestRevision: true

デリバリー パイプラインとターゲットを作成する

clouddeploy.yaml
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
  name: my-run-demo-app-1
description: main application pipeline
serialPipeline:
  stages:
  - targetId: run-qsdev
    profiles: [dev]
---

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: run-qsdev
description: Cloud Run development service
run:
  location: projects/my-project/locations/us-central1
executionConfigs:
- usages:
  - DEPLOY
  - RENDER
  serviceAccount: my-account

パイプラインとターゲットを Cloud Deploy サービスに登録する

gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=my-project

自動でデプロイする

cloudbuild.yaml
# Deploy container image to Cloud Run
 - name: gcr.io/google.com/cloudsdktool/cloud-sdk
   entrypoint: gcloud
   args:
    - 'deploy'
    - 'releases'
    - 'create'
    - 'rel-${SHORT_SHA}'
    - '--project'
    - '${_PROJECT}'
    - '--delivery-pipeline'
    - '${_PIPELINE_NAME}'
    - '--region'
    - '${_REGION}'
    - '--images'
    - 'my-app-image=${_IMAGE_NAME}:latest'

最後に

今回は自分でCloud Runの設定をyamlで書きましたが、動作がとても遅いです。
結局、フルマネージドの方が良いと思います。
私はCloud Buildをこれからも使っていきたいと思いました。

Discussion