ホームページ  >  記事  >  バックエンド開発  >  Google Cloud Run へのサーバーレス アプリケーションのデプロイ

Google Cloud Run へのサーバーレス アプリケーションのデプロイ

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 18:23:02491ブラウズ

導入

このガイドでは、現在 AWS 上にある Twitch の TeoMeWhy システムからコンテナをデプロイし、GCP に配置します。

AWS の現在の構造
Implantando Aplicações Serverless no Google Cloud Run

GCP のアーキテクチャ

Implantando Aplicações Serverless no Google Cloud Run

複雑な自動化ツールは使用されず、すべてがコンソール経由で行われ、Github と統合され、メインへのコミットごとにイメージがデプロイされます。
以下を使用します:

  • Cloud Run - ウェブ アプリケーション用
  • Cloud SQL - MySQL データベース用
  • GCE - Teomebot を実行するには
  • クラウド ストレージ - オブジェクト ストレージ (S3)
  • Cloud Build - アプリケーションのデプロイメントを作成するには
  • Secret Manager - アプリケーションの資格情報を安全に保存します。

アプリケーションの入手

  1. TeoMeWhy の GitHub と、プロジェクトに関連するアプリケーションの フォーク にアクセスしてください。
  2. リポジトリ ページで、スター付き をクリックし、フォーク をクリックします。 Implantando Aplicações Serverless no Google Cloud Run
  3. フォーク ページで、フォーク に名前を付け、フォークの作成 をクリックします。 Implantando Aplicações Serverless no Google Cloud Run
  4. 環境全体を複製する場合は、プロジェクト内の他のリポジトリに対してこのプロセスを繰り返します。
  5. GCP に送信する前に、フォーククローン を作成して、必要に応じてアプリケーションを調整します。
git clone git@github.com:cslemes/points-to-go.git

コンテナイメージを作成するためのDockerfileの作成

複製されたリポジトリ フォルダーに移動します。リポジトリには、Docker 用に設計された Dockerfile がすでに含まれています。それを分析してみましょう:

```
FROM golang:latest
WORKDIR /app/
COPY . .
RUN go build main.go
CMD ["./main"]
```

この Dockerfile は機能しますが、マルチステージ ビルドを使用して最適化し、最終イメージのサイズを削減します。 Go は外部依存関係を必要としないため、scratch のような最小限のベース イメージを使用できます。

  1. ビルド イメージを軽量バージョンと交換し、他の段階で参照できるように名前を付けます。

    FROM golang:1.23.1-alpine3.20 AS build
    
  2. go mod download コマンドを追加して依存関係をキャッシュし、go mod verify が go.sum. ファイルの チェックサム
    と一致することを確認します。

    RUN go mod download && go mod verify
    
  3. 実稼働用にバイナリを最適化するには、以下のパラメータを追加します:

    • CGO_ENABLED=0: CGO サポートを無効にします。 CGO は C コードを呼び出すことを可能にする Go の機能ですが、これを無効にすると、外部ライブラリに依存しない完全に静的なバイナリが得られます。
    • GOARCH=amd64: コンパイルのターゲット アーキテクチャを設定します。 amd64 は、最新のサーバーやデスクトップなど、64 ビット プロセッサを搭載したマシンで使用されるアーキテクチャです。
    • GOOS=linux: コンパイルのターゲット オペレーティング システムを定義します。ここでは Linux 用に構成されています。つまり、生成されたバイナリは Linux システム上で実行可能になります。
    • go build -o /app/points: コードをコンパイルし、バイナリを指定されたパス (/app/points) に保存します。
    • -a: 変更されていない場合でも、依存関係を含むすべてのパッケージの再コンパイルを強制します。すべてが新しいフラグと設定で再コンパイルされていることを確認すると便利です。
    • -ldflags="-s -w": これらはサイズ最適化フラグです。
    • -s は、バイナリからデバッグ シンボル テーブルを削除します。
    • -w はスタック トレース情報を削除します。これらのオプションは、最終的なバイナリのサイズを削減します。
    • -installsuffix cgo: CGO が無効になっているバイナリを区別するために、インストール ディレクトリにサフィックスを追加します。これにより、CGO を使用するバイナリとの競合を回避できます。
    git clone git@github.com:cslemes/points-to-go.git
    
  4. (オプション) イメージをさらに小さくするには、upx を使用してバイナリを圧縮します。upx (Ultimate Packer for eXecutables) は、Go バイナリなどの実行可能バイナリを圧縮してファイルのサイズを削減するツールです。マイナス点は次のとおりです。ビルド時間が長くなり、コンテナーの起動に時間がかかるため、どちらが実装にとって最も有益かを評価する必要があります。既に Cold Start が備わっている Cloud Run で使用することが目的であるため、使用されていないときにコンテナを一時停止します。コンテナの初期化時間が増加するため、使用しません。

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
  • upx --ultra-brute -qq ポイント: 可能なすべての圧縮オプションを使用し、出力メッセージを表示せずにポイントを積極的にバイナリ圧縮します。
  • upx -t ポイント: 圧縮バイナリをテストして、正しく動作することを確認します。
  • バイナリの準備ができたので、バイナリをクリーンなイメージにコピーする第 2 段階を実行しましょう。

    FROM golang:1.23.1-alpine3.20 AS build
    
    • スクラッチは、オペレーティング システムや依存関係のない完全に空のイメージを表す Docker の特別な基本イメージです。 FROM スクラッチの使用は、Go アプリケーションのミニマリスト イメージで一般的であり、静的バイナリで十分です。
  • 完全なファイル

    git clone git@github.com:cslemes/points-to-go.git
    
  1. ビルドの比較
  2. Dockerfile の最適化と upx の使用により、イメージが最大 3 倍小さくなります。
  3. Trivy を使用した元のイメージの分析では 904 個の CVE が示されていますが、スクラッチ イメージには CVE はありません。
