Google Cloud Run, eller hvordan du kører dit statiske websted på 5 minutter og meget mere

TLDR; Denne artikel er ikke meget dybtgående i tekniske termer om, hvordan Google Cloud Run fungerer. Google Cloud Run kan også gøre meget mere end at køre et simpelt websted. Artiklen beskriver bare en meget enkel brugssag og min første oplevelse med det, og det hjælper forhåbentlig andre, der måske er nysgerrige, men ikke ved, hvor de skal starte (selvom de allerede eksisterende Quickstarts sandsynligvis er alt hvad du har brug for).

Jeg havde et problem i en måned. Min dedikerede server harddiske døde fuldstændigt (fsck fungerede ikke engang på dem), og vi besluttede endelig at slippe af med det efter 10 år. Desværre kørte min mors forretningswebsted der. Det er rigtigt! Det er bare et statisk websted med meget lav trafik, men det er stadig meget rart at have for hende.

Jeg gjorde ikke noget i en måned indtil i går. Jeg benytter normalt muligheden for at prøve nye ting, når der sker noget lignende, jeg ønskede ikke at bruge nogen tjeneste, hvor du uploade HTML-filerne, og det er det. Den første mulighed, der kom til mig, var at bruge Firebase-hosting, men det gjorde jeg allerede for et andet websted med én side, plus jeg bruger allerede Firebase på arbejdet.

Heldigvis skete Google Next '19 for et par uger siden. I går lytter jeg til Google Cloud Platform Podcast på min pendler, og episoden handlede om et nyt produkt, der blev annonceret under Next ‘19: Google Cloud Run. Da podcasten var færdig, så jeg det klart: Jeg skal bare bruge Google Cloud Run!

Men hvad er Google Cloud Run? Det er serverløst udført på den rigtige måde. Undskyld? Med Google Cloud-funktioner kunne du skrive en Node.js (eller Go…) HTTP-anmodningsbehandler i en fil og uploade den. Når du har implementeret denne funktion får du en URL, og du er indstillet, du kan bare pege på den. Google Cloud Run går til næste niveau. I stedet for at uploade dine funktions filer, distribuerer du nu containere. Hvorfor er det bedre? For nu kan du lægge hvad du vil i din container. I stedet for at vente på, at dit foretrukne sprog understøttes med Cloudfunktioner (som aldrig kunne ske), skal du bare oprette en container og køre, hvad du vil i den. Alt hvad du skal gøre er at åbne port 8080 i containeren (mere om det senere). Og som med Cloudfunktioner skalerer det hele ud af boksen, og du kan forbinde dine containere til andre Google Cloud-produkter. Forestil dig mulighederne.

Fra i dag er jeg temmelig sikker på, at der må være en masse artikler, der allerede taler om, hvad jeg vil forklare, men oplevelsen var så smertefri, smuk, enkel og hurtig, at jeg syntes, det var værd at dele. Så her går det!

Opret et nyt Google Cloud Platform-projekt

I tilfælde af at dette er første gang, du opretter et nyt GCP (Google Cloud Platform) -projekt, er det nedenfor, hvordan du gør det. Hvis du allerede ved hvordan, skal du bare oprette et nyt projekt i konsollen og navngive det, lad os sige MyWebsite og springe til næste afsnit.

Gå først til Google Cloud Console og klik på Vælg et projekt øverst. Dette åbner et modalvindue, og klik på Nyt projekt.

Dernæst skal du bare indtaste projektets navn, vi sagde, det var MyWebsite og klikke på Opret. Der er en meget vigtig ting at huske i dette trin: Projekt-id'et er mywebsite-239106, skriv det ned, som vi vil bruge det senere.

Når projektet er oprettet, skal du vælge det fra det samme Vælg et projekt-rulleliste, som vi klikkede på i starten.

Aktivér fakturering (og om prisfastsættelse)

Desværre indså jeg bare, at du skal gennem dette trin. Jeg havde allerede aktiveret min fakturering, da jeg først prøvede Google Cloud Run, så jeg vidste ikke, at dette var nødvendigt indtil nu. Jeg vil bare antage, at du ikke har nogen problemer med dette. I slutningen vil det at køre et websted med lav trafik være "næsten" gratis. Se Google Cloud Run-priser for flere detaljer.

Aktivér Google Cloud Run

Forudsat at du har valgt dit GCP-projekt, skal du bare gå til Google Cloud Run og klikke på Start Brug af Cloud Run.

Du skulle ende i Google Cloud Run-konsollen.

Installer og autoriser Google Cloud SDK

Hvis du allerede har Google Cloud SDK installeret, og du ved, hvad du laver, kan du sandsynligvis springe dette trin over (husk at opdatere Google Cloud SDK, installere Beta-komponenterne og vælg dit nyoprettede projekt).

Hvis du bruger OS X, er det meget sandsynligt, at du har Homebrew installeret. Hvis du gør det, skal du blot skrive:

$ bryg cask installere google-cloud-sdk

