Cloud Run ์ํ ์ ๊ฒ์ ํตํด ์ปจํ ์ด๋ ์ธ์คํด์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๊ณ ํธ๋ํฝ์ ์ฒ๋ฆฌํ ์ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. Cloud Run ์ํ ์ ๊ฒ์ ์ฌ์ฉํ๋ฉด ์ปจํ ์ด๋๊ฐ ์์ฒญ์ ์์ ํ ์ค๋น๊ฐ ๋ ์์ ๊ณผ ์ปจํ ์ด๋๊ฐ ๋น์ ์์ผ๋ก ๊ฐ์ฃผ๋์ด ๋ค์ ์์ํด์ผ ํ๋ ์์ ์ ๋ง์ถค์ค์ ํ ์ ์์ต๋๋ค.
์ฌ์ฉ ์ฌ๋ก
๋ค์ ๋ ๊ฐ์ง ์ ํ์ ์ํ ์ ๊ฒ ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์์ ํ๋ก๋ธ๋ ์ปจํ ์ด๋๊ฐ ์์๋์๊ณ ํธ๋ํฝ์ ์๋ฝํ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํฉ๋๋ค.
- ์์ ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ๋ฉด ์๋น์ค ์์์ ๊ฐ์ญํ์ง ์๋๋ก ์์ ํ๋ก๋ธ์์ ์ปจํ ์ด๋๊ฐ ์์๋์์์ ํ์ธํ ๋๊น์ง ํ์ฑ ํ์ธ์ด ์ค์ง๋ฉ๋๋ค.
- ์์ ํ๋ก๋ธ๋ ์ปจํ ์ด๋๊ฐ ๊ฐ๋ ๋ฐ ์คํ๋๊ธฐ ์ ์ ์กฐ๊ธฐ ์ข ๋ฃ๋ฅผ ๋ฐฉ์งํ๋ฏ๋ก ๋๋ฆฌ๊ฒ ์์๋๋ ์ปจํ ์ด๋์ ํ์ฑ ํ์ธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํนํ ์ ์ฉํฉ๋๋ค.
ํ์ฑ ์ฌ๋ถ ํ๋ก๋ธ๋ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- ์ด ๊ฒฝ์ฐ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ฒ๊ทธ ๋ฐ์ ์ ์๋น์ค ๊ฐ์ฉ์ฑ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
- ํ์ฑ ํ๋ก๋ธ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ณต๊ตฌํ ์ ์๋ ๊ฐ๋ณ ์ธ์คํด์ค๋ฅผ ๋ค์ ์์ํ๊ธฐ ์ํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์๋น์ค๊ฐ ์คํ ์ค์ด์ง๋ง ์งํํ ์ ์๋ ๊ต์ฐฉ ์ํ๋ฅผ ํฌ์ฐฉํ๋ ๊ฒฝ์ฐ์ ๊ฐ์ด ๋ณต๊ตฌํ ์ ์๋ ์ธ์คํด์ค ์ฅ์ ์ ์ฃผ๋ก ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ปค์คํ ์กฐ์ง ์ ์ฑ ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ปจํ ์ด๋์ ํ์ฑ ํ๋ก๋ธ๋ฅผ ํ์ํํ ์ ์์ต๋๋ค.
์๋น์ค์์ ์์ ๋๋ ํ์ฑ ํ๋ก๋ธ ์คํจ๊ฐ ๋ฐ๋ณต๋๋ฉด Cloud Run์ ์ ์ด๋์ง ์๋ ๋น์ ์ ์ข ๋ฃ ๋ฃจํ๊ฐ ๋ฐฉ์ง๋๋๋ก ์ธ์คํด์ค ๋ค์ ์์์ ์ ํํฉ๋๋ค.
ํ๋ก๋ธ ๊ตฌ์ฑ
๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ฉด ์ ๋ฒ์ ์ด ์์ฑ๋ฉ๋๋ค. ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช ์์ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด ์ดํ ๋ฒ์ ์๋ ์ด ๊ตฌ์ฑ ์ค์ ์ด ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
์์ ํ๋ก๋ธ ๊ตฌ์ฑ
Google Cloud ์ฝ์, YAML ๋๋ Terraform์ ์ฌ์ฉํ์ฌ HTTP, TCP, gRPC ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Cloud Run ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ ์๋น์ค์ ๊ฒฝ์ฐ ์ปจํ ์ด๋, ๋ณผ๋ฅจ, ๋คํธ์ํน, ๋ณด์์ ํ์ฅํ์ฌ ์ํ ์ ๊ฒ ์ต์ ์ ํ์ํฉ๋๋ค. ๊ธฐ์กด ์๋น์ค์ ๊ฒฝ์ฐ ๊ตฌ์ฑํ๋ ค๋ ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ์ฌ ์ํ ์ ๊ฒ ์ต์ ์ ํ์ํฉ๋๋ค.
์ปจํ ์ด๋ ์น์ ์์์ํ ์ ๊ฒ์ผ๋ก ์ด๋ํ๊ณ ์ํ ์ ๊ฒ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ์ํ ์ ๊ฒ ์ถ๊ฐ ๊ตฌ์ฑ ํจ๋์ ์ฝ๋๋ค.
์ํ ์ ๊ฒ ์ ํ ์ ํ ๋ฉ๋ด์์ ์ถ๊ฐํ ์ํ ์ ๊ฒ ์ ํ์ ์ ํํฉ๋๋ค.
ํ๋ก๋ธ ์ ํ ์ ํ ๋ฉ๋ด์์ ์ฌ์ฉํ ํ๋ก๋ธ ์ ํ์ ์ ํํฉ๋๋ค(์: HTTP ๋๋ gRPC). ๊ทธ๋ฌ๋ฉด ํ๋ก๋ธ ๊ตฌ์ฑ ์์์ด ํ์๋ฉ๋๋ค.
ํ๋ก๋ธ ๊ตฌ์ฑ์ ํ๋ก๋ธ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ก๋ธ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
HTTP ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ค์์ ์ํํฉ๋๋ค.
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๊ฒฝ๋ก ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค(์:
/
).HTTP ํค๋ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ์ฌ ์ ํ์ ์ปค์คํ ํค๋๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ฆ ํ๋์ ํค๋ ์ด๋ฆ์, ๊ฐ ํ๋์ ํค๋ ๊ฐ์ ์ง์ ํฉ๋๋ค. HTTP ํค๋ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ํค๋๋ฅผ ์ถ๊ฐ๋ก ์ง์ ํฉ๋๋ค.
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
ํฌํธ์ ๊ฒฝ์ฐ ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ด๊ธฐ ์ง์ฐ์ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
๊ธฐ๊ฐ์ ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.์คํจ ๊ธฐ์ค์ ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
์ ํ ์๊ฐ์ ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ์ ๊ธฐ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
gcloud
TCP ์์
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด).
์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
HTTP ์์
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - PATH: HTTP ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก(์:
/ready
) - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์ periodSeconds์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
gRPC ์์
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) GRPC_SERVICE. ์ค์ ํ๋ฉด
grpc.health.v1.Health.Check
rpc๊ฐ ํธ์ถ๋ ๋grpc.health.v1.HealthCheckRequest
์ ์๋น์ค ํ๋์์ ์ฌ์ฉ๋ฉ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์ periodSeconds์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
YAML
TCP ์์
-
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
๋ค์๊ณผ ๊ฐ์ด
startupProbe
์์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด).
์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
HTTP ์์
-
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด
startupProbe
์์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - PATH: HTTP ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก(์:
/ready
) - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ)
httpHeaders
: ๋ค์๊ณผ ๊ฐ์ด HEADER_NAME ๋ฐ HEADER_VALUE ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋๋ ๋ฐ๋ณต๋๋ ์ปค์คํ ํค๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. - (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์ periodSeconds์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
gRPC ์์
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
-
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
๋ค์๊ณผ ๊ฐ์ด
startupProbe
์์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) GRPC_SERVICE. ์ค์ ํ๋ฉด
grpc.health.v1.Health.Check
rpc๊ฐ ํธ์ถ๋ ๋grpc.health.v1.HealthCheckRequest
์ ์๋น์ค ํ๋์์ ์ฌ์ฉ๋ฉ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์ periodSeconds์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
Terraform
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
TCP ์์
๋ค์๊ณผ ๊ฐ์ด startup_probe
์์ฑ์ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
HTTP ์์
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด startup_probe
์์ฑ์ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
gRPC ์์
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
๋ค์๊ณผ ๊ฐ์ด startup_probe
์์ฑ์ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๊ธฐ๋ณธ TCP ์์ ํ๋ก๋ธ
TCP ์์ ํ๋ก๋ธ๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ Cloud Run ์๋น์ค์ ์๋ ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ธฐ๋ณธ ํ๋ก๋ธ๋ ๋ค์๊ณผ ๋์ผํฉ๋๋ค.
startupProbe: tcpSocket: port: CONTAINER_PORT timeoutSeconds: 1 periodSeconds: 10 failureThreshold: 3
CONTAINER_PORT๋ฅผ ์๋น์ค์ ์ค์ ๋ ์ปจํ ์ด๋ ํฌํธ๋ก ๋ฐ๊ฟ๋๋ค.
์ด ํ์ด์ง์ ์๋ ํ๋ก๋ธ ๊ตฌ์ฑ ์น์ ์ ์๋ด์ ๋ฐ๋ผ ์ด๋ฌํ ๊ธฐ๋ณธ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์์ ํ๋ก๋ธ ์๊ตฌ์ฌํญ ๋ฐ ๋์
ํ๋ก๋ธ ์ ํ | ์๊ตฌ์ฌํญ | ๋์ |
---|---|---|
TCP ์์ | ์์ | ๊ธฐ๋ณธ์ ์ผ๋ก Cloud Run์ TCP ์ฐ๊ฒฐ๋ก ์ง์ ๋ ํฌํธ์์ TCP ์์ผ์ ์ฝ๋๋ค. Cloud Run์์ ์ฐ๊ฒฐ์ ์ค์ ํ ์ ์์ผ๋ฉด ์คํจํ ๊ฒ์
๋๋ค. ์์ ํ๋ก๋ธ๊ฐ 240์ด๋ฅผ ์ด๊ณผํ ์ ์๋ ์ง์ ๋ ์๊ฐ( failureThreshold * periodSeconds ) ๋ด์ ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋ฉ๋๋ค. TCP ๊ธฐ๋ณธ๊ฐ๋ ์ฐธ์กฐํ์ธ์. |
HTTP ์์ | HTTP ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ ๋ง๋ค๊ธฐ HTTP/1 ์ฌ์ฉ |
ํ๋ก๋ธ ๊ตฌ์ฑ ํ Cloud Run์ ์๋น์ค ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ(์: /ready )์ HTTP GET ์์ฒญ์ ์ํํฉ๋๋ค. 200 ๊ณผ 400 ์ฌ์ด์ ์๋ต์ ์ฑ๊ณต์ด๊ณ , ๋ค๋ฅธ ๋ชจ๋ ์๋ต์ ์คํจ๋ฅผ ๋ํ๋
๋๋ค.์์ ํ๋ก๋ธ๊ฐ ์ง์ ๋ ์๊ฐ( failureThreshold * periodSeconds ), ์ฆ 240์ด ์ด๋ด์ ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋ฉ๋๋ค.HTTP ํ์ฑ ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ ๊ฒฝ์ฐ ์ง์ ๋ ์๊ฐ ๋ด์ HTTP ์์ ํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ๋ฉด HTTP ํ์ฑ ํ๋ก๋ธ๊ฐ ์์๋ฉ๋๋ค. |
gRPC ์์ | Cloud Run ์๋น์ค์์ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ ๊ตฌํํ๊ธฐ | ์์ ํ๋ก๋ธ๊ฐ ์ง์ ๋ ์๊ฐ(failureThreshold * periodSeconds ), ์ฆ 240์ด ์ด๋ด์ ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋ฉ๋๋ค. |
ํ์ฑ ํ๋ก๋ธ ๊ตฌ์ฑ
Google Cloud ์ฝ์, YAML ๋๋ Terraform์ ์ฌ์ฉํ์ฌ HTTP, ๋ฐ gRPC ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฝ์
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
Google Cloud ์ฝ์์์ Cloud Run ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ ์๋น์ค์ ๊ฒฝ์ฐ ์ปจํ ์ด๋, ๋ณผ๋ฅจ, ๋คํธ์ํน, ๋ณด์์ ํ์ฅํ์ฌ ์ํ ์ ๊ฒ ์ต์ ์ ํ์ํฉ๋๋ค. ๊ธฐ์กด ์๋น์ค์ ๊ฒฝ์ฐ ๊ตฌ์ฑํ๋ ค๋ ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ์ฌ ์ํ ์ ๊ฒ ์ต์ ์ ํ์ํฉ๋๋ค.
์ปจํ ์ด๋ ์น์ ์์์ํ ์ ๊ฒ์ผ๋ก ์ด๋ํ๊ณ ์ํ ์ ๊ฒ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ์ํ ์ ๊ฒ ์ถ๊ฐ ๊ตฌ์ฑ ํจ๋์ ์ฝ๋๋ค.
์ํ ์ ๊ฒ ์ ํ ์ ํ ๋ฉ๋ด์์ ์ถ๊ฐํ ์ํ ์ ๊ฒ ์ ํ์ ์ ํํฉ๋๋ค.
ํ๋ก๋ธ ์ ํ ์ ํ ๋ฉ๋ด์์ ์ฌ์ฉํ ํ๋ก๋ธ ์ ํ์ ์ ํํฉ๋๋ค(์: HTTP ๋๋ gRPC). ๊ทธ๋ฌ๋ฉด ํ๋ก๋ธ ๊ตฌ์ฑ ์์์ด ํ์๋ฉ๋๋ค.
ํ๋ก๋ธ ๊ตฌ์ฑ์ ํ๋ก๋ธ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ํ๋ก๋ธ ์ค์ ์ ๊ตฌ์ฑํฉ๋๋ค.
HTTP ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ค์์ ์ํํฉ๋๋ค.
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๊ฒฝ๋ก ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค(์:
/
).HTTP ํค๋ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ์ฌ ์ ํ์ ์ปค์คํ ํค๋๋ฅผ ์ง์ ํฉ๋๋ค. ์ด๋ฆ ํ๋์ ํค๋ ์ด๋ฆ์, ๊ฐ ํ๋์ ํค๋ ๊ฐ์ ์ง์ ํฉ๋๋ค. HTTP ํค๋ ์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ํค๋๋ฅผ ์ถ๊ฐ๋ก ์ง์ ํฉ๋๋ค.
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
ํฌํธ์ ๊ฒฝ์ฐ ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ฅผ ์ง์ ํฉ๋๋ค.
์ด๊ธฐ ์ง์ฐ์ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
๊ธฐ๊ฐ์ ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 2์ด๋ง๋ค ํ๋ก๋ธ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ
2
๋ก ๋ฐ๊ฟ๋๋ค. 1~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.์คํจ ๊ธฐ์ค์ ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์๋ฅผ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
์ ํ ์๊ฐ์ ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆด ์๊ฐ(์ด)์ ์ง์ ํฉ๋๋ค. ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~240 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
์ถ๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ์ ๊ธฐ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
gcloud
HTTP ํ์ฑ
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - PATH: HTTP ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก(์:
/ready
) - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~3,600 ์ฌ์ด์ ๊ฐ์ ์ง์ ํฉ๋๋ค.๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด
2
๋ฅผ ์ง์ ํ๋ฉด 2์ด๋ง๋ค ํ๋ก๋ธ๊ฐ ์คํ๋ฉ๋๋ค. 1~3,600์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
gRPC ํ์ฑ
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) GRPC_SERVICE. ์ค์ ํ๋ฉด
grpc.health.v1.Health.Check
rpc๊ฐ ํธ์ถ๋ ๋grpc.health.v1.HealthCheckRequest
์ ์๋น์ค ํ๋์์ ์ฌ์ฉ๋ฉ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~3,600 ์ฌ์ด์ ๊ฐ์ ์ง์ ํฉ๋๋ค.๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด
2
๋ฅผ ์ง์ ํ๋ฉด 2์ด๋ง๋ค ํ๋ก๋ธ๊ฐ ์คํ๋ฉ๋๋ค. 1~3,600์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
YAML
HTTP ํ์ฑ
-
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด
livenessProbe
์์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - PATH: HTTP ์๋ํฌ์ธํธ์ ์๋ ๊ฒฝ๋ก(์:
/ready
) - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ)
httpHeaders
: ๋ค์๊ณผ ๊ฐ์ด HEADER_NAME ๋ฐ HEADER_VALUE ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๋๋ ๋ฐ๋ณต๋๋ ์ปค์คํ ํค๋๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. - (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~3,600 ์ฌ์ด์ ๊ฐ์ ์ง์ ํฉ๋๋ค.๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด
2
๋ฅผ ์ง์ ํ๋ฉด 2์ด๋ง๋ค ํ๋ก๋ธ๊ฐ ์คํ๋ฉ๋๋ค. 1~3,600์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
gRPC ํ์ฑ
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
-
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
๋ค์๊ณผ ๊ฐ์ด
livenessProbe
์์ฑ์ ๊ตฌ์ฑํฉ๋๋ค.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE๋ฅผ Cloud Run ์๋น์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/hello:latest
)๋ก ๋ฐ๊ฟ๋๋ค. Artifact Registry๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ REPO_NAME ์ ์ฅ์๊ฐ ์ด๋ฏธ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. URL์ ํ์์LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
์ ๋๋ค. - (์ ํ์ฌํญ) GRPC_SERVICE. ์ค์ ํ๋ฉด
grpc.health.v1.Health.Check
rpc๊ฐ ํธ์ถ๋ ๋grpc.health.v1.HealthCheckRequest
์ ์๋น์ค ํ๋์์ ์ฌ์ฉ๋ฉ๋๋ค. - (์ ํ์ฌํญ) CONTAINER_PORT: ์๋น์ค์ ์ฌ์ฉ๋๋ ์ปจํ ์ด๋ ํฌํธ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) DELAY: ์ฒซ ๋ฒ์งธ ํ๋ก๋ธ๋ฅผ ์ํํ๊ธฐ ์ ์ ์ปจํ ์ด๋๊ฐ ์์๋ ํ ๋๊ธฐํ๋ ์๊ฐ(์ด). 0~240์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 0์ด์ ๋๋ค.
- (์ ํ์ฌํญ) THRESHOLD: ์ปจํ ์ด๋๋ฅผ ์ข ๋ฃํ๊ธฐ ์ ์ ํ๋ก๋ธ๋ฅผ ์ฌ์๋ํ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 3์ ๋๋ค.
- (์ ํ์ฌํญ) TIMEOUT: ํ๋ก๋ธ๊ฐ ํ์์์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ(์ด). ์ด ๊ฐ์
periodSeconds
์ ์ง์ ๋ ๊ฐ์ ์ด๊ณผํ ์ ์์ต๋๋ค. 1~3,600 ์ฌ์ด์ ๊ฐ์ ์ง์ ํฉ๋๋ค.๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค. - (์ ํ์ฌํญ) PERIOD: ํ๋ก๋ธ๋ฅผ ์ํํ ์๊ฐ(์ด). ์๋ฅผ ๋ค์ด
2
๋ฅผ ์ง์ ํ๋ฉด 2์ด๋ง๋ค ํ๋ก๋ธ๊ฐ ์คํ๋ฉ๋๋ค. 1~3,600์ด ์ฌ์ด์ ๊ฐ์ ์ง์ ํ์ธ์. ๊ธฐ๋ณธ๊ฐ์ 10์ด์ ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
Terraform
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
HTTP ํ์ฑ
์๋น์ค๊ฐ HTTP/2๊ฐ ์๋ HTTP/1(Cloud Run ๊ธฐ๋ณธ๊ฐ)์ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด liveness_probe
์์ฑ์ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
gRPC ํ์ฑ
gRPC ํ๋ก๋ธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๊ฐ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ๊ตฌํํ๋์ง ํ์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ GRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ์ ์ฐธ์กฐํ์ธ์.
๋ค์๊ณผ ๊ฐ์ด liveness_probe
์์ฑ์ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
ํ์ฑ ํ๋ก๋ธ ์๊ตฌ์ฌํญ ๋ฐ ๋์
ํ๋ก๋ธ ์ ํ | ์๊ตฌ์ฌํญ | ๋์ |
---|---|---|
HTTP ํ์ฑ | HTTP ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ ๋ง๋ค๊ธฐ HTTP/1 ์ฌ์ฉ |
ํ์ฑ ํ๋ก๋ธ๋ ์์ ํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ ํ์๋ง ์์ํฉ๋๋ค. ํ๋ก๋ธ๊ฐ ๊ตฌ์ฑ๋๊ณ ๋ชจ๋ ์์ ํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ๋ฉด Cloud Run์ด ์๋น์ค ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ(์: /health )์ HTTP GET ์์ฒญ์ ์ํํฉ๋๋ค. 200 ๊ณผ 400 ์ฌ์ด์ ์๋ต์ ์ฑ๊ณต์ด๊ณ , ๋ค๋ฅธ ๋ชจ๋ ์๋ต์ ์คํจ๋ฅผ ๋ํ๋
๋๋ค.ํ์ฑ ํ๋ก๋ธ๊ฐ ์ง์ ๋ ์๊ฐ( failureThreshold * periodSeconds ) ๋ด์ ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ SIGKILL ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ข
๋ฃ๋ฉ๋๋ค. ์ปจํ
์ด๋์์ ์์ง ์ฒ๋ฆฌ ์ค์ธ ๋๋จธ์ง ์์ฒญ์ HTTP ์ํ ์ฝ๋ 503 ์ผ๋ก ์ข
๋ฃ๋ฉ๋๋ค. ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๋ฉด Cloud Run ์๋ ํ์ฅ์ด ์ ์ปจํ
์ด๋ ์ธ์คํด์ค๋ฅผ ์์ํฉ๋๋ค. |
gRPC ํ์ฑ | Cloud Run ์๋น์ค์์ gRPC ์ํ ์ ๊ฒ ํ๋กํ ์ฝ ๊ตฌํํ๊ธฐ | gRPC ์์ ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ๋ฉด ์์ ํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ ํ์๋ง ํ์ฑ ํ๋ก๋ธ๊ฐ ์์๋ฉ๋๋ค. ํ์ฑ ํ๋ก๋ธ๊ฐ ๊ตฌ์ฑ๋๊ณ ๋ชจ๋ ์์ ํ๋ก๋ธ๊ฐ ์ฑ๊ณตํ๋ฉด Cloud Run์ด ์๋น์ค์ ์ํ ์ ๊ฒ ์์ฒญ์ ์ํํฉ๋๋ค. ํ์ฑ ํ๋ก๋ธ๊ฐ ์ง์ ๋ ์๊ฐ( failureThreshold * periodSeconds ) ๋ด์ ์ฑ๊ณตํ์ง ๋ชปํ๋ฉด ์ปจํ
์ด๋๊ฐ SIGKILL ์ ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ข
๋ฃ๋ฉ๋๋ค. ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋๋ฉด Cloud Run ์๋ ํ์ฅ์ด ์ ์ปจํ
์ด๋ ์ธ์คํด์ค๋ฅผ ์์ํฉ๋๋ค. |
HTTP ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ ๋ง๋ค๊ธฐ
HTTP ์์ ํ๋ก๋ธ๋ฅผ ์ํ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ํ๋ก๋ธ์ ์๋ตํ๋๋ก ์๋ํฌ์ธํธ๋ฅผ ์๋น์ค ์ฝ๋์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์๋ํฌ์ธํธ์ ์ด๋ฆ์ ์ํ๋ ๋๋ก ์ง์ ํ ์ ์์ง๋ง(์: /startup
๋๋ /ready
) ๋ค์๊ณผ ๊ฐ์ด ํ๋ก๋ธ ๊ตฌ์ฑ์ path
์ ์ง์ ํ ๊ฐ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
startupProbe: httpGet: path: /ready
/health
์ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ HTTP ํ์ฑ ํ๋ก๋ธ๋ฅผ ์ํ Cloud Run ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํ๋ก๋ธ ๊ตฌ์ฑ์์ ์ ์ํฉ๋๋ค.
livenessProbe: httpGet: path: /health
HTTP ์ํ ์ ๊ฒ ์๋ํฌ์ธํธ๋ ์ธ๋ถ์์ ์ก์ธ์คํ ์ ์์ผ๋ฉฐ ์ธ๋ถ์ ๋ ธ์ถ๋ ๋ค๋ฅธ HTTP ์๋น์ค ์๋ํฌ์ธํธ์ ๋์ผํ ์์น์ ๋ฐ๋ฆ ๋๋ค.
CPU ํ ๋น
- ํ๋ก๋ธ๊ฐ ์คํ๋ ๋ ํญ์ CPU๊ฐ ํ ๋น๋ฉ๋๋ค.
- ๋ชจ๋ ํ๋ก๋ธ์๋ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์๋น ์๊ธ์ด ์ฒญ๊ตฌ๋์ง๋ง ์์ฒญ ๊ธฐ๋ฐ ์๊ธ์ ์ฒญ๊ตฌ๋์ง ์์ต๋๋ค.