41
31

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 5 years have passed since last update.

GCP版のFargate? Cloud Runを触ってみた

Last updated at Posted at 2019-04-07

概要

  • Google Cloud RunはAWS Fargateの様な物っぽい
  • DockerImageベースのサービスがhttpsのURL付きで10秒ほどで立ち上がる

Cloud Runとは?

ある日の昼下がり、いつものようにGCPのコンソールを触っていると、Cloud Runという見慣れないものが目に入りました。

2019-04-07 13.15.34.png

以下はスタート画面?のスクショになります。

スクリーンショット 2019-04-05 17.54.02.png

なるほど、説明を見る限りAWSで言う所のFargateのようなものみたいですね。フルマネージドで使えるだけでなく、GKE上で実行することもできるみたいです。

試してみた

詳しい情報を求めてドキュメントのリンクをクリックしてみましたが、現段階だといずれも404になってしまいます。コンソールから得られる情報を頼りに、手探りで試すしかないようです。

19年4月9日追記

ドキュメント公開されたみたいです。
https://cloud.google.com/run/docs/?hl=ja

DockerImageの準備

とりあえず動かすDockerImageが必要なので、Goのシンプルなwebサーバーを作ってCloud Registryに上げます。

Goのコード

特に説明は不要かと思いますが、Hello Cloud Run!と表示するだけの物です。

main.go
package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello Cloud Run!")
	})
	log.Fatal(http.ListenAndServe(":8080", nil))
}

Dockerfile

Dockerfileを書く際の注意点として、PORTという環境変数を設定する必要があります。以下はコンソールに書いてある文言の引用です。

ステートレスであり、$PORT 上で HTTP リクエストをリッスンする必要があります。

FROM golang:1.11-alpine as goapp
ENV APP_ROOT /go/src/app
WORKDIR $APP_ROOT
ADD main.go $APP_ROOT

RUN go build main.go

FROM alpine:latest
COPY --from=goapp /go/src/app/main .
# この環境変数が必要
ENV PORT 8080
EXPOSE 8080
CMD ["./main"]

GCRにアップロード

準備ができたらCloud Registryにアップロードします(project-idの部分は適宜読み替えて下さい)。

gcloud builds submit --tag gcr.io/project-id/run_sample:v0.1 .

コンソールからサービスを立ち上げる

サービスの新規作成

上部ヘッダのCREATE SERVICEをクリックします。

スクリーンショット 2019-04-07 13.43.28.png

DockerImageの選択・サービス名の入力

先ほどGCRにアップロードしたDockerImageを選択し、任意のnサービス名を入力します。また、リージョンの選択もできるようですが、現在はus-central1だけみたいですね。

スクリーンショット 2019-04-07 16.00.10.png

外部公開するための設定

今回はサンプルとして外部公開してみたので、未認証の呼び出しを許可の項目にチェックを入れます。

スクリーンショット 2019-04-07 13.47.11.png

作成

後は作成ボタンを押すだけです。10秒ほど待つと、HTTPSのURLが発行されてサービスが公開されました。早い!

スクリーンショット 2019-04-07 13.50.49.png

URLにアクセスすると、ちゃんと期待通りのレスポンスが返ってきました。流石に東京リージョンじゃないので遅いですが・・・

スクリーンショット 2019-04-07 13.52.44.png

Q&A・考察

独自ドメインは設定できるか

今回は試してませんが、Domain Mappingという項目があるので、簡単に設定できそうです。

スクリーンショット 2019-04-07 13.55.17.png

内部的にはどうなってるのか

コンソールの詳細画面にはyamlが表示されており、GKEで実行可能なことからも内部的にはk8s(GKE)で動いてそうですね。

スクリーンショット 2019-04-07 13.58.26.png

料金は?

APIのページに記載がありました。CPUおよびメモリに対する秒課金に加えて、リクエスト回数に対する課金が課せられる感じですね。

スクリーンショット 2019-04-07 13.59.21.png

ドキュメントは?

まとめ

自分は普段GKEでサービスを運用していますが、そのほとんどはステートレスな物です(というか、そうなるように設計した)。今はまだ使えるリージョンが1つだけですが、東京リージョンが解放されたら一部のサービスの管理が楽になるのカモと感じました。

41
31
2

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
41
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?