Google Cloud Run sau cum să rulați site-ul dvs. static în 5 minute și multe altele

TLDR; Acest articol nu este foarte profund în termeni tehnici despre modul în care funcționează Google Cloud Run. De asemenea, Google Cloud Run poate face mult mai mult decât rularea unui site web simplu. Articolul descrie doar un caz de utilizare foarte simplu și prima mea experiență cu el și sperăm să-i ajute pe alții care ar putea fi curioși, dar nu știu de unde să înceapă (chiar dacă cele QuickStarts deja existente sunt probabil tot ce ai nevoie).

Am avut o problemă timp de o lună. Hard disk-urile mele dedicate au murit complet (fsck-ul nici măcar nu a funcționat asupra lor) și am decis în sfârșit să scăpăm de el după 10 ani. Din păcate, site-ul meu de afaceri al mamei funcționa acolo. Asta e corect! Este doar un site static cu trafic foarte redus, dar este totuși un lucru foarte plăcut pentru ea.

Nu am făcut nimic timp de o lună până ieri. De obicei, am ocazia să încerc lucruri noi când se întâmplă ceva similar, nu am vrut să folosesc niciun serviciu în care încărcați fișierele HTML și asta este. Prima opțiune care a venit la a mea a fost să folosesc găzduirea Firebase, dar am făcut-o deja pentru un alt site cu o singură pagină, plus că deja folosesc Firebase la serviciu.

Din fericire, Google Next ”19 s-a întâmplat în urmă cu câteva săptămâni. Ieri, ascultam podcast-ul Google Cloud Platform în naveta mea, iar episodul a fost despre un nou produs care a fost anunțat în următorul '19: Google Cloud Run. Când podcast-ul a fost terminat, am văzut clar: o să folosesc Google Cloud Run!

Dar ce este Google Cloud Run? Nu a fost făcut serverul așa cum trebuie. Scuzați-mă? Cu funcțiile Google Cloud, puteți scrie un Node.js (sau Go ...) gestionator de cereri HTTP într-un fișier și încărcați-l. După implementarea acelei funcții, obțineți o adresă URL și sunteți setat, puteți doar să indicați. Google Cloud Run trece la nivelul următor. În loc să încărcați fișierele funcțiilor dvs., acum implementați containere. De ce este mai bine? Pentru că acum puteți pune orice doriți în container. În loc să așteptați ca limba dvs. preferată să fie acceptată cu funcțiile Cloud (ceea ce nu s-ar putea întâmpla niciodată), acum creați doar un container și rulați orice doriți în el. Tot ce trebuie să faceți este să deschideți portul 8080 în container (mai multe despre asta mai târziu). Și la fel ca în cazul funcțiilor Cloud, toate scalele iese din cutie și vă puteți conecta containerele la alte produse Google Cloud. Imaginează-ți posibilitățile.

Începând de astăzi, sunt destul de sigur că trebuie să existe deja o grămadă de articole care vorbește deja despre ceea ce voi explica, dar experiența a fost atât de nedureroasă, frumoasă, simplă și rapidă încât am crezut că merită împărtășit. Deci, iată!

Creați un nou proiect Google Cloud Platform

În cazul în care aceasta este prima dată când creezi un nou proiect GCP (Google Cloud Platform), mai jos este modul în care îl faci. Dacă deja știți cum, creați un proiect nou în consolă și denumiți-l, să spunem MyWe Website și să treceți la secțiunea următoare.

În primul rând, accesați Google Cloud Console și faceți clic pe Selectați un proiect în partea de sus. Aceasta va deschide o fereastră modală, faceți clic pe Proiect nou.

În continuare, trebuie doar să introduceți numele proiectului, am spus că este MyWe Site și am dat clic pe Create. Există un lucru foarte important de reținut în acest pas: ID-ul de proiect este mywebsite-239106, scrieți-l pe măsură ce îl vom folosi mai târziu.

Odată ce proiectul este creat, selectați-l din același Selectați un drop-down al proiectului pe care l-am făcut clic la început.

Activați facturarea (și despre prețuri)

Din păcate, mi-am dat seama că trebuie să parcurgi acest pas. Am avut deja facturarea activată când am încercat prima dată Google Cloud Run, așa că nu mi-am dat seama că acest lucru era necesar până acum. Voi presupune doar că nu aveți probleme cu acest lucru. La final, rularea unui site web cu trafic redus va fi „aproape” gratuită. Consultați prețurile Google Cloud Run pentru mai multe detalii.

Activați Google Cloud Run

Presupunând că aveți proiectul GCP selectat, trebuie doar să accesați Google Cloud Run și să faceți clic pe Start Utilizare Cloud Run.

Ar trebui să ajungeți în consola Google Cloud Run.

Instalați și autorizați SDK Google Cloud

Dacă aveți deja instalat Google Cloud SDK și știți ce faceți, probabil puteți săriți acest pas (nu uitați să actualizați Google Cloud SDK, să instalați componentele Beta și să selectați proiectul dvs. recent creat).

Dacă utilizați OS X, este foarte probabil să aveți Homebrew instalat. Dacă o faceți, introduceți doar:

$ brek cask instalați google-cloud-sdk

