A projecthez tartozó GitHub Repository itt található
Regisztráció a GCP-re
Regisztálj be a Google Cloud Platformra ezen a linken
A regisztráció során el fogja kérni a bankkártya adataidat, de jelenleg (2021 májusában) oda van írva, hogy ennek az oka az, hogy meggyőződjenek róla, hogy nem vagy robot. 2021 májusában (nézd meg, hogy még mindig így van-e, amikor olvasod ezt a dokumentációt) a Google ad $300 ingyenes creditet, ezzel bátorítva az új felhasználókat, hogy kipróbáljanak különböző szolgáltatásokat a GCP-ben.
Mi ebben a dokumentációban csak olyan dolgokat fogunk használni, amik 2021 májusában INGYENESEN elérhetőek.
Például minden hónapban 2 millió API call a szervereidhez ingyenes. Mi deployolni fogjuk a microservice-t a Cloud Runba
, és ha csak nem érzel égető vágyat arra, hogy 2 milliószor meghívd a /test
endpointot, nem fogjuk teljesen kihasználni az ingyenes szolgáltatásokat.
Pinneld a fontos menüket bal felül
Amikor ráviszed az egeret egy menüpontra bal oldalon, megjelenik egy pin
icon, amire ha rákattintasz, felül megjelenik a gyorsmenün.
Érdemes az alábbi menüket kikeresned és pinnelned, hogy gyorsan elérd őket:
- IAM & Admin
- Cloud Run
- Container Registry
- Billing
Project átnevezése
Átnevezheted a GCP által létrehozott “My First Project”-et, arra, hogy “Penguin Project”.
Bal felül kattints a project nevére (“My First Project”)
A megnyíló popup ablakban kattints a mappára, benne a fogaskerékkel
Az új oldalon válaszd ki a projectet, és kattints a három pontra a sor jobb oldalán, majd
Settings
Írd át a project nevét “Penguin Project”-re.
Project ID kimásolása
Győződj meg róla, hogy a GCP által generált Project ID-t kimásolod valahova, mert nemsokára használni fogjuk. Ezt az ID-t ne oszd meg másokkal.
Container Registry engedélyezése
A Docker Image repository segítségével a létrehozott Docker Image-t fel tudjuk tölteni a saját, privát Container Registrynkbe. Ehhez viszont először engedélyeznünk kell.
Kattints a
Container Registry
menüpontraKattints a gombra, amely azt írja:
Enabling Container Registry API
A GCP SDK telepítése
Részletes leírást itt találsz.
Makefile szerkesztése
Most már, hogy tudunk interaktálni a GCP-vel a saját terminálunkról, hozzáadhatunk egy pár új targetet a Makefile-hoz.
Az első egy docker beállítás specifikus target, amit mi csak egyszer fogunk futtatni, de a GitHub Actions fog használni minden futáskor, ezért tesszük bele a Makefile-ba.
A második target majdnem mindenben megegyezik a lokális docker build-del, de ezesetben már nem feltétlenül a dev
taget adjuk át az image-nek, és nem nem is a localhost-ra készítjük az image-t, hanem a Google Container Registrybe.
A harmadik target futtatásával az összeépített image-t felpusholjuk a GCR-ra, így onnantól fogva, hogy ez a parancs lefutott, már a Google Cloud Platform - Container Registryben is meg fog jelenni a docker image. (nem publikusan, csak neked)
Végül pedig az utolsó target meghívásával létrehozunk egy Cloud Run példányt, ami egy serverless környezetben fog élni, és csak akkor fog bekapcsolni, ha valaki meghívja az endpoint-ot rajta. A backslash () a sorok végén jelzik a parancsnak, hogy a következő sorban folytatódik. A régióval meghatározhatod, hogy hova deployolja az alkalmazásodat. Az image paraméter megmondja neki, hogy melyik docker image-t kell használnia. A port paraméter megmondja a GCP-nek, hogy melyik porton kell hallgatnia a service-re. Mivel nem adunk át külön paramétert a címre és a portra, ezért az alapértelmezett 0.0.0.0 és 80 kerül használatra, ahogyan azt megírtuk a Go alkalmazásunkban.
# GCloud-specific targets
gcloud-docker-init:
gcloud auth configure-docker
gcloud-docker-build:
docker build -t eu.gcr.io/$(GCP_PROJECT_ID)/$(APP):$(ENVIRONMENT) .
gcloud-docker-push:
docker push eu.gcr.io/$(GCP_PROJECT_ID)/$(APP):$(ENVIRONMENT)
gcloud-run-deploy:
gcloud run deploy $(APP)-$(ENVIRONMENT) \
--region europe-west2 \
--image gcr.io/$(GCP_PROJECT_ID)/$(APP):$(ENVIRONMENT) \
--port 80 \
--project $(GCP_PROJECT_ID) \
--max-instances 1 \
--platform managed \
--labels environment=$(ENVIRONMENT) \
--allow-unauthenticated
Látható, hogy van két változó (A GCP_PROJECT_ID és az ENVIRONMENT), ami nem szerepel a Makefile tetején. Ez azért van, mert ezeket nem akarjuk belevinni a Makefile-ba, mert nem való a GitHubra szenzitív adat.
Ehelyett, a terminálodon exportálhatod ezeket a változókat, és utána meg meghívhatod az új targeteket.
export GCP_PROJECT_ID=[A_te_projected_id-ja]
export ENVIRONMENT=staging
# ezt csak egyszer kell lefuttatnod, utána többet nincs rá szükséged, viszont benne hagyjuk a Makefile-ban a GitHub Actions-nek
make gcloud-docker-init
make gcloud-docker-build
make gcloud-docker-push
make gcloud-run-deploy
Ellenőrzés
Ha minden jól ment, láthatod az új Docker Image-t a GCP console-on a Container Registry
menüpont alatt
valamint láthatod a Cloud Run példányt a Cloud Run
menüpont alatt.
Visszaküldés a repositoryba
Végül pedig állítsd össze a módosításaidat és commitold őket GitHubra.
git status # Információt ad vissza a git repo aktuális állapotáról
git add . # a stage-re helyezi a módosított/hozzáadott fájlokat
git commit -m "Making our service deployable to GCP Cloud Run from local" # A stage tartalmát commitolja a lokális repositoryba
git push origin main # Felpusholja a commitodat a GitHub repositoryba, aminek a UI-on is megnézheted a tartalmát