Google Cloud Runまたは静的ウェブサイトを5分以上で実行する方法

TLDR;この記事では、Google Cloud Runの仕組みに関する技術的な用語については詳しく説明しません。また、Google Cloud Runは単純なWebサイトを実行する以上のことができます。この記事では、非常に単純なユースケースとそれに関する初めての経験について詳しく説明します。好奇心があるかもしれませんが、どこから始めればよいかわからない人にも役立つことを願っています。

1か月間問題がありました。私の専用サーバーのハードドライブは完全に死に(fsckは動作しませんでした)、私たちはついに10年後にそれを取り除くことにしました。残念ながら、私の母のビジネスWebサイトはそこで実行されていました。そのとおり!これは、トラフィックが非常に少ない静的なウェブサイトですが、彼女にとっては非常に便利です。

昨日まで1か月間何もしませんでした。私は通常、似たようなことが起こったときに新しいことを試してみます。HTMLファイルをアップロードするサービスは使いたくありませんでした。私が思いついた最初のオプションは、Firebaseホスティングを使用することでしたが、別の単一ページのサイトで既にそれを実行し、さらに、職場でFirebaseを使用しています。

幸いなことに、Google Next '19は数週間前に発生しました。昨日、通勤でGoogle Cloud Platformポッドキャストを聞いていましたが、このエピソードは、次の「19:Google Cloud Run」で発表された新製品に関するものでした。ポッドキャストが完了したとき、私はそれを明確に見ました:Google Cloud Runを使用するだけです!

しかし、Google Cloud Runとは何ですか?サーバーレスで正しい方法で行われます。 Google Cloud Functionsを使用すると、Node.js(またはGo…)HTTP要求ハンドラーをファイルに記述してアップロードできます。その関数をデプロイすると、URLが取得され、設定されます。それを指すだけで済みます。 Google Cloud Runは次のレベルに進みます。関数のファイルをアップロードする代わりに、コンテナを展開します。なぜこれが良いのですか?コンテナに好きなものを入れられるようになったからです。優先される言語がCloud Functionsでサポートされるのを待つのではなく(これは起こりえないことです)、今はコンテナーを作成し、その中で何でも実行できます。必要なのは、コンテナのポート8080を開くことだけです(これについては後で説明します)。また、Cloud Functionsの場合と同様に、すぐに拡張でき、コンテナーを他のGoogle Cloud製品に接続できます。可能性を想像してください。

今日の時点で、私が説明しようとしていることについてすでに多くの記事があるはずですが、経験はとても痛みがなく、美しく、シンプルで、速かったので共有する価値があると思いました。だから、ここに行く!

新しいGoogle Cloud Platformプロジェクトを作成します

新しいGCP(Google Cloud Platform)プロジェクトを作成するのがこれが初めての場合は、以下のようにします。方法がすでにわかっている場合は、コンソールで新しいプロジェクトを作成して名前を付け、MyWebsiteと言い、次のセクションに進んでください。

まず、Google Cloud Consoleに移動して、上部の[プロジェクトを選択]をクリックします。これにより、モーダルウィンドウが開き、[新しいプロジェクト]をクリックします。

次に、プロジェクトの名前を入力するだけで、MyWebsiteと言い、[作成]をクリックします。このステップで覚えておくべき非常に重要なことがあります。プロジェクトIDはmywebsite-239106です。後で使用するため、書き留めておきます。

プロジェクトが作成されたら、最初にクリックしたのと同じ[プロジェクトの選択]ドロップダウンからプロジェクトを選択します。

請求を有効にします(および価格設定について)

残念ながら、この手順を実行する必要があることに気付きました。 Google Cloud Runを最初に試したときは、すでに課金が有効になっていたので、これまでこれが必要だとは思いませんでした。私はあなたがこれに関して何の問題も持たないと仮定するつもりです。最後に、トラフィックの少ないウェブサイトの運営は「ほぼ」無料になります。詳細については、Google Cloud Runの価格をご覧ください。

Google Cloud Runを有効にする

GCPプロジェクトが選択されていると仮定して、Google Cloud Runに移動し、Cloud Runの使用開始をクリックします。

最終的にGoogle Cloud Runコンソールに移動するはずです。

Google Cloud SDKをインストールして承認する

既にGoogle Cloud SDKがインストールされており、何をしているのかわかっている場合は、おそらくこの手順をスキップできます(Google Cloud SDKを更新し、ベータコンポーネントをインストールし、新しく作成したプロジェクトを選択することを忘れないでください)。

OS Xを使用している場合、Homebrewがインストールされている可能性が高いです。もしそうなら、単に入力してください:

$ brew cask install google-cloud-sdk

Homebrewがない場合は、インストールすることをお勧めします。インストールしない場合は、GNU / Linuxを使用する場合と同じように、Google Cloud SDKのインストール手順に従ってください。

