๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ธ์คํด์ค์๋ ์ธ์คํด์ค๊ฐ ์ฌ์ฉํ๋ VPC ๋คํธ์ํฌ๋ฅผ ๊ฒฐ์ ํ๋ ๋จ์ผ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ ์์ต๋๋ค. ์ฌ๋ฌ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์์ง๋ง ๊ฐ ์ธํฐํ์ด์ค๋ ๋ค๋ฅธ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด์ผ ํฉ๋๋ค. ๊ฐ ๋คํธ์ํฌ์๋ ์ธ์คํด์ค์ ํ ๋นํ ์ ์๋ IPv4 ๋๋ IPv6 ์ฃผ์ ๋ฒ์๋ฅผ ์ ์ํ๋ ์๋ธ๋ท์ด ํ๋ ์ด์ ์์ด์ผ ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ์กฐํ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก Google Cloud ๋ ํ๋ก์ ํธ๋ง๋ค default
๋ผ๋ ์๋ ๋ชจ๋ VPC ๋คํธ์ํฌ๋ฅผ ๋ง๋ญ๋๋ค. ์๋ ๋ชจ๋ ๋๋ ์ปค์คํ
๋ชจ๋ VPC ๋คํธ์ํฌ์์ ์๋์ผ๋ก ๋ง๋ ๋ค๋ฅธ ๋คํธ์ํฌ ๋๋ ์๋ธ๋ท์ ์ฌ์ฉํ๋ ค๋ฉด ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํ ๋ ์๋ธ๋ท์ ์ง์ ํด์ผ ํฉ๋๋ค.
์์ํ๊ธฐ ์ ์
-
์์ง ์ธ์ฆ์ ์ค์ ํ์ง ์์๋ค๋ฉด ์ค์ ํฉ๋๋ค.
์ธ์ฆ์ Google Cloud ์๋น์ค ๋ฐ API์ ์ก์ธ์คํ๊ธฐ ์ํด ID๋ฅผ ํ์ธํ๋ ํ๋ก์ธ์ค์
๋๋ค.
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฝ๋ ๋๋ ์ํ์ ์คํํ๋ ค๋ฉด ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํ์ฌ Compute Engine์ ์ธ์ฆํ๋ฉด ๋ฉ๋๋ค.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ด ํ์ด์ง์ REST API ์ํ์ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI์ ์ ๊ณตํ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
์์ธํ ๋ด์ฉ์ Google Cloud ์ธ์ฆ ๋ฌธ์์ REST ์ฌ์ฉ์ ์ํ ์ธ์ฆ์ ์ฐธ์กฐํ์ธ์.
-
ํ์ํ ์ญํ
ํน์ ์๋ธ๋ท์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ถํ์ ์ป์ผ๋ ค๋ฉด ๊ด๋ฆฌ์์๊ฒ ํ๋ก์ ํธ์ ๋ํ Compute ์ธ์คํด์ค ๊ด๋ฆฌ์(v1)(roles/compute.instanceAdmin.v1
) IAM ์ญํ ์ ๋ถ์ฌํด ๋ฌ๋ผ๊ณ ์์ฒญํ์ธ์.
์ญํ ๋ถ์ฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ๋ก์ ํธ, ํด๋, ์กฐ์ง์ ๋ํ ์ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ด ์ฌ์ ์ ์๋ ์ญํ ์๋ ํน์ ์๋ธ๋ท์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ๊ถํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํ์ํ ์ ํํ ๊ถํ์ ๋ณด๋ ค๋ฉด ํ์ ๊ถํ ์น์ ์ ํผ์น์ธ์.
ํ์ ๊ถํ
ํน์ ์๋ธ๋ท์ผ๋ก ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๊ถํ์ด ํ์ํฉ๋๋ค.
- ํ๋ก์ ํธ์ ๋ํ
compute.instances.create
๊ถํ -
์ธ์คํด์ค์ ์๋ธ๋ท ์ง์ : ํ๋ก์ ํธ ๋๋ ์ ํํ ์๋ธ๋ท์ ๋ํ
compute.subnetworks.use
๊ถํ -
VPC ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ๋ ์ธ์คํด์ค์ ์ธ๋ถ IP ์ฃผ์ ํ ๋น: ํ๋ก์ ํธ ๋๋ ์ ํํ ์๋ธ๋ท์ ๋ํ
compute.subnetworks.useExternalIp
๊ถํ
์ปค์คํ ์ญํ ์ด๋ ๋ค๋ฅธ ์ฌ์ ์ ์๋ ์ญํ ์ ์ฌ์ฉํ์ฌ ์ด ๊ถํ์ ๋ถ์ฌ๋ฐ์ ์๋ ์์ต๋๋ค.
์๊ตฌ์ฌํญ
์๋ธ๋ท์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ๋ค์ ๊ท์น์ ๊ณ ๋ คํ์ธ์.
- ๋คํธ์ํฌ๋ ์๋ธ๋ท์ ์ง์ ํ์ง ์์ผ๋ฉด Compute Engine์ ๊ธฐ๋ณธ VPC ๋คํธ์ํฌ ๋ฐ ์ธ์คํด์ค์ ๋์ผํ ๋ฆฌ์ ์ ์๋ ์๋ ์๋ธ๋ท์ ์ฌ์ฉํฉ๋๋ค.
- ๋คํธ์ํฌ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด Compute Engine์ ์ง์ ๋ ์๋ธ๋ท์์ ๋คํธ์ํฌ๋ฅผ ์ถ๋ก ํฉ๋๋ค.
- ๋คํธ์ํฌ๋ฅผ ์ง์ ํ๋ ๊ฒฝ์ฐ ์๋ธ๋ท์ ์ง์ ํด์ผ ํ๋ฉฐ ์๋ธ๋ท์ ๋์ผํ ๋คํธ์ํฌ์ ์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ธ์คํด์ค ์์ฑ์ ์คํจํฉ๋๋ค.
์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ์ฌ์ฉํ ์๋ธ๋ท์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ VPC ๋คํธ์ํฌ ๋ง๋ค๊ธฐ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํน์ ์๋ธ๋ท์ ์ธ์คํด์ค ๋ง๋ค๊ธฐ
ํน์ ์๋ธ๋ท์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ์ธ์คํด์ค ๋ง๋ค๊ธฐ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
์ธ์คํด์ค ๋ง๋ค๊ธฐ๋ก ์ด๋
๋ฉ์์ง๊ฐ ํ์๋๋ฉด ํ๋ก์ ํธ๋ฅผ ์ ํํ๊ณ ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
์ธ์คํด์ค ๋ง๋ค๊ธฐ ํ์ด์ง๊ฐ ๋ํ๋๊ณ ๋จธ์ ๊ตฌ์ฑ ์ฐฝ์ด ํ์๋ฉ๋๋ค.
๋จธ์ ๊ตฌ์ฑ ์ฐฝ์์ ๋ค์์ ์ํํฉ๋๋ค.
- ์ด๋ฆ ํ๋์ ์ธ์คํด์ค ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฆฌ์์ค ์ด๋ฆ ์ง์ ๊ท์น์ ์ฐธ์กฐํ์ธ์.
(์ ํ์ฌํญ) ์์ญ ํ๋์์ ์ด ์ธ์คํด์ค์ ์์ญ์ ์ ํํฉ๋๋ค.
๊ธฐ๋ณธ ์ ํ ํญ๋ชฉ์ ๋ชจ๋์ ๋๋ค. ์ด ๊ธฐ๋ณธ ์ ํ ํญ๋ชฉ์ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด Google์์ ๋จธ์ ์ ํ๊ณผ ๊ฐ์ฉ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์์ญ์ ์๋ ์ ํํฉ๋๋ค.
์ธ์คํด์ค์ ๋จธ์ ๊ณ์ด์ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Google Cloud ์ฝ์์ ์ ํํ ๋จธ์ ๊ณ์ด์ ์ฌ์ฉํ ์ ์๋ ๋จธ์ ์๋ฆฌ์ฆ๊ฐ ํ์๋ฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋จธ์ ๊ณ์ด ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฒ์ฉ
- ์ปดํจํ ์ต์ ํ
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
- ์คํ ๋ฆฌ์ง ์ต์ ํ
- GPU
์๋ฆฌ์ฆ ์ด์์ ์ธ์คํด์ค์ ๋จธ์ ์๋ฆฌ์ฆ๋ฅผ ์ ํํฉ๋๋ค.
์ด์ ๋จ๊ณ์์ ๋จธ์ ๊ณ์ด๋ก GPU๋ฅผ ์ ํํ ๊ฒฝ์ฐ ์ํ๋ GPU ์ ํ์ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ ํํ GPU ์ ํ์ ๋ง๋ ๋จธ์ ์๋ฆฌ์ฆ๊ฐ ์๋์ผ๋ก ์ ํ๋ฉ๋๋ค.
๋จธ์ ์ ํ ์น์ ์์ ์ธ์คํด์ค์ ๋จธ์ ์ ํ์ ์ ํํฉ๋๋ค.
ํ์ ๋ฉ๋ด์์ ๋คํธ์ํน์ ํด๋ฆญํฉ๋๋ค. ๋คํธ์ํน ์ฐฝ์ด ํ์๋๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
์ธ์คํด์ค์ HTTP ๋๋ HTTPS ํธ๋ํฝ์ ํ์ฉํ๋ ค๋ฉด ๋ฐฉํ๋ฒฝ ์น์ ์ผ๋ก ์ด๋ํ์ฌ HTTP ํธ๋ํฝ ํ์ฉ ๋๋ HTTPS ํธ๋ํฝ ํ์ฉ์ ์ ํํฉ๋๋ค.
Compute Engine์์ ๋คํธ์ํฌ ํ๊ทธ๋ฅผ ์ธ์คํด์ค์ ์ถ๊ฐํ๊ณ
tcp:80
(HTTP) ๋๋tcp:443
(HTTPS)์์ ๋ค์ด์ค๋ ๋ชจ๋ ํธ๋ํฝ์ ํ์ฉํ๋ ์ธ๊ทธ๋ ์ค ๋ฐฉํ๋ฒฝ ๊ท์น์ ๋ง๋ญ๋๋ค. ๋คํธ์ํฌ ํ๊ทธ๋ ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud ์ฐจ์ธ๋ ๋ฐฉํ๋ฒฝ ๋ฌธ์์ ๋ฐฉํ๋ฒฝ ๊ท์น ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ธ๋ถ์ ๋ณด๋ฅผ ์ง์ ํ๋ ค๋ฉด ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์น์ ์ผ๋ก ์ด๋ํ์ฌ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ์๋๋ ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์น์ ์์ ๋ค์์ ์ํํฉ๋๋ค.
- ๋คํธ์ํฌ ํ๋์์ ์ฌ์ฉ์๊ฐ ๋ง๋ ์๋ธ๋ท์ด ํฌํจ๋ VPC ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
- ์๋ธ๋คํธ์ํฌ ๋ชฉ๋ก์์ ์ฌ์ฉํ ์ธ์คํด์ค์ ์๋ธ๋ท์ ์ ํํฉ๋๋ค.
- IP ์คํ ์ ํ ํ๋์์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ IP ์คํ ์ ํ์ ์ ํํฉ๋๋ค.
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ธ๋ถ์ ๋ณด๋ฅผ ํ์ธํ๋ ค๋ฉด ์๋ฃ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ํ์ฌํญ: ๋ค๋ฅธ ๊ตฌ์ฑ ์ต์ ์ ์ง์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ธ์คํด์ค ์์ฑ ์ค ๊ตฌ์ฑ ์ต์ ์ ์ฐธ์กฐํ์ธ์.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ ์์ํฉ๋๋ค.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Google Cloud CLI๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ์๋ด์ ๋ฐ๋ผ ๊ณต๊ฐ ์ด๋ฏธ์ง ๋๋ ์ค๋ ์ท์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ณ
gcloud compute instances create
๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ์ด ์น์ ์ ํ์๋ ๋คํธ์ํน ํ๋๊ทธ๋ฅผ ํฌํจํฉ๋๋ค.gcloud compute instances create INSTANCE_NAME \ --zone=ZONE \ --machine-type=MACHINE_TYPE \ --create-disk=boot=yes,image=projects/IMAGE_PROJECT/global/images/IMAGE,size=SIZE \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --stack-type=STACK_TYPE \ --private-network-ip=INTERNAL_IPV4_ADDRESS \ --address=EXTERNAL_IPV4_ADDRESS \ --nic-type=GVNIC
๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_NAME
: ์ปดํจํ ์ธ์คํด์ค์ ์ด๋ฆZONE
: ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ ์์ญ(์:europe-west1-b
). ์ธ์คํด์ค์ ๋ฆฌ์ ์ ์์ญ์์ ์ถ๋ก ๋ฉ๋๋ค.MACHINE_TYPE
: ์ ํ์ฌํญ: ์ธ์คํด์ค์ ์ฌ์ฉํ ๋จธ์ ์ ํIMAGE_PROJECT
: ์ ํ์ฌํญ: ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ ์ด๋ฏธ์ง ํ๋ก์ ํธIMAGE
: ์ ํ์ฌํญ: ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.- OS ์ด๋ฏธ์ง์ ํน์ ๋ฒ์ ์
๋๋ค(์:
rocky-linux-9-optimized-gcp-v20240717
). - ์ด๋ฏธ์ง ๊ณ์ด์ด๋ฉฐ ํ์์
family/IMAGE_FAMILY
์ฌ์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ง์ ์ค๋จ๋์ง ์์ ์ต์ OS ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๊ฐ ์์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ดfamily/rocky-linux-9-optimized-gcp
๋ฅผ ์ง์ ํ๋ฉด Compute Engine์์Google Cloud ์ด๋ฏธ์ง ๊ณ์ด์ ์ต์ ํ๋ Rocky Linux 9์ ์ต์ ๋ฒ์ OS ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค. ์ด๋ฏธ์ง ๊ณ์ด ์ฌ์ฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ด๋ฏธ์ง ๊ณ์ด ๊ถ์ฅ์ฌํญ์ ์ฐธ์กฐํ์ธ์.
- OS ์ด๋ฏธ์ง์ ํน์ ๋ฒ์ ์
๋๋ค(์:
SIZE
: ์ ํ์ฌํญ: ์ ๋์คํฌ ํฌ๊ธฐ์ ๋๋ค. ๊ฐ์ ์ ์์ฌ์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ ์ธก์ ๋จ์๋ GiB์ ๋๋ค.NETWORK_NAME
: ์ ํ์ฌํญ: ๋คํธ์ํฌ ์ด๋ฆSUBNET_NAME
: ์ธ์คํด์ค์ ํจ๊ป ์ฌ์ฉํ ์๋ธ๋ท ์ด๋ฆ๋คํธ์ํฌ์ ์๋ธ๋ท ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด
gcloud compute networks subnets list
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.STACK_TYPE
: ์ ํ์ฌํญ: ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์คํ ์ ํ์ ๋๋ค.STACK_TYPE
์IPV4_ONLY
,IPV4_IPV6
๋๋IPV6_ONLY
(ํ๋ฆฌ๋ทฐ) ์ค ํ๋์ฌ์ผ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์IPV4_ONLY
์ ๋๋ค.INTERNAL_IPV4_ADDRESS
: ์ ํ์ฌํญ: ์ปดํจํ ์ธ์คํด์ค๊ฐ ๋์ ์๋ธ๋ท์์ ์ฌ์ฉํ ๋ด๋ถ IPv4 ์ฃผ์์ ๋๋ค. ํน์ IP ์ฃผ์๊ฐ ํ์ํ์ง ์์ผ๋ฉด ์ด ํ๋๊ทธ๋ฅผ ์๋ตํฉ๋๋ค.๋ด๋ถ IPv6 ์ฃผ์๋ฅผ ์ง์ ํ๋ ค๋ฉด
--internal-ipv6-address
ํ๋๊ทธ๋ฅผ ๋์ ์ฌ์ฉํ์ธ์.EXTERNAL_IPV4_ADDRESS
: ์ ํ์ฌํญ: ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ฌ์ฉํ ๊ณ ์ ์ธ๋ถ IPv4 ์ฃผ์์ ๋๋ค. ์ด์ ์ ์ธ๋ถ IPv4 ์ฃผ์๋ฅผ ์์ฝํ์ด์ผ ํฉ๋๋ค. ๋ค์ ์ค ํ๋๋ฅผ ์ํํฉ๋๋ค.- ์๋ธ๋ท์์ ์ ํจํ IPv4 ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค.
- ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์ธ๋ถ IP ์ฃผ์๋ฅผ ๊ฐ์ง ์๋๋ก ํ๋ ค๋ฉด ๋์
--network-interface=no-address
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ธ์. - ์ธํฐํ์ด์ค์ ์์ ์ธ๋ถ IP ์ฃผ์๊ฐ ์์ ๋๋๋ก ํ๋ ค๋ฉด
address=''
๋ฅผ ์ง์ ํฉ๋๋ค.
์ธ๋ถ IPv6 ์ฃผ์๋ฅผ ์ง์ ํ๋ ค๋ฉด
--external-ipv6-address
ํ๋๊ทธ๋ฅผ ๋์ ์ฌ์ฉํ์ธ์.
Terraform
ํน์ ์๋ธ๋ท์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๋ฉด google_compute_instance
๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๊ฑฐ๋ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ Terraform ๋ช ๋ น์ด๋ฅผ ์ฐธ์กฐํ์ธ์.
Terraform ์ฝ๋๋ฅผ ์์ฑํ๋ ค๋ฉด Google Cloud ์ฝ์์์ ์์ํ๋ ์ฝ๋ ๊ตฌ์ฑ์์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.- Google Cloud ์ฝ์์์ VM ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์คํด์ค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ์ํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํฉ๋๋ค.
- ํ์ด์ง ์๋จ ๋๋ ํ๋จ์์ ์์ํ๋ ์ฝ๋๋ฅผ ํด๋ฆญํ ํ Terraform ํญ์ ํด๋ฆญํ์ฌ Terraform ์ฝ๋๋ฅผ ํ์ธํฉ๋๋ค.
Go
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Compute Engine ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Go ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Compute Engine Go API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Compute Engine์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
์๋ฐ
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Compute Engine ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Compute Engine Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Compute Engine์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Compute Engine ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Compute Engine Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Compute Engine์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Compute Engine ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Python ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Compute Engine Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
Compute Engine์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
REST
REST
์๋ด์ ๋ฐ๋ผ ๊ณต๊ฐ ์ด๋ฏธ์ง ๋๋ ์ค๋
์ท์์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ์์ฒญ ๋ณธ๋ฌธ์ subnet
ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
/zones/ZONE
/instances { "machineType":"zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name":"VM_NAME
", "disks":[ { "initializeParams":{ "sourceImage":"projects/IMAGE_PROJECT/global/images/IMAGE" }, "boot":true } ], "networkInterfaces":[ { "network":"global/networks/NETWORK_NAME", "subnetwork":"regions/REGION/subnetworks/SUBNET_NAME", "stackType":"STACK_TYPE" } ], "shieldedInstanceConfig":{ "enableSecureBoot":"ENABLE_SECURE_BOOT" } }
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: VM์ ๋ง๋ค ํ๋ก์ ํธ์ IDZONE
: VM์ ๋ง๋ค ์์ญMACHINE_TYPE_ZONE
: ์ VM์ ์ฌ์ฉํ ๋จธ์ ์ ํ์ด ํฌํจ๋ ์์ญMACHINE_TYPE
: ์ VM์ ๋จธ์ ์ ํ(์ฌ์ ์ ์ ๋๋ ์ปค์คํ )VM_NAME
: ์ VM์ ์ด๋ฆIMAGE_PROJECT
: ์ด๋ฏธ์ง๊ฐ ํฌํจ๋ ํ๋ก์ ํธ
์๋ฅผ ๋ค์ดdebian-10
์ ์ด๋ฏธ์ง ๊ณ์ด๋ก ์ง์ ํ๋ ๊ฒฝ์ฐdebian-cloud
๋ฅผ ์ด๋ฏธ์ง ํ๋ก์ ํธ๋ก ์ง์ ํฉ๋๋ค.IMAGE
: ๋ค์ ์ค ํ๋๋ฅผ ์ง์ ํฉ๋๋ค.IMAGE
: ๊ณต๊ฐ ์ด๋ฏธ์ง์ ํน์ ๋ฒ์ ์ ๋๋ค.์๋ฅผ ๋ค๋ฉด
"sourceImage": "projects/debian-cloud/global/images/debian-10-buster-v20200309"
์ ๋๋ค.IMAGE_FAMILY
: ์ด๋ฏธ์ง ๊ณ์ด์ ๋๋ค.์ด๋ ๊ฒ ํ๋ฉด ์ง์ ์ค๋จ๋์ง ์์ ์ต์ OS ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ VM์ด ์์ฑ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด
"sourceImage": "projects/debian-cloud/global/images/family/debian-10"
์ ์ง์ ํ๋ฉด Compute Engine์ดDebian 10
์ด๋ฏธ์ง ๊ณ์ด์์ ์ต์ ๋ฒ์ ์ OS ์ด๋ฏธ์ง์์ VM์ ๋ง๋ญ๋๋ค.
NETWORK_NAME
: ์ ํ์ฌํญ: VM์ ์ฌ์ฉํ๋ ค๋ VPC ๋คํธ์ํฌ์ ๋๋ค. ๊ธฐ๋ณธ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋กdefault
๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.REGION
: ์ง์ ๋ ์๋ธ๋ท์ด ์๋ ๋ฆฌ์ ์ ๋๋ค. VM๊ณผ ๋์ผํ ๋ฆฌ์ ์ด์ด์ผ ํฉ๋๋ค.SUBNET_NAME
: ์ฌ์ฉํ ์๋ธ๋ท์ ์ด๋ฆSTACK_TYPE
: ์ ํ์ฌํญ: ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ ์คํ ์ ํ.IPV4_ONLY
,IPV4_IPV6
๋๋IPV6_ONLY
(ํ๋ฆฌ๋ทฐ) ์ค ํ๋๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์IPV4_ONLY
์ ๋๋ค.ENABLE_SECURE_BOOT
: ์ ํ์ฌํญ: ๋ณด์ VM ๊ธฐ๋ฅ์ ์ง์ํ๋ ์ด๋ฏธ์ง๋ฅผ ์ ํํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก Compute Engine์ vTPM(Virtual Trusted Platform Module) ๋ฐ ๋ฌด๊ฒฐ์ฑ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. Compute Engine์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ ๋ถํ ์ ์ฌ์ฉ ์ค์ ํ์ง ์์ต๋๋ค.enableSecureBoot
์true
๋ฅผ ์ง์ ํ๋ฉด Compute Engine์ ๋ณด์ VM ๊ธฐ๋ฅ 3๊ฐ์ง๋ฅผ ๋ชจ๋ ์ฌ์ฉ ์ค์ ํ์ฌ VM์ ๋ง๋ญ๋๋ค. Compute Engine์์ VM์ ์์ํ ํ ๋ณด์ VM ์ต์ ์ ์์ ํ๋ ค๋ฉด VM์ ์ค์งํด์ผ ํฉ๋๋ค.
๋ค์ ๋จ๊ณ
- ์ธ์คํด์ค ์ํ๋ฅผ ํ์ธํ์ฌ ์ฌ์ฉ ์ค๋น๊ฐ ๋์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
- ์ธ์คํด์ค ์ฐ๊ฒฐ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