2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GCPのサービス「Cloud Code」のチュートリアルを Cloud Shell からやってみた

Posted at

GCPの個人的に気になるサービス、Cloud Codeの「Cloud Code for Cloud Shell Editor」のチュートリアルをやってみて、どんなサービスなのか体験してみました。

環境

  • Cloud Code for Cloud Shell Editor

ドキュメントによると、VS Codeや IntelliJ などの統合開発環境などと組み合わせても使えるようですが、今回はブラウザから利用する Cloud Code for Cloud Shell Editor を使ってみます。

対象

  • GCPのサービスをさらっと確認したい方
  • Cloud Code, Cloud Run などを試してみたい方

チュートリアルの所要時間

※GCPの利用登録などが終わっている前提です。

  • 10分〜15分

やってみたこと

  • Cloud Code for Cloud Shell のチュートリアルを一通り実施

チュートリアルを通して体験できたこと

  • Cloud Code for Cloud Shell の開発画面の使い方
  • オンライン エディタ画面の操作
  • Cloud Run へのデプロイ方法

Cloud Code について

この辺りに説明がありますが、使ってみないとよく分からない感じ。

おそらく、VS Code や IntelliJ を利用する場合は、機能拡張として組み込まれるイメージでしょうか?

Cloud Code for Cloud Shell Editor

おそらく、AWSの Cloud9 的なものかと。

チュートリアルをさらっと使ったイメージでは、オンラインの開発環境がDockerで用意されて、その上で開発して、DockerファイルをCloud Runにデプロイして、ビルド・実行のような感じでしょうか。。。

Cloud Shell Editorの料金

Cloud Shell Editorの利用には料金はかからないようです。

ただし、開発したプログラムを例えばCloud Runにデプロイして、さらに実行環境にデプロイするなどになるので、その際に利用するGCPのサービスの利用には別途利用料金が発生する、ということのようです。
この辺りはAWSのCloud9と同じ課金の仕組みのようです。

クイックスタート

クイックスタートページのチュートリアル、「Cloud Code を使用した Cloud Run サービスのデプロイ」を実行してみます。

Cloud Shell Editor

Cloud Shell Editorが実行されます。

コンテナサービスが実行されるので少し待ちます。

スクリーンショット 2021-06-23 19.28.02.png

チュートリアル実施手順

エディタの右側にチュートリアルの手順が表示されます。
スクリーンショット 2021-06-23 21.07.24.png
手順に沿って進めます。

Cloud Shellにチュートリアルのテンプレートを展開する

この手順で、Cloud Shellの自分のクラウドのローカル環境に、チュートリアルで使うファイル一式を展開します。

ステータスバーの "Cloud Code" をクリック

チュートリアルのリンクをクリックすると、選択するメニューの場所がハイライトされるので、その通りに進めます。
スクリーンショット 2021-06-24 7.45.53.png
スクリーンショット 2021-06-24 7.46.07.png

New Application 選択

New Application を選択して、メニューから Cloud Run application を選択します。
スクリーンショット 2021-06-24 7.48.27.png

テンプレート選択

テンプレートとして、Python (Flask): Cloud Run を選択します。
スクリーンショット 2021-06-24 7.50.48.png

Create New Application 選択

Create New Application ボタンを押下します。
スクリーンショット 2021-06-24 7.53.29.png

テンプレートの展開

Cloud Shellの自分のホームディレクトリに選択した"Python (Flask): Cloud Run"テンプレートが展開されます。
スクリーンショット 2021-06-24 7.56.43.png
メニュー→File→Open Workspace...を選択して確認してみます。
スクリーンショット 2021-06-24 8.00.14.png
スクリーンショット 2021-06-24 8.00.27.png

ここまでで、Cloud Shellの準備はOKです。

Cloud Run にデプロイする

次に、Cloud Shell のテンプレートをビルドして Cloud Run にデプロイしていきます。

Cloud Run は GCPのコンテナサービスですね。AWSの Fargate? すみません、Fargateを使ったことないのでよく分かりませんが。

イメージは、ローカルで作成した Dockerファイルをアップロードして、Cloud RunのDocker環境で実行するような感じかな。。。

GCPプロジェクトの作成

Cloud Run を実行するには GCPプロジェクトが1つ必要なので、ない場合は作成しておきます。
下記のリンクからプロジェクトを作成します。
create a new one and enable billing

作成ボタン押下でGCPのプロジェクトが作成されます。
プロジェクト名は今回デフォルトでセットされた名前をそのまま使います。
スクリーンショット 2021-06-24 8.23.01.png