Hvis du ikke har Homebrew, vil jeg anbefale dig at installere det. Hvis du ikke ønsker at installere det, kan du følge installationsvejledningen fra Google Cloud SDK, det samme, hvis du bruger GNU / Linux.

Så når Google Cloud SDK er installeret, skal du godkende det med den Google-konto, du brugte til at oprette dit projekt. Skriv følgende:

$ gcloud godkendelses login

Installer derefter Google Cloud SDK Beta-komponenter:

$ gcloud-komponenter installerer beta

Til sidst skal du vælge dit projekt (husk det projekt-id, vi skrev ned før?):

$ gcloud config sæt projekt mywebsite-239016

Installer Docker

I OS X, hvis du har Homebrew, skal du bare skrive:

$ bryg cask install docker

Hvis ikke, skal du bare downloade Docker og følge instruktionerne. Det er ret lige frem.

Opret beholderen

Endelig den interessante del. Det, vi skal gøre næste, er at implementere en simpel HTML-side og servere den via Google Cloud Run. Lad os først oprette et nyt bibliotek og organisere tingene lidt:

$ mkdir-websted
$ cd-websted
$ mkdir html nginx

Opret en indeks.html-fil i html-biblioteket med dette indhold:


 Hej fra Google Cloud Run! 

For at servere denne fil har vi bare brug for en webserver. Vi vil bruge nginx. Jeg sagde, at Google Cloud Run bruger containere, hvilket betyder, at vi simpelthen kan bruge en eksisterende nginx-container. Det eneste problem med standard nginx-containeren er, at den serverer filer i port 80, men Google Cloud Run forventer, at containere skal tjene ting på port 8080. Så vi leverer bare en ny konfigurationsfil til nginx senere.

Opret en ny Dockerfile i webstedets bibliotek:

$ kat Dockerfile
FRA nginx
KOPI html / usr / share / nginx / html
COPY nginx / default.conf /etc/nginx/conf.d/default.conf

I denne Dockerfile fortæller vi bare Docker at oprette en ny container baseret på nginx-containeren, og vi tilføjer vores html-bibliotek (der indeholder vores index.html) plus en nginx-konfigurationsfil, som vi vil oprette næste.

Opret en default.conf-fil i nginx-biblioteket (bemærk, hvordan vi lytter til port 8080):

$ cat nginx / default.conf
server {
    lyt 8080;
    servernavn localhost;
    Beliggenhed / {
        root / usr / share / nginx / html;
        index index.html index.htm;
    }
    # omdiriger serverfejlssider til den statiske side /50x.html
    error_page 500 502 503 504 /50x.html;
    placering = /50x.html {
        root / usr / share / nginx / html;
    }
}

Efter alt dette skal du have denne katalogstruktur:

$ træ
.
├── Dockerfile
├── html
│ └── indeks.html
└── nginx
    └── default.conf

Bemærk, at i html-biblioteket eller andre steder kunne du have tilføjet flere filer: flere HTML-filer, CSS-filer, billeder osv. Hvis det er et stort websted, er det sandsynligvis bedre at uploade indhold til Google Cloud Storage og holde containeren lille.

Byg og indsæt containeren

Nu kan vi bygge containeren og skubbe den. Dette gøres med en Google Cloud SDK-kommando:

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

Vi har specificeret vores projekt mywebsite-239106 og et navn til vores nye Google Cloud Run-service hej.

Endelig kan vi implementere den nye container til Google Cloud Run:

$ gcloud beta run-implementering - billede gcr.io/mywebsite-239106/hello

Hvis alt gik godt, skal du se en meddelelse som denne:

Service [hej] revision [hello-00001] er blevet distribueret og betjener trafik på https://hello-7ss2wutasq-uc.a.run.app

Og det ser ud til, at den genererede URL er i gang!

Du kan også se på Google Cloud Run-konsollen for at få flere oplysninger:

Efter dette kan du foretage ændringer på dit websted og fortsætte med at bygge og distribuere den nye container. Google Cloud Run viser alle de revisioner, du har implementeret.

Tildel et domæne

Den næste ting, du kan gøre, er at tildele et domæne til den nye Google Cloud Run-tjeneste. Jeg vil ikke gennemgå dette her, fordi det kræver, at du opdaterer dine domæne-DNS-poster, og det afhænger virkelig af den service, du bruger, men jeg må sige, at processen er meget ligetil. Når installationen er afsluttet, skal du blot klikke på Administrer tilpassede domæner (se billede ovenfor).

Oh! Og det bedste ved dette er, at certifikater allerede er administreret til dig. Jeg var heldigvis overrasket over, at uden at gøre noget, var der allerede konfigureret et Let’s Encrypt-certifikat til mit domæne, og både HTTP og HTTPS fungerede som en charme.

Og det var det!

For øvrig nævnte jeg noget om Firebase og arbejde. Vi bruger Firebase og andre Google Cloud Platform-ting på arbejdet. Jeg ville bare dele et nyt projekt, vi har arbejdet på i et par måneder nu. Det er et ret cool nyt koncept til skærmdeling og har også et underligt navn. Tjek det ud: https://www.rumpus.co/