Imagem Tipo Tamanho
points-to-go Otimizado 14MB
points-to-go Com upx 5.77MB
points-to-go original 1.76GB

Implantando Aplicações Serverless no Google Cloud Run

  1. 他のリポジトリに対してこれらの設定を繰り返します。

データベースのデプロイ

  1. コンソールで、サイドメニューのSQLにアクセスします。 Implantando Aplicações Serverless no Google Cloud Run
  2. または、検索バーで「SQL」を検索し、リストから SQL を選択します。 Implantando Aplicações Serverless no Google Cloud Run
  3. Cloud SQL ページで、インスタンスの作成 をクリックし、MySQL を選択します。 Implantando Aplicações Serverless no Google Cloud Run
  4. 編集中の Enterprise を選択します。
  5. [プリセットの編集] で、サンドボックス を選択します。
  6. データベースのバージョンは MySQL 8.0 のままにします。 Implantando Aplicações Serverless no Google Cloud Run
  7. インスタンス ID でインスタンスに名前を付け、パスワードを設定します。
  8. パスワード ポリシーを展開することで、パスワード ポリシーを指定できます Implantando Aplicações Serverless no Google Cloud Run
  9. ゾーンとリージョンを定義し、単一のゾーンのままにします。 Implantando Aplicações Serverless no Google Cloud Run
  10. カスタマイズインスタンスでは、ニーズに応じてハードウェアを調整できます。オプションは選択したエディションによって異なります。
  11. 必要に応じて、CPU を 1 に、ディスクを 10GB に調整します。 Implantando Aplicações Serverless no Google Cloud Run
  12. 接続で、パブリック IP のチェックを外し、プライベート IP にチェックを入れます。
  13. プライベート アクセス接続で、接続の構成 をクリックします
  14. 自動的に割り当てられた範囲を使用するを選択します
  15. 続行 をクリックします
  16. 接続の作成をクリックします Implantando Aplicações Serverless no Google Cloud Run
  17. インスタンスの作成 をクリックし、作成されるまで待ちます。 Implantando Aplicações Serverless no Google Cloud Run
  18. インスタンスに接続するには、Cloud Shell をアクティブにして、次のコマンドを実行します。

    git clone git@github.com:cslemes/points-to-go.git
    

Implantando Aplicações Serverless no Google Cloud Run

  1. 前の手順で割り当てたパスワードを入力します。
  2. クラウド シェルはプライベート VPC にアクセスできないため、接続エラーが発生します。 Implantando Aplicações Serverless no Google Cloud Run
  3. Cloud Shell 経由の接続を簡素化するには、インスタンスを編集してパブリック IP をマークしましょう。付録では、VPC ピアリング を作成して クラウドシェル Implantando Aplicações Serverless no Google Cloud Run
  4. もう一度接続してみてください。
  5. Implantando Aplicações Serverless no Google Cloud Run
  6. アプリケーションデータベースを作成します:


    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
  7. Cloud Shell には、まだ VSCode に基づくテキスト エディターがあり、これを介していくつかのアクティビティを直接実行できます。 /home には 5 GB の永続ボリュームがあります。ハードウェアは、1vCPU と 1.7GB RAM を備えた e2-small VM です。
    Implantando Aplicações Serverless no Google Cloud Run