したがって、Google Cloud SDKをインストールしたら、プロジェクトの作成に使用したGoogleアカウントでそれを認証する必要があります。次を入力します。

$ gcloud auth login

次に、Google Cloud SDK Betaコンポーネントをインストールします。

$ gcloud components install beta

最後に、プロジェクトを選択します(以前に書き留めたプロジェクトIDを覚えていますか?):

$ gcloud config set project mywebsite-239016

Dockerをインストールする

繰り返しになりますが、OS XでHomebrewがある場合は、次のように入力します。

$ brew cask install docker

そうでない場合は、Dockerをダウンロードして指示に従ってください。とても簡単です。

コンテナを作成する

最後に、興味深い部分。次に行うことは、シンプルなHTMLページをデプロイし、Google Cloud Runを通じて提供することです。最初に新しいディレクトリを作成し、少し整理しましょう。

$ mkdirウェブサイト
$ cdウェブサイト
$ mkdir html nginx

htmlディレクトリで、次のコンテンツを含むindex.htmlファイルを作成します。


 Google Cloud Runからこんにちは!

このファイルを提供するには、Webサーバーが必要です。 nginxを使用します。 Google Cloud Runはコンテナを使用すると言いました。つまり、既存のnginxコンテナを使用するだけです。デフォルトのnginxコンテナの唯一の問題は、ポート80でファイルを提供することですが、Google Cloud Runはコンテナがポート8080でサービスを提供することを期待します。

Webサイトディレクトリ内に新しいDockerfileを作成します。

$ cat Dockerfile
nginxから
htmlのコピー/ usr / share / nginx / html
コピーnginx / default.conf /etc/nginx/conf.d/default.conf

このDockerfileでは、nginxコンテナに基づいて新しいコンテナを作成するようにDockerに指示しているだけで、htmlディレクトリ(index.htmlを含む)と、次に作成するnginx構成ファイルを追加しています。

nginxディレクトリにdefault.confファイルを作成します(ポート8080でリッスンする方法に注意してください)。

$ cat nginx / default.conf
サーバー{
    8080を聞く;
    server_name localhost;
    場所/ {
        ルート/ usr / share / nginx / html;
        index index.html index.htm;
    }
    #サーバーエラーページを静的ページ/50x.htmlにリダイレクトします
    error_page 500 502 503 504 /50x.html;
    場所= /50x.html {
        ルート/ usr / share / nginx / html;
    }
}

結局のところ、次のディレクトリ構造が必要です。

$ツリー
。
├──Dockerfile
├──html
│└──index.html
└──nginx
    └──default.conf

htmlディレクトリまたはその他の場所に、追加のファイルを追加できることに注意してください。HTMLファイル、CSSファイル、画像など。

コンテナを構築してデプロイする

これで、コンテナをビルドしてプッシュできます。これは、Google Cloud SDKコマンドを使用して行われます。

$ gcloud builds submit --tag gcr.io/mywebsite-239106/hello

プロジェクトmywebsite-239106と新しいGoogle Cloud Runサービスhelloの名前を指定しました。

最後に、新しいコンテナをGoogle Cloud Runにデプロイできます。

$ gcloud beta run deploy --image gcr.io/mywebsite-239106/hello

すべてがうまくいった場合、次のようなメッセージが表示されます。

サービス[hello]リビジョン[hello-00001]がデプロイされ、https://hello-7ss2wutasq-uc.a.run.appでトラフィックを処理しています

そして、生成されたURLが稼働しているようです!

詳細については、Google Cloud Runコンソールをご覧ください。

この後、Webサイトに変更を加え、新しいコンテナの構築と展開を続けることができます。 Google Cloud Runには、デプロイしたすべてのリビジョンがリストされます。

ドメインを割り当てる

次にできることは、新しいGoogle Cloud Runサービスにドメインを割り当てることです。ドメインDNSレコードを更新する必要があり、使用しているサービスに依存するため、ここでは説明しませんが、プロセスは非常に簡単です。展開が完了したら、[カスタムドメインの管理]をクリックするだけです(上の画像を参照)。

ああ!そして、これに関する最良の部分は、証明書がすでにあなたのために管理されているということです。何もせずにLet's Encrypt証明書がドメイン用に既にセットアップされていて、HTTPとHTTPSの両方が魅力的に機能していたことに驚きました。

そしてそれはそれでした!

ところで、私はFirebaseと仕事について何かに言及しました。 Firebaseやその他のGoogle Cloud Platformを使用しています。数か月間取り組んでいる新しいプロジェクトを共有したかっただけです。これは、画面共有のための非常にクールな新しい概念であり、好奇心が強い名前も持っています。それをチェックしてください:https://www.rumpus.co/