Cloud Run にデプロイ

ステータスバーの Cloud Code メニューを押下して、Deploy to Cloud Run.を選択します。
スクリーンショット 2021-06-24 8.12.33.png
スクリーンショット 2021-06-24 8.12.46.png

GCPの認証

Cloud Codeから GCPへの呼び出しのために認証のダイアログが表示されるので、承認ボタンを押下します。
スクリーンショット 2021-06-24 8.18.33.png

GCPプロジェクトの選択

Cloud Runで利用するGCPプロジェクトを選択します。
Select GCP Projectボタンを押下
スクリーンショット 2021-06-24 8.19.22.png

プロジェクトを選択
スクリーンショット 2021-06-24 8.26.16.png

APIの有効化

Enable API ボタンを押下
スクリーンショット 2021-06-24 8.26.45.png

Checking Docker Dependency Status.
Checking Skaffold Dependency Status.
Checking Cloud SDK Dependency Status.
Retrieving builders.
Getting Gcloud Login State.
Getting Gcloud Login State.
Using picked GCP Project "flawless-star-317823"
Checking Cloud Run API status.
Enabling Cloud Run API (run.googleapis.com).
Getting Cloud Run Services for project "flawless-star-317823".

GCP プロジェクト設定

GCPプロジェクトの設定画面が表示されます。
そのままでもOKですが、リージョンだけ東京リージョン を選択してみました。
スクリーンショット 2021-06-24 8.34.56.png

デプロイ

デプロイボタンを押下します。
スクリーンショット 2021-06-24 8.35.25.png

しばらく時間がかかりますので、Show Detailed Logsボタンを押下して、ログでも眺めながら待ちます。

Executing Skaffold build.
Running skaffold command: /usr/bin/skaffold init --artifact {"image":"gcr.io/flawless-star-317823/hello-world-2","builder":"Docker","payload":{"path":"Dockerfile"}} --skip-deploy --filename /tmp/cloud-code-cloud-run-3dl9Zv/skaffold.yaml --force
Setting build tagPolicy to SHA256.
Setting statusCheckDeadlineSeconds to 5 minutes
Setting build environment to 'local'
Created the file /tmp/cloud-code-cloud-run-3dl9Zv/skaffold.yaml.
Running skaffold command: build --filename /tmp/cloud-code-cloud-run-3dl9Zv/skaffold.yaml --kube-context=''
Generating tags...
- gcr.io/flawless-star-317823/hello-world-2 ->
gcr.io/flawless-star-317823/hello-world-2:latest
Checking cache...
- gcr.io/flawless-star-317823/hello-world-2: Not found. Building
Starting build...
Found [''] context, using local docker daemon.
Building [gcr.io/flawless-star-317823/hello-world-2]...
Sending build context to Docker daemon    385kB
Step 1/6 : FROM python:3.8
3.8: Pulling from library/python
(略)