Cloud Run でのコンテナの作成

    Google Cloud コンソールで、サイド メニューまたは検索バーから
  1. Cloud Run にアクセスします。 Implantando Aplicações Serverless no Google Cloud Run
  2. Cloud Run ページで、
  3. コンテナのデプロイ をクリックし、サービス オプションを選択します。 Implantando Aplicações Serverless no Google Cloud Run
  4. 導入方法の選択
  5. サービスをデプロイするには 3 つのオプションがあります。
    • レジストリのコンテナ イメージを使用します。
    • リポジトリに直接接続します。
    • 関数を作成します (Run と統合された
    • Cloud Functions を使用)。
  6. このガイドでは、
  7. GitHub を使用した継続的デプロイ を選択すると、Google が CI/CD パイプラインを自動的に構成できるようになります。
  8. Cloud Build で構成をクリックします。
    Implantando Aplicações Serverless no Google Cloud Run

  9. GitHub への接続の構成

  10. 認証 をクリックして、GitHub と Google の統合を有効にします。

  11. すべてのリポジトリへのアクセスを許可するか、特定のリポジトリのみへのアクセスを許可するかを選択して、アクセスを承認します。

  12. ログインが完了したら、次へをクリックします。
    Implantando Aplicações Serverless no Google Cloud Run

  13. ビルド タイプの選択

  14. ビルドステップで、Dockerfile を使用するか、サポートされているアプリケーションと GCP の Buildpacks を使用するかを選択します。

  15. Dockerfile を選択し、必要に応じてパス/ファイル名を調整します
    Implantando Aplicações Serverless no Google Cloud Run

  16. サービス設定

  17. 次のパラメータを設定します:

    • 認証: 未認証の通話を許可するを選択します。
    • CPU 割り当て: CPU はリクエスト処理中にのみ割り当てられます
    • 入力制御: 内部を選択します。 Implantando Aplicações Serverless no Google Cloud Run
  18. アプリケーションの必要に応じてコンテナのポートを調整します。
    Implantando Aplicações Serverless no Google Cloud Run

  19. セキュリティ タブのサービス アカウントで、[作成] をクリックします新しいサービス アカウント
    Implantando Aplicações Serverless no Google Cloud Run

  20. 役割を追加

    • ストレージ オブジェクト管理者
    • Cloud Run 管理者
    • シークレットマネージャー シークレットアドバイザー
    • Cloud SQL クライアント
    • Cloud Build サービス アカウント
    • アーティファクト レジストリ レコーダー
    • サービスアカウントユーザー Implantando Aplicações Serverless no Google Cloud Run
  21. アプリケーション コードを分析するには、環境変数をデータベースに渡す必要があります。

    git clone git@github.com:cslemes/points-to-go.git
    
  22. アプリケーション コードを Unix ソケットを使用する Cloud SQL 標準に変更する必要があります。Cloud Run は DB に直接アクセスせず、Cloud SQL Auth Proxy を使用します。

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    
  23. コンテナで、[変数とシークレット] タブに移動し、[変数の追加] をクリックします。

  24. 必要な変数を追加します。

  25. 銀行アドレスは、PROJECT_ID:REGION:INSTANCE_NAME のパターンに従います。項目 16 で以下の名前を取得することもできます。
    Implantando Aplicações Serverless no Google Cloud Run

  26. REFERENCE A SECRET に入力する銀行パスワード

  27. 新しいシークレットの作成オプションが無効になっている場合は、API を有効にする必要があるためです。

  28. 「新しいシークレットを作成」をクリックします
    Implantando Aplicações Serverless no Google Cloud Run

  29. シークレット名を定義し、「シークレットの作成」をクリックします
    Implantando Aplicações Serverless no Google Cloud Run

  30. Cloud SQL Connections で、作成した銀行の URL を追加します
    Implantando Aplicações Serverless no Google Cloud Run

  31. アプリケーション スキーマを作成するには、コードで引数 migrations=true を渡す必要があります。

  32. 関数の引数に migrations=true を追加し、次のコンテナ リビジョンで削除します。
    Implantando Aplicações Serverless no Google Cloud Run

  33. 他のフィールドはデフォルトのままにして、「作成」をクリックします
    Implantando Aplicações Serverless no Google Cloud Run

  34. Thunder クライアントを使用してアプリケーションをテストしています。

  35. クライアントの作成
    Implantando Aplicações Serverless no Google Cloud Run

  36. 登録済み顧客の閲覧
    Implantando Aplicações Serverless no Google Cloud Run

