์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ์ปค๋ฅํฐ๊ฐ ํ์ ์๋ ์ง์ VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด Cloud Run ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์์ VPC ๋คํธ์ํฌ๋ก ํธ๋ํฝ์ ์ ์กํ๋๋ก ์ค์ ํ ์ ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
ํ๋ก์ ํธ์ VPC ๋คํธ์ํฌ๊ฐ ์์ง ์๋ ๊ฒฝ์ฐ VPC ๋คํธ์ํฌ๋ฅผ ๋ง๋ญ๋๋ค.
Cloud Run ์๋น์ค ๋๋ ์์ ๊ณผ ํจ๊ป ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ณต์ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ ์ฐธ๊ณ ํ์ธ์.
๋ค์ IP ์ฃผ์ ๊ตฌ์ฑ ์น์ ์ ๊ฒํ ํ์ธ์.
์๋ธ๋ท์์ IP ์ฃผ์ ํ ๋น์ ๊ดํ ์๋ด๋ IP ์ฃผ์ ํ ๋น์์ ํ์ธํ์ธ์.
๋์ฒด IP ์ฃผ์ ๋ฒ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ IP ์ฃผ์ ์์ง ์ ๋ต
์ ํ์ฌํญ
Cloud Run ์๋น์ค, ์์ , ์์ ์ ํ์๋ ๋ค์ ์ ํ์ฌํญ์ด ์ ์ฉ๋ฉ๋๋ค.
- ์ง์ VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ธ์คํด์ค ์์ ์ ์ฐ๊ฒฐ ์ค์ ์ด 1๋ถ ์ด์ ์ง์ฐ๋ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์ฒญ์ ์๋ฝํ๊ธฐ ์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฌ์ฉํ๋ ์ด๊ทธ๋ ์ค ๋์์ ๋ํ ์ฐ๊ฒฐ์ ํ ์คํธํ๋ HTTP ์์ ํ๋ก๋ธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด ์ถ๊ตฌ ์ฐ๊ฒฐ ํ ์คํธ๋ ์ฌ์๋๋ฅผ ๊ตฌํํด์ผ ํฉ๋๋ค. ๋๋ ์์ ํ๋ก๋ธ๊ฐ ์ฌ์๋ ์ญํ ์ ํ๋๋ก ์ ์ ํ ๊ธฐ๊ฐ ๋ฐ ์๊ณ๊ฐ ๊ตฌ์ฑ์ผ๋ก ์ค์ ๋์ด์ผ ํฉ๋๋ค.
- Cloud Run์ ๊ฐ๋ณ ์ธ์คํด์ค๋น ์ต๋ 1Gbps์ ์ฒ๋ฆฌ๋์ ์ง์ํฉ๋๋ค. ์ด ์์ ์ด๊ณผํ๋ฉด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
Cloud Run ์ฌ์ฉ ํ ๋น๋์ Direct VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ ์ ์๋ ์ต๋ ์ธ์คํด์ค ์๋ฅผ ์ ํํฉ๋๋ค. ์ต๋ ์๋ Cloud Run ๋ฒ์ ๋๋ ์์ ์คํ๋ณ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ธฐ๋ณธ ํ๋๋ฅผ ๋๋ฆฌ๋ ค๋ฉด ํ ๋น๋์ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ธ์.
- Cloud Run ์๋น์ค, ์์ , ์์ ์ ํ์์ ๋คํธ์ํน ์ธํ๋ผ ์ ์ง๋ณด์ ์ด๋ฒคํธ ์ค์ ์ฐ๊ฒฐ ์ค๋จ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋น์ ๊ธฐ์ ์ธ ์ฐ๊ฒฐ ์ฌ์ค์ ์ ์ฒ๋ฆฌํ ์ ์๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋ด๋ถ IPv6 ํธ๋ํฝ์ ๋ํ Direct VPC ์ด๊ทธ๋ ์ค ์ง์์ ํ๋ฆฌ๋ทฐ์์๋ง ์ ๊ณต๋ฉ๋๋ค.
- Private NAT๋ ํ๋ฆฌ๋ทฐ์์๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์ ํญ๋ชฉ์ ์ง์ VPC ์ด๊ทธ๋ ์ค์์ ์ง์๋์ง ์์ต๋๋ค.
- VPC ํ๋ฆ ๋ก๊ทธ๋ Cloud Run ์๋น์ค๋ ๋ฒ์ ์ ์ด๋ฆ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
- VPC ํ๋ฆ ๋ก๊ทธ๋ Cloud Run ๋๋ ์จํ๋ ๋ฏธ์ค ๋จธ์ ๊ณผ ๊ฐ์ ๋นVM ๋ฆฌ์์ค์์๋ ๋ณด๊ณ ๋์ง ์์ต๋๋ค.
- ํจํท ๋ฏธ๋ฌ๋ง
- ์ฐ๊ฒฐ ํ ์คํธ๋ฅผ ํฌํจํ Network Intelligence Center
- VPC ๋คํธ์ํฌ๋ฅผ ํตํ ์ธ๋ถ IPv6 ํธ๋ํฝ
- ์ธ๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋คํธ์ํฌ ํ๊ทธ ๋๋ ์๋น์ค ID
- ๋ฐฉํ๋ฒฝ ๊ท์น์์๋ Cloud Run ์ํฌ๋ก๋์ ์ฐ๊ฒฐ๋ Resource Manager ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- 1์๊ฐ ๋๊ฒ ์คํ๋๋ Cloud Run ์์
์์ ์ฐ๊ฒฐ ์ค๋จ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ ์์
์ ํ ๋จธ์ ์์ ๋ค๋ฅธ ๋จธ์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ์ ์ง๋ณด์ ์ด๋ฒคํธ ์ค์ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ปจํ
์ด๋๋ ์ด๋ฒคํธ 10์ด ์ ์
SIGTSTP
์ ํธ๋ฅผ ๋ฐ๊ณ ์ด๋ฒคํธ ํSIGCONT
์ ํธ๋ฅผ ๋ฐ์ต๋๋ค. ์ปจํ ์ด๋๊ฐSIGCONT
์ ํธ๋ฅผ ์์ ํ๋ฉด ์ฐ๊ฒฐ์ ์ฌ์๋ํฉ๋๋ค.
IP ์ฃผ์ ํ ๋น
Cloud Run ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ VPC ๋คํธ์ํฌ์ ๋ฐฐ์นํ๋ ค๋ฉด VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. Cloud Run์ ์๋ธ๋ท์์ IP ์ฃผ์๋ฅผ ํ ๋นํฉ๋๋ค.
IP ์ฃผ์๋ ์์ ์ฃผ์์ด๋ฏ๋ก ๊ฐ๋ณ IP์ ๋ฐ๋ผ ์ ์ฑ ์ ๋ง๋ค์ง ๋ง์ธ์. ๋ฐฉํ๋ฒฝ ๊ท์น๊ณผ ๊ฐ์ด IP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ฑ ์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ ์ ์ฒด ์๋ธ๋ท์ IP ์ฃผ์ ๋ฒ์๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์๋น์ค, ์์ ๋๋ ์์ ์ ํ์์ ์ฌ์ฉํ๋ ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ ๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท ๊ฐ์ ์ฌ์ฉํ๋ ์ ๋ฒ์ ์ ๋ฐฐํฌํ๊ฑฐ๋ ์ ์์ ํ์คํฌ๋ฅผ ์คํํ์ธ์.
์์ง ํ์ฅ ๋ฐ ์ถ์
ํธ๋ํฝ์ด ๊ธ์ฆํ ๋ ๋ ๋น ๋ฅด๊ฒ ์์ง ํ์ฅํ ์ ์๋๋ก Cloud Run์์๋ ํ ๋ฒ์ 16๊ฐ(28
์๋ธ๋ท ๋ง์คํฌ)์ ๋ธ๋ก์ผ๋ก IP ์ฃผ์๋ฅผ ์์ฝํฉ๋๋ค.
Cloud Run์ด ํ ๋นํ IP ์ฃผ์๋ฅผ ํ์ธํ์ธ์.
Cloud Run์์ ์ฌ์ฉํ ์ ์๋ IPv4 ์ฃผ์๊ฐ ์ถฉ๋ถํ์ง ํ์ธํ๋ ค๋ฉด ์๋ธ๋ท์ IPv4 ์ฃผ์ ๋ฒ์๊ฐ /26
์ด์์ด์ด์ผ ํฉ๋๋ค.
IP ํ ๋น ํจ์จ์ฑ๊ณผ ๊ด๋ฆฌ ํธ์์ฑ์ ์ํด ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ ๋ฐฐ์นํฉ๋๋ค. IPv4 ์ฃผ์ ๊ณต๊ฐ์ด ์ ํ๋ ๊ฒฝ์ฐ ์ง์๋๋ IPv4 ๋ฒ์๋ฅผ ์ฐธ์กฐํ์ฌ ๋ ๋ง์ ์ต์ ์ ํ์ธํ์ธ์.
์๋ธ๋ท์ ์ญ์ ํ๋ ค๋ฉด ๋จผ์ Cloud Run ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ์ญ์ ํ๊ฑฐ๋ ์ฌ๋ฐฐํฌํ์ฌ ์๋ธ๋ท ์ฌ์ฉ์ ์ค์งํ ํ 1~2์๊ฐ ์ ๋ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์๋น์ค ๋ฐ ์์ ์ ํ์ IP ์ฃผ์ ์๋น
์์ ์ ์ธ ์ํ์์ Cloud Run์ ์ธ์คํด์ค ์์ 2๋ฐฐ(2X)๋งํผ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฒ์ ์ด ์ถ์๋๋ฉด Cloud Run์ ์ต๋ 20๋ถ ๋์ IP ์ฃผ์๋ฅผ ๋ณด๊ดํฉ๋๋ค. ํฉํด์ 2๋ฐฐ ์ด์์ IP ์ฃผ์์ ๋ฒ์ ์ ๋ฐ์ดํธ๋ฅผ ๊ณ ๋ คํ ๋ฒํผ๋ฅผ ์์ฝํ์ธ์.
์๋ฅผ ๋ค์ด revision 1
์ด ์ธ์คํด์ค 100๊ฐ์์ 0์ผ๋ก ์ถ์๋๊ณ revision 2
๊ฐ 0์์ ์ต๋ 100๊ฐ๋ก ํ์ฅ๋๋๋ก ๋ฒ์ ์ ์
๊ทธ๋ ์ด๋ํ๋ฉด Cloud Run์ ์ถ์ ํ ์ต๋ 20๋ถ ๋์ revision 1
IP ์ฃผ์๋ฅผ ์ ์งํฉ๋๋ค. 20๋ถ์ ๋ณด๊ด ๊ธฐ๊ฐ ๋์ IP ์ฃผ์((100 + 100) * 2
)๋ฅผ ์ต์ 400๊ฐ ์ด์ ์์ฝํด์ผ ํฉ๋๋ค.
์์ ์ IP ์๋น
Cloud Run ์์
์ ๊ฒฝ์ฐ ๊ฐ ํ์คํฌ๋ ์คํ ๊ธฐ๊ฐ ๋์ 1๊ฐ์ IP ์ฃผ์๋ฅผ ์๋นํ๋ฉฐ ์๋ฃํ๋ ๋ฐ ์ถ๊ฐ 7๋ถ์ด ์์๋ฉ๋๋ค. ์๋ธ๋ท์ด ๋ชจ๋ ๋์ ์์
ํ์คํฌ ์คํ์ ์์ฉํ ๋งํผ ์ถฉ๋ถํ ํฐ์ง ํ์ธํฉ๋๋ค. ์ต์ ์์ฝ /26
์๋ธ๋ท์ด ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋งค์ผ ์คํ๋๊ณ ํญ์ ๋ค์ ์คํ ์ต์ 7๋ถ ์ ์ ์๋ฃ๋๋ ๋จ์ผ ํ์คํฌ ์์ ์ ์๋ธ๋ท์์ ์ต๋ 1๊ฐ์ IP ์ฃผ์๋ฅผ ์๋นํฉ๋๋ค.
- 10๋ถ๋ง๋ค ์คํ๋๊ณ ๊ฐ ํ์คํฌ๊ฐ 15๋ถ ๋์ ์คํ๋๋ 10๊ฐ ํ์คํฌ ์์
์ ๋ค์ ์์ ๊ฐ์ด ํ์คํฌ๋น 22๋ถ ๋์ 1๊ฐ์ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค(์คํ 3๊ฐ๊ฐ ๋์์ IP ์ฃผ์๋ฅผ ์๋นํจ). ๋ฐ๋ผ์ ์์
์ ์์ ์ ์ธ ์ํ์์ 30๊ฐ์ IP ์ฃผ์๋ฅผ ์๋นํฉ๋๋ค.
- ์คํํ๋ ๋ฐ 1๋ถ์ด ๊ฑธ๋ฆฌ๊ณ ๋ถ๋น 100๋ฒ ์คํ๋๋ ๋จ์ผ ํ์คํฌ ์์ ์๋ ์คํ์ ์ ํํ ์๊ฐ์ ๋ฐ๋ผ ์ฝ 800๊ฐ์ IP ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
์ง์๋๋ IPv4 ๋ฒ์
Cloud Run์ ์๋ธ๋ท์ ๋ํด ๋ค์ IPv4 ๋ฒ์๋ฅผ ์ง์ํฉ๋๋ค.
IAM ๊ถํ ์ค์
๋ค์ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ Cloud Run์์ VPC ๋คํธ์ํฌ์ ์ก์ธ์คํ ์ ์๋๋ก ํฉ๋๋ค.
Cloud Run ์๋น์ค ์์ด์ ํธ ์ญํ : ๊ธฐ๋ณธ์ ์ผ๋ก Cloud Run ์๋น์ค ์์ด์ ํธ์๋ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์๋ Cloud Run ์๋น์ค ์์ด์ ํธ ์ญํ (
roles/run.serviceAgent
)์ด ์์ต๋๋ค.์ปค์คํ ๊ถํ: ๋ณด๋ค ์ธ๋ถ์ ์ผ๋ก ์ ์ดํ ์ ์๋๋ก ํ๋ก์ ํธ์ ๋ํ ๋ค์ ์ถ๊ฐ ๊ถํ์ Cloud Run ์๋น์ค ์์ด์ ํธ์ ๋ถ์ฌํฉ๋๋ค.
compute.networks.get
compute.subnetworks.get
- ํ๋ก์ ํธ ๋๋ ํน์ ์๋ธ๋ท์ ๋ํ
compute.subnetworks.use
๊ถํ compute.addresses.get
compute.addresses.list
compute.addresses.createInternal
compute.addresses.deleteInternal
compute.regionOperations.get
Compute ๋คํธ์ํฌ ์ฌ์ฉ์ ์ญํ : ๊ธฐ๋ณธ Cloud Run ์๋น์ค ์์ด์ ํธ ์ญํ ์ด๋ ์ปค์คํ ๊ถํ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ Cloud Run ์๋น์ค ์์ด์ ํธ ์๋น์ค ๊ณ์ ์ ๋ํ Compute ๋คํธ์ํฌ ์ฌ์ฉ์ ์ญํ (
roles/compute.networkUser
)์ ๋ถ์ฌํฉ๋๋ค.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID: ํ๋ก์ ํธ์ ID์ ๋๋ค.
- PROJECT_NUMBER: Cloud Run ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๋ ํ๋ก์ ํธ ๋ฒํธ
Cloud Run ๋ฆฌ์์ค ๋ฐฐํฌ
๋ณด์ ํ Cloud Run ๋ฆฌ์์ค์ ๋ฐ๋ผ ๋ค์ ์น์ ์ค ํ๋์ ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์๋น์ค ๋ฐฐํฌ
Direct VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด Cloud Run ์๋น์ค๊ฐ ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ์ปค๋ฅํฐ ์์ด VPC ๋คํธ์ํฌ๋ก ํธ๋ํฝ์ ์ ์กํ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ๋น์ฉ์ ์๋น์ค ์์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก 0์ผ๋ก ์กฐ์ ๋ฉ๋๋ค. VPC ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด Cloud Run ์๋น์ค ๋ฒ์ ์์ ์ง์ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋คํธ์ํฌ ๋ณด์์ ๋์ฑ ์ธ๋ถํํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์, Google Cloud CLI, YAML ๋๋ Terraform์ ์ฌ์ฉํ์ฌ ์๋น์ค์ ํจ๊ป Direct VPC ์ด๊ทธ๋ ์ค๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฝ์
๋ฐฐํฌํ ์ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์๋น์ค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ํ์์ ๋ฐ๋ผ ์ด๊ธฐ ์๋น์ค ์ค์ ํ์ด์ง๋ฅผ ์์ฑํ ํ ์ปจํ ์ด๋, ๋ณผ๋ฅจ, ๋คํธ์ํน, ๋ณด์์ ํด๋ฆญํ์ฌ ์๋น์ค ๊ตฌ์ฑ ํ์ด์ง๋ฅผ ํผ์นฉ๋๋ค.
๋คํธ์ํน ํญ์ ํด๋ฆญํฉ๋๋ค.
์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ํด VPC์ ์ฐ๊ฒฐ์ ํด๋ฆญํฉ๋๋ค.
VPC๋ก ์ง์ ํธ๋ํฝ ์ ์ก์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ ํ๋์์ ํธ๋ํฝ์ ์ ์กํ VPC ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
์๋ธ๋ท ํ๋์์ ์๋น์ค๊ฐ IP ์ฃผ์๋ฅผ ์์ ํ ์๋ธ๋ท์ ์ ํํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
(์ ํ์ฌํญ) ์๋น์ค ๋๋ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ๋คํธ์ํฌ ํ๊ทธ๋ ๋ฒ์ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์๋น์ค ๋ฒ์ ์
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.ํธ๋ํฝ ๋ผ์ฐํ ์ ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
- VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์กํ๋๋ก ๋น๊ณต๊ฐ IP์ ๋ํ ์์ฒญ๋ง VPC๋ก ๋ผ์ฐํ ํฉ๋๋ค.
- VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ ์กํ๋ ค๋ฉด ๋ชจ๋ ํธ๋ํฝ์ VPC๋ก ๋ผ์ฐํ ํฉ๋๋ค.
๋ง๋ค๊ธฐ ๋๋ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋น์ค๊ฐ VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ๋คํธ์ํน ํญ์ ํด๋ฆญํฉ๋๋ค. ๋คํธ์ํฌ์ ์๋ธ๋ท์ VPC ์นด๋์ ๋์ด๋ฉ๋๋ค.
์ด์ ๋ฐฉํ๋ฒฝ ๊ท์น์์ ํ์ฉํ๋ ๋๋ก Cloud Run ์๋น์ค์์ VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฆฌ์์ค๋ก ์์ฒญ์ ์ ์กํ ์ ์์ต๋๋ค.
gcloud
Google Cloud CLI์์ ์ปค๋ฅํฐ ์์ด Cloud Run ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
gcloud
๊ตฌ์ฑ์์๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.gcloud components update
ํ๋ก์ ํธ์ Compute Engine API๊ฐ ์ฌ์ฉ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.
gcloud services enable compute.googleapis.com
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cloud Run ์๋น์ค๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE_NAME: 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
ํ์์ ๋ฐ๋ฆ ๋๋ค. - (์ ํ์ฌํญ) NETWORK: VPC ๋คํธ์ํฌ ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท, ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- (์ ํ์ฌํญ) SUBNET: ์๋ธ๋ท ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- ์ ํ์ฌํญ: NETWORK_TAG_NAMES๋ฅผ ์๋น์ค์ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ๋ฒ์ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์๋น์ค ๋ฒ์ ์
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. - EGRESS_SETTING: ์ด๊ทธ๋ ์ค ์ค์ ๊ฐ
all-traffic
: ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กprivate-ranges-only
: VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์ก
- REGION: ์๋น์ค ๋ฆฌ์
์๋น์ค๊ฐ VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run services describe SERVICE_NAME \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
SERVICE_NAME
: ์๋น์ค ์ด๋ฆREGION
: ์ด์ ๋จ๊ณ์์ ์ง์ ํ ์๋น์ค์ ๋ฆฌ์
์ถ๋ ฅ์๋ ๋คํธ์ํฌ, ์๋ธ๋ท, ์ด๊ทธ๋ ์ค ์ค์ ์ ์ด๋ฆ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
์ด์ ๋ฐฉํ๋ฒฝ ๊ท์น์์ ํ์ฉํ๋ ๋๋ก Cloud Run ์๋น์ค์์ VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฆฌ์์ค๋ก ์์ฒญ์ ์ ์กํ ์ ์์ต๋๋ค.
YAML
์ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์๋น์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE --format export > service.yaml
๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- SERVICE_NAME: Cloud Run ์๋น์ค ์ด๋ฆ ์๋น์ค ์ด๋ฆ์ 49์ ์ดํ์ฌ์ผ ํ๋ฉฐ ๋ฆฌ์ ๋ฐ ํ๋ก์ ํธ๋ณ๋ก ๊ณ ์ ํด์ผ ํฉ๋๋ค.
- REGION: Cloud Run ์๋น์ค์ ๋ฆฌ์ . ์ด ๋ฆฌ์ ์ ์๋ธ๋ท ๋ฆฌ์ ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) NETWORK: VPC ๋คํธ์ํฌ ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท, ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- (์ ํ์ฌํญ) SUBNET: ์๋ธ๋ท ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- (์ ํ์ฌํญ) NETWORK_TAG_NAMES๋ฅผ ์๋น์ค์ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ๋ฒ์ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์๋น์ค ๋ฒ์ ์
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. - EGRESS_SETTING: ์ด๊ทธ๋ ์ค ์ค์ ๊ฐ
all-traffic
: ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กprivate-ranges-only
: VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์ก
- IMAGE: ์๋น์ค ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ URL
๋ํ ํ๊ฒฝ ๋ณ์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ํ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ตฌ์ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํฉ๋๋ค.
gcloud run services replace service.yaml
Terraform
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
main.tf
ํ์ผ์ ๋ค์์ ์ถ๊ฐํฉ๋๋ค.
์ ํ์ ์ผ๋ก ์๋น์ค์ ๋ํ ์ธ์ฆ๋์ง ์์ ์ก์ธ์ค๋ฅผ ํ์ฉํ๋ ค๋ฉด ์๋น์ค๋ฅผ ๊ณต๊ฐ๋ก ์ค์ ํฉ๋๋ค.
์์ ๋ง๋ค๊ธฐ
Direct VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด Cloud Run ์์ ์ด ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ์ปค๋ฅํฐ ์์ด VPC ๋คํธ์ํฌ๋ก ํธ๋ํฝ์ ์ ์กํ ์ ์์ต๋๋ค. VPC ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด Cloud Run ์์ ์์ ์ง์ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋คํธ์ํฌ ๋ณด์์ ๋์ฑ ์ธ๋ถํํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์, Google Cloud CLI, YAML์ ์ฌ์ฉํ์ฌ ์์ ๊ณผ ํจ๊ป Direct VPC ์ด๊ทธ๋ ์ค๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ฝ์
์ ์์ ์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์์ ํญ์ ํด๋ฆญํ๊ณ ํ์์ ๋ฐ๋ผ ์ด๊ธฐ ์์ ์ค์ ํ์ด์ง๋ฅผ ์์ฑํฉ๋๋ค. ๊ธฐ์กด ์์ ์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์์ ์ ํด๋ฆญํ ํ ์์ ์ ํด๋ฆญํฉ๋๋ค.
์ปจํ ์ด๋, ๋ณ์ ๋ฐ ๋ณด์ ๋น๋ฐ, ์ฐ๊ฒฐ, ๋ณด์์ ํด๋ฆญํ์ฌ ์์ ์์ฑ ํ์ด์ง๋ฅผ ํผ์นฉ๋๋ค.
์ฐ๊ฒฐ ํญ์ ํด๋ฆญํฉ๋๋ค.
์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ํด VPC์ ์ฐ๊ฒฐ์ ํด๋ฆญํฉ๋๋ค.
VPC๋ก ์ง์ ํธ๋ํฝ ์ ์ก์ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํฌ ํ๋์์ ํธ๋ํฝ์ ์ ์กํ VPC ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
์๋ธ๋ท ํ๋์์ ์์ ์ด IP ์ฃผ์๋ฅผ ์์ ํ ์๋ธ๋ท์ ์ ํํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์์ ์ฌ๋ฌ ์์ ์ ์คํํ ์ ์์ต๋๋ค.
ํธ๋ํฝ ๋ผ์ฐํ ์ ๋ค์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
- VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์กํ๋๋ก ๋น๊ณต๊ฐ IP์ ๋ํ ์์ฒญ๋ง VPC๋ก ๋ผ์ฐํ ํฉ๋๋ค.
- VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ ์กํ๋ ค๋ฉด ๋ชจ๋ ํธ๋ํฝ์ VPC๋ก ๋ผ์ฐํ ํฉ๋๋ค.
(์ ํ์ฌํญ) ์๋น์ค ๋๋ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ๋คํธ์ํฌ ํ๊ทธ๋ ๋ฒ์ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์๋น์ค ๋ฒ์ ์
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.(์ ํ์ฌํญ) ์์ ์ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค. ์์ ์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๋ ์คํ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์์ ์คํ์๋
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ์์ ์ ์์ต๋๋ค.๋ง๋ค๊ธฐ ๋๋ ์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ ์ด VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ์์ ์ ํด๋ฆญํ ๋ค์ ๊ตฌ์ฑ ํญ์ ํด๋ฆญํฉ๋๋ค. ๋คํธ์ํฌ์ ์๋ธ๋ท์ VPC ์นด๋์ ๋์ด๋ฉ๋๋ค.
์ด์ ๋ฐฉํ๋ฒฝ ๊ท์น์์ ํ์ฉํ๋ ๋๋ก Cloud Run ์์ ์ ์คํํ๊ณ VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฆฌ์์ค๋ก ์์ ์ ์์ฒญ์ ์ ์กํ ์ ์์ต๋๋ค.
gcloud
Google Cloud CLI์์ ์ปค๋ฅํฐ ์์ด Cloud Run ์์ ์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
gcloud
๊ตฌ์ฑ์์๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.gcloud components update
ํ๋ก์ ํธ์ Compute Engine API๊ฐ ์ฌ์ฉ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.
gcloud services enable compute.googleapis.com
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cloud Run ์์ ์ ๋ง๋ญ๋๋ค.
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- JOB_NAME: Cloud Run ์์ ์ด๋ฆ
- IMAGE_URL: ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ(์:
us-docker.pkg.dev/cloudrun/container/job:latest
) - (์ ํ์ฌํญ) NETWORK: VPC ๋คํธ์ํฌ ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- (์ ํ์ฌํญ) SUBNET: ์๋ธ๋ท ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- ์ ํ์ฌํญ: NETWORK_TAG_NAMES๋ฅผ ์์
์ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์์
์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๋ ์คํ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์์
์คํ์๋
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ์์ ์ ์์ต๋๋ค. - EGRESS_SETTING: ์ด๊ทธ๋ ์ค ์ค์ ๊ฐ
all-traffic
: ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กprivate-ranges-only
: VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์ก
- REGION: ์์ ์ ๋ฆฌ์
์์ ์ด VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run jobs describe JOB_NAME \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
JOB_NAME
: ์์ ์ด๋ฆREGION
: ์ด์ ๋จ๊ณ์์ ์ง์ ํ ์์ ์ ๋ฆฌ์
์ถ๋ ฅ์๋ ๋ค์๊ณผ ๊ฐ์ด ๋คํธ์ํฌ์ ์๋ธ๋ท์ ์ด๋ฆ์ด ํฌํจ๋ฉ๋๋ค.
VPC network: Network: default Subnet: default
์ด์ ๋ฐฉํ๋ฒฝ ๊ท์น์์ ํ์ฉํ๋ ๋๋ก Cloud Run ์์ ์ ์คํํ๊ณ VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฆฌ์์ค๋ก ์์ ์ ์์ฒญ์ ์ ์กํ ์ ์์ต๋๋ค.
YAML
์ ์์ ์ ๋ง๋๋ ๊ฒฝ์ฐ์๋ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค. ๊ธฐ์กด ์์ ์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run jobs describe JOB_NAME --format export > job.yaml
๋ค์ ์์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- JOB_NAME: Cloud Run ์์ ์ด๋ฆ ์์ ์ด๋ฆ์ 49์ ์ดํ์ฌ์ผ ํ๋ฉฐ ๋ฆฌ์ ๋ฐ ํ๋ก์ ํธ๋ณ๋ก ๊ณ ์ ํด์ผ ํฉ๋๋ค.
- REGION: Cloud Run ์์ ์ ๋ฆฌ์ . ์ด ๋ฆฌ์ ์ ์๋ธ๋ท์ ๋ฆฌ์ ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
- (์ ํ์ฌํญ) NETWORK: VPC ๋คํธ์ํฌ ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท, ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- (์ ํ์ฌํญ) SUBNET: ์๋ธ๋ท ์ด๋ฆ. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- ์ ํ์ฌํญ: NETWORK_TAG_NAMES๋ฅผ ์์
์ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์์
์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๋ ์คํ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์์
์คํ์๋
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ์์ ์ ์์ต๋๋ค. - EGRESS_SETTING: ์ด๊ทธ๋ ์ค ์ค์ ๊ฐ
all-traffic
: ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กprivate-ranges-only
: VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ์ ์ ์ก
- IMAGE: ์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง์ URL
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋ง๋ค๊ฑฐ๋ ์ ๋ฐ์ดํธํฉ๋๋ค.
gcloud run jobs replace job.yaml
์์ ์ ํ ๋ฐฐํฌ
์ง์ VPC ์ด๊ทธ๋ ์ค๋ฅผ ์ฌ์ฉํ๋ฉด Cloud Run ์์ ์ ํ์ด ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ์ปค๋ฅํฐ ์์ด VPC ๋คํธ์ํฌ๋ก ํธ๋ํฝ์ ์ ์กํ ์ ์์ต๋๋ค. ๋คํธ์ํฌ ๋น์ฉ์ ์์ ์ ํ ์์ฒด์ ๋ง์ฐฌ๊ฐ์ง๋ก 0์ผ๋ก ์กฐ์ ๋ฉ๋๋ค. VPC ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด Cloud Run ์์ ์ ํ ๋ฒ์ ์์ ์ง์ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ๋คํธ์ํฌ ๋ณด์์ ๋์ฑ ์ธ๋ถํํ ์ ์์ต๋๋ค.
Google Cloud CLI๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ํ๊ณผ ํจ๊ป ์ง์ VPC ์ด๊ทธ๋ ์ค๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
gcloud
Google Cloud CLI์์ ์ปค๋ฅํฐ ์์ด Cloud Run ์์ ์ ํ์ ๋ฐฐํฌํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
gcloud
๊ตฌ์ฑ์์๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.gcloud components update
ํ๋ก์ ํธ์ Compute Engine API๊ฐ ์ฌ์ฉ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.
gcloud services enable compute.googleapis.com
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Cloud Run ์์ ์ ํ์ ๋ฐฐํฌํฉ๋๋ค.
gcloud beta run worker-pools deploy WORKER_POOL \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- WORKER_POOL์ Cloud Run ์์ ์ ํ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์์ ์ ํ ์ด๋ฆ์ 49์(์๋ฌธ ๊ธฐ์ค) ์ดํ์ฌ์ผ ํ๋ฉฐ, ๋ฆฌ์ ๋ฐ ํ๋ก์ ํธ๋ณ๋ก ๊ณ ์ ํ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํ๊ณ , ํ๋ก์ ํธ์ ๊ธฐ์กด ์๋น์ค ์ด๋ฆ๊ณผ ๋์ผํ ์ด๋ฆ์ ๊ณต์ ํด์๋ ์ ๋ฉ๋๋ค. ์์ ์ ํ์ด ์์ง ์์ผ๋ฉด ๋ฐฐํฌ ์ค์ ์ด ๋ช ๋ น์ด๋ก ์์ ์ ํ์ด ์์ฑ๋ฉ๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์์ ํ ์๋ตํ ์ ์์ง๋ง ์๋ตํ๋ฉด ์์ ์ ํ ์ด๋ฆ์ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
- IMAGE_URL์ ์์
์ ํ์ด ํฌํจ๋ ์ปจํ
์ด๋ ์ด๋ฏธ์ง์ ๋ํ ์ฐธ์กฐ๋ก ๋ฐ๊ฟ๋๋ค(์:
us-docker.pkg.dev/cloudrun/container/worker-pool:latest
). - ์ ํ์ฌํญ:NETWORK์ VPC ๋คํธ์ํฌ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท, ๋๋ ๋ ๋ค๋ฅผ ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค.
- ์ ํ์ฌํญ: SUBNET์ ์๋ธ๋ท ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- (์ ํ์ฌํญ) NETWORK_TAG_NAMES๋ฅผ ์์
์ ํ๊ณผ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ๋ฒ์ ์์ค์์ ์ง์ ๋ฉ๋๋ค. ๊ฐ ์์
์ ํ ๋ฒ์ ์
network-tag-2
์ ๊ฐ์ ๋ค๋ฅธ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. - EGRESS_SETTING: ์ด๊ทธ๋ ์ค ์ค์ ๊ฐ
all-traffic
: ๋ชจ๋ ์์๋ฐ์ด๋ ํธ๋ํฝ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กprivate-ranges-only
: VPC ๋คํธ์ํฌ๋ฅผ ํตํด ๋ด๋ถ ์ฃผ์๋ก๋ง ํธ๋ํฝ ์ ์ก
- REGION์ ์์ ์ ํ์ ๋ฆฌ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์์ ์ ํ์ด VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud beta run worker-pools describe WORKER_POOL \ --region=REGION
๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
WORKER_POOL
์ ์์ ์ ํ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.REGION
์ ์ด์ ๋จ๊ณ์์ ์ง์ ํ ์์ ์ ํ์ ๋ฆฌ์ ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ถ๋ ฅ์๋ ๋คํธ์ํฌ, ์๋ธ๋ท, ์ด๊ทธ๋ ์ค ์ค์ ์ ์ด๋ฆ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
์ด์ ๋ฐฉํ๋ฒฝ ๊ท์น์์ ํ์ฉํ๋ ๋๋ก Cloud Run ์์ ์ ํ์์ VPC ๋คํธ์ํฌ์ ๋ชจ๋ ๋ฆฌ์์ค๋ก ์์ฒญ์ ์ ์กํ ์ ์์ต๋๋ค.
์ด์ค ์คํ ์๋น์ค ๋ฐ ์์ ์ค์
Cloud Run ์๋น์ค๋ ์์ ์ ๋ด๋ถ IPv6 ๋ฒ์๊ฐ ์๋ ์ด์ค ์คํ ์๋ธ๋ท์ ์ถ๊ฐํ๋ ค๋ฉด ์ด์ค ์คํ ์๋น์ค ๋ฐ ์์ ์ค์ ์ ์ฐธ๊ณ ํ์ธ์.
๋ฐฉํ๋ฒฝ ๊ท์น์ผ๋ก ์ก์ธ์ค ์ ํ
VPC ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ฌ์ฉํ์ฌ VPC ๋คํธ์ํฌ์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ํํฉ๋๋ค. ๋ค์ ์ ๋ต ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ์ ํ์ฌํญ์ ์ถ๊ฐํฉ๋๋ค.
- ์๋ธ๋ท IP ๋ฒ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๋๋ ์์ ์ ์ฐธ์กฐํ๋ ์ธ๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค.
์๋น์ค ๋๋ ์์ ์ ์ฐธ์กฐํ๋ ์ด๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค.
์ด๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์์๋ ์ฐ๊ฒฐ๋ ์๋น์ค ๊ณ์ ์๋น์ค ID, ์๋ธ๋ท IP ๋ฒ์ ๋๋ ์ฐ๊ฒฐ๋๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค๋ ์์ ์ ์ฐธ์กฐํฉ๋๋ค.
์ด๊ทธ๋ ์ค์ฉ ๋คํธ์ํฌ ํ๊ทธ
์ด๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์์ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ๋ณด์์ ๊ฐํํฉ๋๋ค.
์ฝ์
๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์๋น์ค๋ ์์ ๊ณผ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
Google Cloud ์ฝ์์์ Cloud Run ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ฐ๊ฒฐํ ์๋น์ค๋ ์์ ์ ํด๋ฆญํ ํ ์๋น์ค์ ๊ฒฝ์ฐ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ, ์์ ์ ๊ฒฝ์ฐ ์์ ์ ํด๋ฆญํฉ๋๋ค.
์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํน ํญ์, ์์ ์ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ํญ์ ํด๋ฆญํฉ๋๋ค.
์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ํด VPC์ ์ฐ๊ฒฐ ๋ฐ VPC๋ก ์ง์ ํธ๋ํฝ ์ ์ก์ ์ ํํ๋์ง ํ์ธํฉ๋๋ค.
์๋ธ๋ท ํ๋์์ ์๋น์ค๊ฐ IP ์ฃผ์๋ฅผ ์์ ํ ์๋ธ๋ท์ ์ ํํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค ๋๋ ์์ ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
๋คํธ์ํฌ ํ๊ทธ ํ๋์ ์๋น์ค๋ ์์ ๊ณผ ์ฐ๊ฒฐํ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ฐฐํฌ ๋๋ ์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ๋ฒ์ ์์ค์์ ์ง์ ๋๋ฏ๋ก ์๋น์ค ๋ฒ์ ๋ง๋ค ๋คํธ์ํฌ ํ๊ทธ ์งํฉ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. ์์ ์ ๊ฒฝ์ฐ ์์ ์คํ์ด ์์ฑ๋ ๋ ์์ ์ ํฌํจ๋ ๋คํธ์ํฌ ํ๊ทธ์ ๋์ผํ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ์์ ์คํ์ ์์ต๋๋ค.
gcloud
๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์๋น์ค๋ ์์
๊ณผ ์ฐ๊ฒฐํ๋ ค๋ฉด gcloud run deploy
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud run deploy SERVICE_JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --region=REGION
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SERVICE_JOB_NAME์ ์๋น์ค ๋๋ ์์ ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- IMAGE_URL์ ์๋น์ค ๋๋ ์์ ์ ์ด๋ฏธ์ง URL๋ก ๋ฐ๊ฟ๋๋ค.
- NETWORK๋ฅผ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- SUBNET์ ์๋ธ๋ท ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. VPC ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ง์ ํ๊ฑฐ๋ ๋ ๋ค ์ง์ ํฉ๋๋ค. ๋คํธ์ํฌ๋ง ์ง์ ํ๋ฉด ์๋ธ๋ท์ ๋คํธ์ํฌ์ ๋์ผํ ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๋์ผํ ์๋ธ๋ท์ ์ฌ๋ฌ ์๋น์ค, ์์ ๋๋ ์์ ์ ํ์ ๋ฐฐํฌํ๊ฑฐ๋ ์คํํ ์ ์์ต๋๋ค.
- NETWORK_TAG_NAMES๋ฅผ ๋คํธ์ํฌ ํ๊ทธ ์ด๋ฆ ๋๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ๋คํธ์ํฌ ํ๊ทธ ๋ชฉ๋ก์ผ๋ก ๋ฐ๊ฟ๋๋ค.
- REGION: ๋ฆฌ์ ์ ์ด๋ฆ
์๋น์ค์ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ๋ฒ์ ์์ค์์ ์ง์ ๋๋ฏ๋ก ์๋น์ค ๋ฒ์ ๋ง๋ค ๋คํธ์ํฌ ํ๊ทธ ์งํฉ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. ์์ ์ ๊ฒฝ์ฐ ์์ ์คํ์ด ์์ฑ๋ ๋ ์์ ์ ํฌํจ๋ ๋คํธ์ํฌ ํ๊ทธ์ ๋์ผํ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ์์ ์คํ์ ์์ต๋๋ค.
Cloud Run ๋ฆฌ์์ค ์ฐ๊ฒฐ ํด์
๋ณด์ ํ Cloud Run ๋ฆฌ์์ค์ ๋ฐ๋ผ ๋ค์ ์น์ ์ค ํ๋์ ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์๋น์ค ์ฐ๊ฒฐ ํด์
์ฝ์
VPC ๋คํธ์ํฌ์์ ์๋น์ค๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ญ์ ํ ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํน ํญ์ ํด๋ฆญํฉ๋๋ค.
์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ํด VPC์ ์ฐ๊ฒฐ์ ์ ํ ์ทจ์ํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์๋น์ค๊ฐ ๋ ์ด์ VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๋คํธ์ํน ํญ์ ํด๋ฆญํฉ๋๋ค. ๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท์ด VPC ์นด๋์ ๋ ์ด์ ๋์ด๋์ง ์์ต๋๋ค.
์๋น์ค๋ฅผ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ญ์ ํ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ํฌํจ๋ ์๋น์ค๋ฅผ ํด๋ฆญํ ํ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋คํธ์ํน ํญ์ ํด๋ฆญํฉ๋๋ค.
์๋น์ค์ ๋ ์ด์ ์ฐ๊ฒฐํ์ง ์์ผ๋ ค๋ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ํ ์ทจ์ํฉ๋๋ค.
๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
VPC ๋คํธ์ํฌ์์ ์๋น์ค๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
์๋น์ค๋ฅผ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- SERVICE_NAME: Cloud Run ์๋น์ค์ ์ด๋ฆ
- REGION: Cloud Run ์๋น์ค์ ๋ฆฌ์
YAML
VPC ๋คํธ์ํฌ์์ ์๋น์ค๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์๋น์ค์ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE_NAME --format export > service.yaml
service.yaml
ํ์ผ์์ ๋ค์ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํฉ๋๋ค.run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- NETWORK: VPC ๋คํธ์ํฌ์ ์ด๋ฆ
- SUBNET: ์๋ธ๋ท ์ด๋ฆ
- (์ ํ์ฌํญ) NETWORK_TAG_NAMES: ์๋น์ค์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์๋น์ค ๋ฒ์ ์ ๋ฐฐํฌํฉ๋๋ค.
gcloud run services replace service.yaml
์๋น์ค๋ฅผ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์๋น์ค์ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run services describe SERVICE_NAME --format export > service.yaml
๋ค์ ์์์ ๊ฐ์ด
network
๋ฐsubnetwork
๋ณ์๋ฅผ ๊ทธ๋๋ก ๋ ์ํ๋กservice.yaml
ํ์ผ์ ์ฝํ ์ธ ์์tags
๋ณ์๋ฅผ ์ญ์ ํฉ๋๋ค.run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- NETWORK: VPC ๋คํธ์ํฌ์ ์ด๋ฆ
- SUBNET: ์๋ธ๋ท ์ด๋ฆ
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์๋น์ค ๋ฒ์ ์ ๋ฐฐํฌํฉ๋๋ค.
gcloud run services replace service.yaml
์์ ์ฐ๊ฒฐ ํด์
์ฝ์
VPC ๋คํธ์ํฌ์์ ์์ ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ญ์ ํ ์์ ์ ํด๋ฆญํ ํ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฐ๊ฒฐ ํญ์ ํด๋ฆญํฉ๋๋ค.
์์๋ฐ์ด๋ ํธ๋ํฝ์ ์ํด VPC์ ์ฐ๊ฒฐ์ ์ ํ ์ทจ์ํฉ๋๋ค.
์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์์ ์ด ๋ ์ด์ VPC ๋คํธ์ํฌ์ ์๋์ง ํ์ธํ๋ ค๋ฉด ๊ตฌ์ฑ ํญ์ ํด๋ฆญํฉ๋๋ค. ๋คํธ์ํฌ ๋ฐ ์๋ธ๋ท์ด VPC ์นด๋์ ๋ ์ด์ ๋์ด๋์ง ์์ต๋๋ค.
์์ ์ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์ญ์ ํ ๋คํธ์ํฌ ํ๊ทธ๊ฐ ํฌํจ๋ ์์ ์ ํด๋ฆญํ ํ ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฐ๊ฒฐ ํญ์ ํด๋ฆญํฉ๋๋ค.
๋ ์ด์ ์์ ๊ณผ ์ฐ๊ฒฐํ์ง ์์ผ๋ ค๋ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ ์ ํ ์ทจ์ํฉ๋๋ค.
์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
VPC ๋คํธ์ํฌ์์ ์์ ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
์์ ์ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- JOB_NAME: Cloud Run ์์ ์ ์ด๋ฆ
- REGION: Cloud Run ์์ ์ ๋ฆฌ์
YAML
VPC ๋คํธ์ํฌ์์ ์์ ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์์ ์ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run jobs describe JOB_NAME --format export > job.yaml
job.yaml
ํ์ผ์์ ๋ค์ ์ฝํ ์ธ ๋ฅผ ์ญ์ ํฉ๋๋ค.run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- NETWORK: VPC ๋คํธ์ํฌ์ ์ด๋ฆ
- SUBNET: ์๋ธ๋ท ์ด๋ฆ
- (์ ํ์ฌํญ) NETWORK_TAG_NAMES๋ฅผ ์์ ๊ณผ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ๋คํธ์ํฌ ํ๊ทธ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
gcloud run jobs replace job.yaml
์์ ์ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์์ ์ YAML ๊ตฌ์ฑ์ ๋ค์ด๋ก๋ํฉ๋๋ค.
gcloud run jobs describe JOB_NAME --format export > job.yaml
๋ค์ ์์์ ๊ฐ์ด
network
๋ฐsubnetwork
๋ณ์๋ฅผ ๊ทธ๋๋ก ๋ ์ํ๋กjob.yaml
ํ์ผ์ ์ฝํ ์ธ ์์tags
๋ณ์๋ฅผ ์ญ์ ํฉ๋๋ค.run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- NETWORK: VPC ๋คํธ์ํฌ์ ์ด๋ฆ
- SUBNET: ์๋ธ๋ท ์ด๋ฆ
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
gcloud run jobs replace job.yaml
์์ ์ ํ ์ฐ๊ฒฐ ํด์
gcloud
VPC ๋คํธ์ํฌ์์ ์์ ์ ํ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud beta run worker-pools update WORKER_POOL --region=REGION \ --clear-network
์์ ์ ํ์ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํ๋ฉด์ ๋คํธ์ํฌ ํ๊ทธ๋ง ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud beta run worker-pools update WORKER_POOL --region=REGION \ --clear-network-tags
๋ค์์ ๋ฐ๊ฟ๋๋ค.
- WORKER_POOL: Cloud Run ์์ ์ ํ์ ์ด๋ฆ
- REGION: Cloud Run ์์ ์ ํ์ ๋ฆฌ์
๋ฌธ์ ํด๊ฒฐ
์๋ธ๋ท์ ์ญ์ ํ ์ ์์
์๋ธ๋ท์ ์ญ์ ํ๋ ค๋ฉด ๋จผ์ ์๋ธ๋ท์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ฑฐ๋ ๋ค์ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. Cloud Run์ด ์๋ธ๋ท์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋ธ๋ท์ ์ญ์ ํ๊ธฐ ์ ์ VPC ๋คํธ์ํฌ์์ Cloud Run ์๋น์ค ๋๋ ์์ ์ ์ฐ๊ฒฐ์ ํด์ ํ๊ฑฐ๋ ๋ค๋ฅธ ์๋ธ๋ท์ผ๋ก ์ด๋ํฉ๋๋ค.
์ง์ VPC ์ด๊ทธ๋ ์ค ์๋ธ๋ท์ IPv4 ์ฃผ์ ๋ถ์กฑ
๋ฐฐํฌ๋ฅผ ์๋ํ ๋ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
Instance failed to start because of insufficient free IP addresses in the subnetwork SUBNET_ID when attempting to create an address in the subnetwork. Please consider moving to a subnetwork with more available IP addresses.
VPC ๋คํธ์ํฌ์ ์๋ธ๋ท์ IPv4 ์ฃผ์๊ฐ ๋ถ์กฑํ๋ฉด Cloud Logging์ ๋ก๊น ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ IPv4 ์ฃผ์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง ๋๊น์ง Cloud Run์์ ๋ ์ด์ ์๋น์ค ์ธ์คํด์ค ๋๋ ์์ ํ์คํฌ๋ฅผ ์์ํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด IP ์ฃผ์ ์์ง ์ ๋ต์ ๋ฐ๋ฅด์ธ์.
ํ ๋น๋ IP ์ฃผ์ ๋ณด๊ธฐ
Cloud Run์ด ํ ๋นํ IP ์ฃผ์๋ฅผ ํ์ธํ๋ ค๋ฉด Google Cloud ์ฝ์์ IP ์ฃผ์ ํ์ด์ง๋ก ์ด๋ํ๊ฑฐ๋ Google Cloud CLI์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud compute addresses list
์ปค์คํ MTU ๊ด๋ จ ๋ฌธ์
์ปค์คํ MTU์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด Cloud Run์ ๊ธฐ๋ณธ MTU ์ค์ ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.