クイックスタート: Cloud Run に C++ サービスをデプロイする
シンプルな Hello World アプリケーションを作成してコンテナ イメージにパッケージ化し、Artifact Registry にアップロードして Cloud Run にデプロイする方法を学習します。
始める前に
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Cloud Run サービスのデフォルト プロジェクトを設定するには:
PROJECT_ID は、実際の Google Cloud プロジェクト ID に置き換えます。gcloud config set project PROJECT_ID
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
Cloud Run Admin API と Cloud Build API を有効にします。
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが自動的に作成されます。
- Cloud Build がソースを構築できるようにするには、次のコマンドを実行して、Compute Engine のデフォルト サービス アカウントに Cloud Build サービス アカウントのロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
PROJECT_NUMBER
は Google Cloud プロジェクト番号に、PROJECT_ID
は Google Cloud プロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。Compute Engine のデフォルト サービス アカウントへの Cloud Build サービス アカウントのロールの付与は、反映されるまでに数分かかることがあります。
サンプル アプリケーションを作成する
C++ でアプリケーションを作成するには:
helloworld-cpp
という名前の新しいディレクトリを作成し、そのディレクトリに移動します。mkdir helloworld-cpp cd helloworld-cpp
CMakeLists.txt
という名前で新しいファイルを作成し、次のコードを貼り付けます。vcpkg.json
という名前で新しいファイルを作成し、次のコードを貼り付けます。cloud_run_hello.cc
という名前で新しいファイルを作成し、次のコードを貼り付けます。このコードは、
PORT
環境変数で定義されたポートをリッスンする基本的なウェブサーバーを作成します。ソースファイルと同じディレクトリに
Dockerfile
という名前の新しいファイルを作成します。C++ Dockerfile は、PORT
環境変数で定義されたポートをリッスンするアプリケーションを起動します。
これでアプリが完成し、デプロイできるようになりました。
ソースから Cloud Run にデプロイする
重要: 以下の説明では、このクイックスタートで使用するプロジェクトのオーナーロールまたは編集者ロールが付与されていることを前提としています。ロールが付与されていない場合は、Cloud Run ソース デベロッパー ロールで、ソースから Cloud Run リソースをデプロイするために必要な権限を確認してください。
Cloud Build を使用してソースコードからイメージを作成し、デプロイします。
ソース ディレクトリで、Cloud Build を使用してサービスの Docker イメージを作成します。
gcloud builds submit --machine-type=e2_highcpu_32 --tag gcr.io/PROJECT_ID/cloud-run-hello-world
次のコマンドを使用してイメージをデプロイします。
gcloud run deploy --image=gcr.io/PROJECT_ID/cloud-run-hello-world
API を有効にするように求められたら、「y」と入力して有効にします。
サービス名の入力を求められたら、Enter キーを押して、デフォルトの名前(
helloworld
など)を受け入れます。プロジェクトで追加の API(Artifact Registry API など)を有効にするよう求められたら、
y
を押して応答します。リージョンの入力を求められたら、任意のリージョン(
us-central1
など)を選択します。指定したリージョンにリポジトリを作成するように求められたら、
y
を押して応答します。未認証の呼び出しを許可するように求められた場合は、「
y
」と入力します。ドメイン制限の組織のポリシーが原因でこのメッセージが表示されない場合があります。詳細については、始める前にのセクションをご覧ください。
デプロイが完了するまで少しお待ちください。正常に完了すると、コマンドラインにサービス URL が表示されます。
このサービス URL をウェブブラウザで開き、デプロイしたコンテナにアクセスします。
Cloud Run のロケーション
Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。
レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloud サービスのロケーションも考慮する必要があります。使用する Google Cloud サービスが複数のロケーションにまたがっていると、サービスの料金だけでなくレイテンシにも影響することがあります。
Cloud Run は、次のリージョンで利用できます。
ティア 1 料金を適用
asia-east1
(台湾)asia-northeast1
(東京)asia-northeast2
(大阪)europe-north1
(フィンランド) 低 CO2europe-southwest1
(マドリッド) 低 CO2europe-west1
(ベルギー) 低 CO2europe-west4
(オランダ) 低 CO2europe-west8
(ミラノ)europe-west9
(パリ) 低 CO2me-west1
(テルアビブ)us-central1
(アイオワ) 低 CO2us-east1
(サウスカロライナ)us-east4
(北バージニア)us-east5
(コロンバス)us-south1
(ダラス) 低 CO2us-west1
(オレゴン) 低 CO2
ティア 2 料金を適用
africa-south1
(ヨハネスブルグ)asia-east2
(香港)asia-northeast3
(ソウル、韓国)asia-southeast1
(シンガポール)asia-southeast2
(ジャカルタ)asia-south1
(ムンバイ、インド)asia-south2
(デリー、インド)australia-southeast1
(シドニー)australia-southeast2
(メルボルン)europe-central2
(ワルシャワ、ポーランド)europe-west10
(ベルリン) 低 CO2europe-west12
(トリノ)europe-west2
(ロンドン、イギリス) 低 CO2europe-west3
(フランクフルト、ドイツ) 低 CO2europe-west6
(チューリッヒ、スイス) 低 CO2me-central1
(ドーハ)me-central2
(ダンマーム)northamerica-northeast1
(モントリオール) 低 CO2northamerica-northeast2
(トロント) 低 CO2southamerica-east1
(サンパウロ、ブラジル) 低 CO2southamerica-west1
(サンティアゴ、チリ) 低 CO2us-west2
(ロサンゼルス)us-west3
(ソルトレイクシティ)us-west4
(ラスベガス)
Cloud Run サービスをすでに作成している場合は、Google Cloud コンソールの Cloud Run ダッシュボードにリージョンが表示されます。
これで完了です。ソースコードから Cloud Run にコンテナ イメージをデプロイしました。Cloud Run は、受信したリクエストを処理するためにコンテナ イメージを自動的に水平方向にスケールアウトし、リクエスト数が減少するとスケールインします。料金は、リクエストの処理中に使用した CPU、メモリ、ネットワークに対してのみ発生します。
クリーンアップ
テスト プロジェクトを削除する
サービスが使用されていない場合、Cloud Run の料金は発生しませんが、コンテナ イメージを Artifact Registry に保存すると課金される場合があります。コンテナ イメージを削除するか、Google Cloud プロジェクトを削除してこのような料金が発生しないようにできます。Google Cloud プロジェクトを削除すると、そのプロジェクト内で使用されているすべてのリソースに対する課金が停止します。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。