Teomebot サービスの作成

チャットボットは Cloud Run にはデプロイされず、Google Compute Engine (GCE) にインストールされます。 Cloud Run とは異なり、チャットボットはチャットと対話するために継続的にアクティブである必要があるため、Compute Engine が理想的です。

さらに、コンテナの使用、シークレット管理、デプロイ自動化のための Cloud Build 構成についても説明します。

Google Compute Engine (GCE) での VM の作成

  1. GCP Console のサイド メニューで Compute Engine にアクセスします。
  2. インスタンスの作成をクリックします。 Implantando Aplicações Serverless no Google Cloud Run
  3. インスタンスの名前を入力します (例: teomebot-instance)。
  4. 必要に応じて リージョンゾーン を構成し、後で使用できるようにこの情報を書き留めます。 Implantando Aplicações Serverless no Google Cloud Run
  5. マシンセットアップで E2 タイプを選択し、プリセットで e2-micro を選択します。 Implantando Aplicações Serverless no Google Cloud Run
  6. コンテナ タブをクリックし、コンテナのデプロイ をクリックします。
  7. nginx:latest イメージを一時的に使用して、初期構成を完了します。
  8. 環境変数を追加します。
    • TWITCH_BOT: ボット名。
    • TWITCH_CHANNEL: Twitch チャンネル名。
    • HOST_DB: Cloud SQL データベースのプライベート IP。
    • USER_DB: 銀行ユーザー。
    • PORT_DB: 銀行ポート。
    • URL_POINTS: サービス エンドポイント Points-to-Go.
  9. 「選択」をクリックします Implantando Aplicações Serverless no Google Cloud Run
  10. ID と API アクセス で、このプロジェクトに構成されたサービス アカウントを選択します。 Implantando Aplicações Serverless no Google Cloud Run
  11. 残りの設定はデフォルトのままにし、作成 をクリックします。

Secret Manager を使用してシークレットを追加する

  1. シークレットを渡していないことに気づいたかもしれません。コンピューティング エンジンには、クラウド実行のようにシークレットを渡す簡単な方法はありません。私の解決策は、シークレット マネージャーから直接情報を読み取る関数をアプリケーション コードに追加することでした。
  2. GCP Console で Secret Manager にアクセスします。
  3. シークレットの作成 をクリックします
  4. わかりやすい名前 (例: twitch-token) を入力し、対応する値を追加します。
  5. 生成されたシークレットのパスをコピーします (例:projects/123456/secrets/twitch-token/versions/latest)。 Implantando Aplicações Serverless no Google Cloud Run
    1. 新しいutils/gcp.goファイルを作成する
  6. utils/db.go を変更して関数を呼び出し、シークレット マネージャーのパスをパラメータとして渡します。

    git clone git@github.com:cslemes/points-to-go.git
    
  7. main.go を変更して Twitch 認証情報を取得します

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    

migration := flag.Bool("migrations", false, "データベース移行の実行")

flag.Parse()

godotenv.Load()
    ユーザー:= os.Getenv("TWITCH_BOT")
    // 変更
    oauth := utils.AccessSecretVersion("projects/551619572964/secrets/twitch-token/versions/latest")

チャンネル := os.Getenv("TWITCH_CHANNEL")
``

クラウドビルド

クラウドビルドの構成

Cloud Build は、コンテナ イメージの作成と Compute Engine へのデプロイを自動化するために使用されます。

  1. 以下の内容を含む Cloudbuild.yaml ファイルをリポジトリのルートに作成します。
  2. 代替品

    FROM golang:1.23.1-alpine3.20 AS build
    

_VERSION 変数は、v1.0 と一致する値に設定されています。現在のコミットのハッシュ (${COMMIT_SHA}) を使用します。これにより、ビルドごとに一意のバージョンが作成され、各イメージがバージョンとコミットによって確実に識別可能になります。

  • ステップ
    ステップ セクションでは、Cloud Build が実行する必要があるステップを定義します。ここでは、ビルド、プッシュ (2 回)、更新の 4 つのステップがあります。

  • ステップ 1: Docker イメージを構築する

    RUN go mod download && go mod verify
    