Dacă nu aveți Homebrew, v-aș recomanda să îl instalați. Dacă nu doriți să o instalați, puteți urma instrucțiunile de instalare de la Google Cloud SDK, la fel dacă utilizați GNU / Linux.

Deci, odată instalat Google Cloud SDK, trebuie să îl autorizați cu contul Google pe care l-ați folosit pentru a crea proiectul dvs. Introduceți următoarele:

$ gcloud autentificare autentificare

Apoi, instalați componentele beta Google SDK Beta:

Componentele $ gcloud instalează beta

În cele din urmă, selectați proiectul dvs. (vă amintiți ID-ul de proiect pe care l-am scris mai înainte?):

$ gcloud config set proiect proiect mywebsite-239016

Instalați Docker

Din nou, în OS X, dacă aveți Homebrew, introduceți doar:

$ brek cask instala docker

Dacă nu, trebuie doar să descărcați Docker și să urmați instrucțiunile. Este destul de simplu.

Creați containerul

În cele din urmă, partea interesantă. Ceea ce vom face în continuare este să implementăm o pagină HTML simplă și să o servim prin Google Cloud Run. Mai întâi creăm un director nou și organizăm puțin lucrurile:

site web $ mkdir
$ cd site-ul web
$ mkdir html nginx

În directorul html creați un fișier index.html cu acest conținut:


 Salut de la Google Cloud Run! 

Pentru a servi acest fișier, avem nevoie doar de un server web. Vom folosi nginx. Am spus că Google Cloud Run folosește containere, ceea ce înseamnă că putem folosi pur și simplu un container existent nginx. Singura problemă cu containerul nginx implicit este că servește fișierele pe portul 80, cu toate acestea Google Cloud Run se așteaptă ca containerele să servească lucrurilor în portul 8080. Așadar, vom oferi doar un nou fișier de configurare pentru nginx ulterior.

Creați un nou Dockerfile în directorul site-ului:

$ pisica Dockerfile
DE la nginx
COPIE html / usr / share / nginx / html
COPY nginx / default.conf /etc/nginx/conf.d/default.conf

În acest Dockerfile spunem doar lui Docker să creeze un nou container bazat pe containerul nginx și adăugăm directorul nostru html (care conține index.html), plus un fișier de configurare nginx pe care îl vom crea în continuare.

În directorul nginx creați un fișier default.conf (rețineți cum ascultăm portul 8080):

$ cat nginx / default.conf
Server {
    asculta 8080;
    server_name localhost;
    Locație / {
        root / usr / share / nginx / html;
        index index.html index.htm;
    }
    # redirecționează paginile de eroare ale serverului către pagina statică /50x.html
    pagina de eroare 500 502 503 504 /50x.html;
    locație = /50x.html {
        root / usr / share / nginx / html;
    }
}

După toate acestea, ar trebui să aveți această structură de director:

$ copac
.
├── Dockerfile
├── html
│ └── index.html
└── nginx
    └── implicit.conf

Rețineți că, în directorul html sau în altă parte, ați fi putut adăuga mai multe fișiere: mai multe fișiere HTML, fișiere CSS, imagini etc. Dacă este un site web mare, este probabil mai bine să încărcați conținut în Google Cloud Storage și să păstrați containerul mic.

Construiți și implementați containerul

Acum putem construi recipientul și îl putem împinge. Acest lucru se face cu o comandă SDK Google Cloud:

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

Am specificat proiectul nostru site-ul nostru-239106 și un nume pentru noul nostru serviciu Google Cloud Run.

În cele din urmă, putem implementa noul container pe Google Cloud Run:

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

Dacă totul a decurs bine, ar trebui să vedeți un mesaj ca acesta:

Revizuirea serviciului [salut] [hello-00001] a fost implementată și servește traficul la https://hello-7ss2wutasq-uc.a.run.app

Și se pare că URL-ul generat este funcțional!

De asemenea, puteți arunca o privire asupra consolei Google Cloud Run pentru mai multe detalii:

După aceasta, puteți face modificări pe site-ul dvs. web și puteți continua să construiți și să implementați noul container. Google Cloud Run va lista toate revizuirile pe care le-ați implementat.

Atribuirea unui domeniu

Următorul lucru pe care îl puteți face este să atribuiți un domeniu noului serviciu Google Cloud Run. Nu o să parcurg acest lucru aici, deoarece necesită să vă actualizați înregistrările DNS de domeniu și asta depinde cu adevărat de serviciul pe care îl utilizați, dar trebuie să spun că procesul este foarte simplu. După finalizarea implementării, trebuie doar să faceți clic pe Gestionare domenii personalizate (vezi imaginea de mai sus).

Oh! Iar cea mai bună parte a acestui lucru este că certificatele sunt deja gestionate pentru dumneavoastră. Am fost fericit surprins de faptul că, fără să fac nimic, un certificat Encrypt Let era deja configurat pentru domeniul meu, iar HTTP și HTTPS funcționau amândoi ca un farmec.

Și asta a fost!

Apropo, am menționat ceva despre Firebase și munca. Folosim Firebase și alte lucruri din platforma Google Cloud la locul de muncă. Voiam doar să împărtășesc un nou proiect la care lucram de câteva luni acum. Este un concept destul de nou pentru partajarea ecranului și are și un nume curios. Verificați-l: https://www.rumpus.co/