์๋น์ค๋ ํจ์๋ฅผ ๋ง๋ค๋ฉด Cloud Run์์ ์๋น์ค์ HTTPS ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. HTTPS ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์คํ๋๋๋ก ์๋น์ค๋ฅผ ์ฌ์ฉ ์ค์ ํ ์ ์์ต๋๋ค.
๋ชจ๋ Cloud Run ์๋น์ค์๋ ์๋น์ค์ ๊ธฐ๋ณธ HTTPS ์๋ํฌ์ธํธ๋ฅผ ๋ํ๋ด๋ ์์ ์ ์ธ HTTPS URL์ด ์์ง๋ง ์ปค์คํ ๋๋ฉ์ธ๋ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๋ค์์ ๋ช ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
- ์ปค์คํ RESTful ์น API
- ๋น๊ณต๊ฐ ๋ง์ดํฌ๋ก์๋น์ค
- ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฉ HTTP ๋ฏธ๋ค์จ์ด ๋๋ ๋ฆฌ๋ฒ์ค ํ๋ก์
- ์ฌ์ ํจํค์ง๋ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณต๊ฐ ์๋น์ค ๋ง๋ค๊ธฐ
Cloud Run์ ๊ณต๊ฐ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค.
- ๊ณต๊ฐ ์ธํฐ๋ท์์ ์๋น์ค๋ก์ ์ก์ธ์ค ๊ถํ
- ๊ณต๊ฐ ์ฌ์ฉ์ ์ํ URL
์๋น์ค๋ฅผ ๊ณต๊ฐ๋ก ์ค์ ํ๋ ค๋ฉด ๋ฐฐํฌํ ๋ ๋๋ ๋ฐฐํฌ ํ์ ์ธ์ ๋ ์ง ์ธ์ฆ๋์ง ์์(๊ณต๊ฐ) ์ก์ธ์ค๋ฅผ ํ์ฉํ๋๋ก ์๋น์ค๋ฅผ ์ค์ ํฉ๋๋ค.
์๋น์ค URL
Cloud Run์ ๋ชจ๋ ์๋น์ค์ ํด์ ๊ธฐ๋ฐ ๋น๊ฒฐ์ ๋ก ์ URL์ ํ ๋นํฉ๋๋ค. ์๋น์ค ์ด๋ฆ ๊ธธ์ด์์ ํ์ฉํ๋ ๊ฒฝ์ฐ Cloud Run์ ์๋น์ค์ ๊ฒฐ์ ๋ก ์ URL๋ ํ ๋นํฉ๋๋ค.
์ด๋ฌํ ๊ธฐ๋ณธ run.app
URL์ ์ค์งํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์์์ ์๋น์ค ์ด๋ฆ์ ํด๋ฆญํ๊ฑฐ๋ gcloud CLI์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์๋น์ค URL์ ๊ฒ์ํ ์ ์์ต๋๋ค.
gcloud run services describe SERVICE --format 'value(status.url)'
๊ฒฐ์ ๋ก ์ URL์ด ํ์๋ ๋ ์ฐ์ ์์๊ฐ ๋ถ์ฌ๋ฉ๋๋ค.
Cloud Run ์๋น์ค๊ฐ Cloud Functions v2 API๋ฅผ ์ฌ์ฉํ์ฌ ํจ์๋ก ์์ฑ๋ ๊ฒฝ์ฐ ์๋น์ค์ cloudfunctions.net
URL๋ ํ ๋น๋ฉ๋๋ค.
๊ฒฐ์ ๋ก ์ URL
๊ฒฐ์ URL์ ์ฌ์ฉํ๋ฉด ์๋น์ค๊ฐ ์์ฑ๋๊ธฐ ์ ์ ์๋น์ค URL์ ์์ธกํ ์ ์์ผ๋ฏ๋ก ์๋น์ค ๊ฐ ํต์ ์ ์ ์ฉํฉ๋๋ค.
๊ฒฐ์ URL์ 63์ ์ดํ์ DNS ์ธ๊ทธ๋จผํธ์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค. DNS ์ธ๊ทธ๋จผํธ์๋ ์๋น์ค ์ด๋ฆ, ํ๋ก์ ํธ ๋ฒํธ, ํ๋ ์ด์์ ํธ๋ํฝ ํ๊ทธ๊ฐ ํฌํจ๋ฉ๋๋ค.
Cloud Run ์๋น์ค์ ๊ฒฐ์ URL์ ๋ค์๊ณผ ๊ฐ์ ํ์์ ๋๋ค.
https://[TAG---]SERVICE_NAME-PROJECT_NUMBER.REGION.run.app
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- TAG๋ ์์ฒญํ๋ ๋ฒ์ ์ ์ ํ์ ํธ๋ํฝ ํ๊ทธ์ ๋๋ค.
- PROJECT_NUMBER๋ Google Cloud ํ๋ก์ ํธ ๋ฒํธ์ ๋๋ค.
- SERVICE_NAME์ Cloud Run ์๋น์ค ์ด๋ฆ์ ๋๋ค.
- REGION์ ๋ฆฌ์ ์ด๋ฆ์
๋๋ค(์:
europe-west1
).
๋น๊ฒฐ์ ๋ก ์ URL
๋น๊ฒฐ์ ๋ก ์ URL์๋ ๊ฒฐ์ ๋ก ์ ํ์์ด ์์ต๋๋ค. ์ฆ, URL์ ๋ ๋ฒ์งธ ํ๋๊ฐ ๋ฌด์์ ํด์์ด๋ฏ๋ก ์๋น์ค๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์ ์ฒด URL์ ์์ธกํ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋น์ค๋ฅผ ๋ฐฐํฌํ ํ์๋ URL์ด ์์ ์ ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
Cloud Run ์๋น์ค์ ๋น๊ฒฐ์ ๋ก ์ URL์ https://[
TAG---]
SERVICE_IDENTIFIER.run.app
ํ์์
๋๋ค. ์ฌ๊ธฐ์ TAG๋ ์์ฒญํ๋ ๋ฒ์ ์ ์ ํ์ ์ธ ํธ๋ํฝ ํ๊ทธ๋ฅผ ๋ํ๋ด๊ณ SERVICE_IDENTIFIER๋ Cloud Run ์๋น์ค์ ์์ ์ ์ด๊ณ ๊ณ ์ ํ ์๋ณ์์
๋๋ค. SERVICE_IDENTIFIER์๋ ๊ณ ์ ํ์์ด ์์ผ๋ฏ๋ก ์ด๋ฅผ ํ์ฑํ์ง ๋ง์ธ์. SERVICE_IDENTIFIER ์์ฑ ๋
ผ๋ฆฌ๋ ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค.
์๋ต ์คํธ๋ฆฌ๋ฐ
Cloud Run์ ์คํธ๋ฆฌ๋ฐ HTTP ์๋ต์ ์ง์ํฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉ ์ค์ ํ๊ธฐ ์ํด ๊ตฌ์ฑ์ด ํ์ํ์ง ์์ต๋๋ค.
์๋ฒ๋ Transfer-Encoding: chunked
์๋ต ํค๋๋ก ์๋ตํด์ผ ํฉ๋๋ค.
HTTP-HTTPS ๊ฐ ๋ฆฌ๋๋ ์
Cloud Run์ ๋ชจ๋ HTTP ์์ฒญ์ HTTPS๋ก ๋ฆฌ๋๋ ์
ํ์ง๋ง ์น ์๋น์ค์ ์ฐ๊ฒฐ๋๊ธฐ ์ ์ TLS๋ฅผ ์ข
๋ฃํฉ๋๋ค. ์๋น์ค์์ ์์ ํ์ง ์์ URL(http://
)๋ก ๋ค๋ฅธ ์น ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ๋ ์น ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ฉด ํ์ด์ง์ ํผํฉ ์ฝํ
์ธ ๊ฒฝ๊ณ ๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
X-Forwarded-Proto
HTTP ํค๋์ ๊ฐ์ HTTP ์์ฒญ์ ํ๋ก์ ์ง์๋ฌธ์ ๋ํ ๋ชจ๋ ์ฐธ์กฐ ์น URI ๋๋ ๊ณ์ ์ https
ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค.
HTTP ๋ฐ HTTP/2
๊ธฐ๋ณธ์ ์ผ๋ก Cloud Run์ ํด๋น ์์ฒญ์ด ์ปจํ ์ด๋๋ก ์ ์ก๋ ๋ HTTP/2 ์์ฒญ์ HTTP/1๋ก ๋ค์ด๊ทธ๋ ์ด๋ํฉ๋๋ค. HTTP/2 ์๋ ํฌ ์๋๋ฅผ ์ฌ์ฉํ๋๋ก ์๋น์ค๋ฅผ ๋ช ์์ ์ผ๋ก ์ค์ ํ๋ ค๋ฉด HTTP/2 ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์.
๋น๊ณต๊ฐ ์๋น์ค ๋ง๋ค๊ธฐ
Cloud Run์์ ๋น๊ณต๊ฐ ์๋น์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด IAM ํธ์ถ์ ๊ถํ์ ํ์ฉํ์ฌ ์๋น์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํด์ผ ํฉ๋๋ค.
๋ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์น์ธ ๋ฐ ์ธ์ฆ ๋ฉ์ปค๋์ฆ(์: Identity Platform)์ ์ฌ์ฉํ์ฌ ์๋น์ค์ ๋ํ ์ก์ธ์ค ๊ถํ์ ์ ํํ ์ ์์ต๋๋ค.
๋น๊ณต๊ฐ ์๋น์ค ํ ์คํธ
๋น๊ณต๊ฐ ์๋น์ค๋ฅผ ํ
์คํธํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ Google Cloud CLI์์ Cloud Run ํ๋ก์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ฉด ๋น๊ณต๊ฐ ์๋น์ค๊ฐ http://localhost:8080
(๋๋ --port
๋ก ์ง์ ๋ ํฌํธ)์ผ๋ก ํ๋ก์๋์ด ํ์ฑ ๊ณ์ ์ ํ ํฐ ๋๋ ์ง์ ํ ๋ค๋ฅธ ํ ํฐ์ด ์ ๊ณต๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์น๋ธ๋ผ์ฐ์ ๋๋ curl
๋ฑ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด๋ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ ๋๋ API๋ฅผ ๋น๊ณต๊ฐ๋ก ํ
์คํธํ๋ ๋ฐ ๊ถ์ฅ๋๋ ๋ฐฉ๋ฒ์
๋๋ค.
Linux, macOS, WSL(๊ถ์ฅ) ๋๋ cygwin ํ๊ฒฝ์์ ๋ค์ ๋ช ๋ น์ค์ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ก์ปฌ๋ก ํ๋ก์ํ ์ ์์ต๋๋ค.
gcloud run services proxy SERVICE --project PROJECT-ID
curl
๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ Authorization
ํค๋์ ์ธ์ฆ ํ ํฐ์ ์ ๋ฌํ์ฌ ํ๋ก์ ์์ด ๋น๊ณต๊ฐ ์๋น์ค๋ฅผ ํ
์คํธํ ์ ์์ต๋๋ค.
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" SERVICE_URL
์๋น์ค ๊ฐ ๋น๊ณต๊ฐ ์๋น์ค
Cloud Run ์๋น์ค๋ ์๋น์ค ๊ฐ ์ธ์ฆ์ผ๋ก ๋ค๋ฅธ Cloud Run ์๋น์ค๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
๋น๊ณต๊ฐ ์๋น์ค๋ฅผ ํธ์ถํ๋ ์ํ ์ฝ๋
ID ํ ํฐ์ ๊ฐ์ ธ์ค๊ณ ๋น๊ณต๊ฐ ์๋น์ค์ HTTP ์์ฒญ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์ฝ๋ ์ํ์ ์๋น์ค ๊ฐ ์ธ์ฆ ์ฃผ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๊ฐ์
HTTPS ํ๋ก์๋ HTTP ์๋น์ค์์ ์บ์ฑ, ์์ฒญ ๊ฒ์ฌ ๋๋ ์น์ธ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ฅ์ ์คํ๋ก๋ํ ์ ์์ต๋๋ค. ๋ง์ดํฌ๋ก์๋น์ค์ ๊ฒฝ์ฐ ๋ง์ HTTP ํ๋ก์๊ฐ API ๊ฒ์ดํธ์จ์ด ์๋ฃจ์ ๋๋ Istio์ ๊ฐ์ ์๋น์ค ๋ฉ์์ ํฌํจ๋ฉ๋๋ค.
Cloud Run ์๋น์ค ๊ฐ์ ์ ์ํด ์ฌ์ฉํ ์ ์๋Google Cloud ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
API ๊ฒ์ดํธ์จ์ด: ๋ค๋ฅธ Cloud Run ์๋น์ค์ ๋ํ ํ๋ก์๋ก ์ฌ์ฉํ API๋ฅผ ์์ฑ, ๋ณดํธ, ๋ชจ๋ํฐ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Firebase ํธ์คํ : Cloud Run์ ๋์ ๋ฐฑ์๋๋ก ์ฌ์ฉํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ฐํธ์๋๋ฅผ ๋น๋ํ ์ ์์ต๋๋ค.