このステップでは、Docker イメージのビルドを実行します。

  • "--no-cache": キャッシュを使用せずにビルドを強制します。
  • "-t": 作成されたイメージのタグを定義します。
    • gcr.io/$PROJECT_ID/teomebot:$_VERSION: コミット ハッシュを使用するタグを含むイメージ。
    • gcr.io/$PROJECT_ID/teomebot:latest:latest タグが付いたイメージ
  • ".": 現在のディレクトリをビルド コンテキストとして定義します。

id: Build タグはステップのオプションの識別子であり、参照とデバッグに役立ちます。

  • ステップ 2: バージョンタグを使用したイメージのプッシュ
RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o /app/points -a -ldflags="-s -w" -installsuffix cgo

このステップでは、特定のタグ ($_VERSION) を持つイメージを Google Container Registry にプッシュし、ビルドで生成されたバージョンをリポジトリに保存できるようにします。

  • ステップ 3: 最新のタグを使用したイメージのプッシュ

    RUN apk add --no-cache curl upx
    RUN upx --ultra-brute -qq points && upx -t points
    

このステップでは、最新のタグを持つイメージを Google Container Registry にプッシュし、最新のイメージを最新バージョンで更新します。

  • ステップ 4: GCE インスタンスでのコンテナの更新

     FROM scratch AS prod
     WORKDIR /app
     COPY --from=build /app/points /
     CMD ["./points"]
    

このステップでは、gcloud コマンドを使用して Google Compute Engine インスタンス上のコンテナを更新します。

  • "teomebot-instance": コンテナーを実行するインスタンスの名前を指定します。
  • --container-image: インスタンスが使用するコンテナ イメージを定義します。ここでは、最新バージョンのイメージを使用してください。
  • --zone=$_DEPLOY_ZONE: 変数を使用してデプロイメント ゾーンを指定します。
  • --container-restart-policy=always: 失敗した場合に常に再起動するようにコンテナーの再起動ポリシーを設定します。
  • オプション

    git clone git@github.com:cslemes/points-to-go.git
    

logging: CLOUD_LOGGING_ONLY オプションは、Cloud Build が Cloud Logging にのみログを記録し、データを保存し、GCP ログに重点を置くことを指定します。

  • 最終ファイル

    ```
    FROM golang:latest
    WORKDIR /app/
    COPY . .
    RUN go build main.go
    CMD ["./main"]
    ```
    

コンテナイメージ作成トリガーの作成

サービスアカウントの設定

  1. Google Cloud コンソールで Cloud Build に移動します。
  2. 設定に移動します。
  3. サービス アカウントのアクセス許可をクリックします。
  4. Cloud Run 用に作成されたサービス アカウントを見つけます。
  5. オプション 優先サービス アカウントとして設定 を有効にします
  6. サービス アカウントの コンピューティング インスタンス管理者 ロールを有効にします。 Implantando Aplicações Serverless no Google Cloud Run トリガーの作成
  7. サイド メニューで、トリガー をクリックし、次に トリガーの作成 をクリックします。 Implantando Aplicações Serverless no Google Cloud Run
  8. トリガーのわかりやすい名前を入力します。
  9. リポジトリで、リポジトリの接続をクリックし、Teomebot リポジトリを選択します。 Implantando Aplicações Serverless no Google Cloud Run
  10. 構成で、オプションCloud Build 構成ファイルを選択します。
  11. インスタンスが作成されたゾーンに対応する値を持つ _DEPLOY_ZONE 置換変数を追加します。
  12. サービス アカウントで、選択したアカウントが手順 6 で構成されているかどうかを確認します。 Implantando Aplicações Serverless no Google Cloud Run
  13. 保存をクリックします。 トリガーの実行
  14. 概要画面の新しく作成したトリガー行で、「実行」をクリックしてプロセスを手動で実行します。 Implantando Aplicações Serverless no Google Cloud Run
  15. プロセスの詳細で、イメージのビルド手順に従って、エラーの可能性がないか確認します。 Implantando Aplicações Serverless no Google Cloud Run

アプリケーションのテスト

  1. Compute Engine パネルで、ssh コマンドをコピーしてインスタンスにアクセスするか、ssh ウェブ クライアントを使用してインスタンスに接続します。
  2. インスタンスに接続し、以下のコマンドを実行してコンテナの状態を確認します。

    git clone git@github.com:cslemes/points-to-go.git
    

Implantando Aplicações Serverless no Google Cloud Run