0bc3020d05f1: Pulling fs layer
0f9055ba88f3: Pull complete
Digest: 
Status: Downloaded newer image for python:3.8
---> 95a6101eab8f
Step 2/6 : WORKDIR /app
---> Running in 569186a99c0c
---> bf9e184b6505
Step 3/6 : COPY requirements.txt .
---> a5269700f4e1
Step 4/6 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
---> Running in cd215dd76689
Collecting Flask==2.0.1
Downloading Flask-2.0.1-py3-none-any.whl (94 kB)
(略)
Installing collected packages: MarkupSafe, Werkzeug, urllib3, Jinja2, itsdangerous, idna, click, chardet, certifi, requests, ptvsd, Flask
Successfully installed Flask-2.0.1 Jinja2-3.0.1 MarkupSafe-2.0.1 Werkzeug-2.0.1 certifi-2021.5.30 chardet-4.0.0 click-8.0.1 idna-2.10 itsdangerous-2.0.1 ptvsd-4.3.2 requests-2.25.1 urllib3-1.26.5
[91mWARNING: Running pip as root will break packages and permissions. You should install packages reliably by using venv: https://pip.pypa.io/warnings/venv
[0m
---> dbf7ae44262c
Step 5/6 : COPY . .
---> 025ec4bd3b6a
Step 6/6 : ENTRYPOINT ["python", "app.py"]
---> Running in 14326f8e4dc5
---> 226538be639a
Successfully built 226538be639a
Successfully tagged gcr.io/flawless-star-317823/hello-world-2:latest
The push refers to repository [gcr.io/flawless-star-317823/hello-world-2]
9acddda56357: Preparing
(略)

Executing Gcloud Run Deploy
Running gcloud command: run deploy hello-world-2 --project flawless-star-317823 --image gcr.io/flawless-star-317823/hello-world-2 --client-name Cloud Code for VS Code --client-version 1.12.0 --platform managed --region asia-northeast1 --allow-unauthenticated --port 8080 --cpu 1 --memory 256Mi --concurrency 80 --timeout 300 --clear-env-vars
Deploying container to Cloud Run service [hello-world-2] in project [flawless-star-317823] region [asia-northeast1]
Deploying new service...
Setting IAM Policy................done
Creating 
(略)
Routing traffic.....done
Done.
Service [hello-world-2] revision [hello-world-2-00001-vev] has been deployed and is serving 100 percent of traffic.
Service URL: https://hello-world-2-5atdxje4jq-an.a.run.app

Cloud Run 実行

デプロイが無事完了して、Cloud Runでコンテナが実行されると、下記のような表示がされます。
スクリーンショット 2021-06-24 8.43.55.png

リンクをクリックしてサーバーが実行されていることを確認します。
スクリーンショット 2021-06-24 8.46.18.png

ローカルサーバーによる動作確認方法

テンプレートのコード app.py は、Cloud Shell ローカル環境にて、開発用のWebサーバーを起動して、動作確認をすることができます。

app.py をエディタで開いた状態で、右上の矢印を押下するとコンソールでコードが実行されます。

スクリーンショット 2021-06-24 11.24.46.png

コンソールでWebサーバーの起動を確認します。
スクリーンショット 2021-06-24 11.24.33.png

ウェブでプレビューから ポート8080でプレビュー を選択します。
スクリーンショット 2021-06-24 11.20.18.png

ローカルサーバーでWebサービスの実行を確認できます。
スクリーンショット 2021-06-24 11.25.09.png

コードの編集

app.py の一部を書き換えてみます。

app.py
def hello():
    """Return a friendly HTTP greeting."""
    # message = "It's running!"
    message = "Hello Cloud Run!"

コンソールからサーバーをCtrl+Cで停止して、再度起動します。
プレビュー画面を再読み込みして、変更が反映されることを確認します。

スクリーンショット 2021-06-24 11.42.45.png

Cloud Run に変更をデプロイする

ローカルで確認できたら、Cloud Run にデプロイして、変更を反映します。
Cloud Code メニューから、Deploy to Cloud Run を選択します。
スクリーンショット 2021-06-24 11.44.50.png

GCPの認証ダイアログが表示される場合は承認ボタンを押下します。
デプロイは、Cloud Code から API経由で GCPに接続する仕組みのようです。
スクリーンショット 2021-06-24 11.46.06.png

Deployボタンを押下します。
スクリーンショット 2021-06-24 11.50.04.png

Cloud Runのサーバー画面を再読み込みします。
スクリーンショット 2021-06-24 11.52.52.png

変更が反映されていることが確認できたらチュートリアルは終わりです。
最後に作成したプロジェクトを削除します。

Cloud Run の確認

GCPのプロジェクトの画面で、デプロイして実行されている Cloud Run の環境を確認できます。

プロジェクトを選択して、サービスメニューから Cloud Run を選択します。
スクリーンショット 2021-06-24 12.14.36.png

デプロイしたコンテナサービスを選択します。
スクリーンショット 2021-06-24 12.14.53.png

動作中のコンテナの状況が表示されます。
スクリーンショット 2021-06-24 12.15.10.png

プロジェクトの削除

起動したままだと課金されるので、作成したプロジェクトを削除します。

下記からプロジェクトページを開きます。
Projects page

スクリーンショット 2021-06-24 12.33.24.png

※IAMと管理→リソースの管理から入っても同じメニューです。
スクリーンショット 2021-06-24 12.31.56.png

削除対象のプロジェクトにチェックして、削除を押下します。
スクリーンショット 2021-06-24 12.33.24.png

削除確認のダイアログが表示されるます。
スクリーンショット 2021-06-24 12.33.36.png
プロジェクトIDを入力してシャットダウンを選択します。
スクリーンショット 2021-06-24 12.33.50.png

下記が表示されたらプロジェクトの削除が完了です。
スクリーンショット 2021-06-24 12.34.04.png

念のためプロジェクト一覧から削除されていることを確認します。
スクリーンショット 2021-06-24 12.35.44.png

お疲れ様でした。

参考

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?