証明書の問題の解決

  1. 証明書関連のエラーが発生した場合 (スクラッチ ベース イメージが原因)、ディストロレス イメージに置き換えます。 Dockerfile で、ベースイメージを定義する行を
    から変更します。

    git clone git@github.com:cslemes/points-to-go.git
    

宛先:

```
FROM golang:latest
WORKDIR /app/
COPY . .
RUN go build main.go
CMD ["./main"]
```

Dockerfile が更新されました:

FROM golang:1.23.1-alpine3.20 AS build

Secret Manager の権限の調整

  1. Secret Manager にアクセスするようにサービス アカウントのスコープを変更します。
  2. Google Cloud コンソールに移動します。
  3. サイド メニューで、Compute Engine > に移動します。 VM インスタンス.
  4. VM インスタンスの名前を見つけてクリックします。
  5. VM の詳細ページで、停止 をクリックしてインスタンスをシャットダウンします (サービス アカウントのスコープはインスタンスが停止している場合にのみ変更できるため、この手順は必要です)。
  6. インスタンスが停止したら、ページの上部にある 編集 をクリックします。
  7. Identity and Access API セクションまで下にスクロールします。
  8. サービス アカウント で、アプリケーションが使用するサービス アカウントを選択します。
  9. API アクセス スコープ で、すべてのクラウド API へのフル アクセスを許可 を選択するか、特定の API アクセス スコープを設定 をクリックしてスコープ https://www を追加します.googleapis.com/auth/cloud-platform.
  10. スコープを調整した後、保存 をクリックして変更を適用します。
  11. 開始をクリックしてインスタンスを再起動します。
  12. または、コマンドライン経由で、インスタンスを停止し、コマンドを実行して、その後起動します。

    RUN go mod download && go mod verify
    

さらにコンテナを追加する

他のサービスも同じ point-to-go プロセスに従い、相互に通信するサービスの場合、環境変数を作成してエンドポイント アドレスを構成します。エンドポイント アドレスは常に https ポート 443 になります。

他のサービスと通信するために、サービスの URL を含む別の環境変数を受け取るようにコードを調整しました。ポイント単位では、たとえば次のようになります。

RUN CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -o /app/points -a -ldflags="-s -w" -installsuffix cgo

ボットのテスト

ボットと Twitch の通信をテストしています。

Implantando Aplicações Serverless no Google Cloud Run

ネットワークセキュリティ調整
テストが完了したら、VPC 内の内部でのみアクセスされるコンテナを配置します。

Implantando Aplicações Serverless no Google Cloud Run

結論

これで TeoMeWhy システムの移行が完了しました。このガイドは、他の TeoMeWhy サービスを移行するための基礎として機能します。

達成された主な目標は次のとおりです:

技術的成果

  • コンテナ化されたアプリケーションの Cloud Run への移行により、自動スケーラビリティとコスト削減が可能になります
  • 多段階ビルドによる Docker イメージの最適化により、イメージ サイズと脆弱性を大幅に削減します
  • Cloud SQL を使用したマネージド データベースの実装、高可用性とセキュリティの確保
  • Cloud Build を使用した自動 CI/CD 構成により、GitHub からの自動デプロイが可能
  • Secret Manager を使用した安全な資格情報管理

アーキテクチャの改善

  • サービス間の責任の明確な分離
  • セキュリティを強化するためのプライベート接続の使用
  • コスト最適化のためのサーバーレス標準の実装
  • ビルドおよびデプロイプロセスの自動化
  • GitHub リポジトリとのシームレスな統合

得られるメリット

  1. コスト: サーバーレス モデルとリソースの最適化によるコスト削減
  2. 保守性: 自動展開による保守の容易さ
  3. セキュリティ: シークレットとプライベート接続の適切な管理
  4. スケーラビリティ: 需要に応じて自動的にスケーリングする機能
  5. モニタリング: ネイティブ GCP ツールによるインフラストラクチャの可視性の向上

付録

Secret Manager API を有効にする

  1. Google Cloud コンソールで、Secret Manager API を検索します。
  2. 検索結果で「API」をクリックします。 Implantando Aplicações Serverless no Google Cloud Run
  3. 詳細画面で、アクティブ化 をクリックします。 Implantando Aplicações Serverless no Google Cloud Run

参考文献

  • Github TeoMeWhy
  • Twitch Teo Me Why
  • Cloud Run ドキュメント
  • Compute Engine のドキュメント
  • Cloud Build ドキュメント
  • シークレットマネージャーのドキュメント

以上がGoogle Cloud Run へのサーバーレス アプリケーションのデプロイの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。