Deployment Manager Convert(DM Convert)๋ Deployment Manager ๊ตฌ์ฑ ๋ฐ ํ ํ๋ฆฟ์ Google์์ ์ง์ํ๋ ๋ค๋ฅธ ์ ์ธ์ ๊ตฌ์ฑ ํ์์ผ๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ์ ๋๋ค. Google์ ํ์ฌ Terraform ๋ฐ Kubernetes ๋ฆฌ์์ค ๋ชจ๋ธ(KRM)์ ์ง์ํฉ๋๋ค.
Terraform ๋๋ KRM์ผ๋ก ๋ณํํ๋ ์ด์
Terraform๊ณผ KRM์ Google Cloud ์๋น์ค์ ์ธํ๋ผ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ต์ ์ ๋๋ค. ์ด๋ค์ ๋ณด์ ๋น๋ฐ ๊ด๋ฆฌ ๋ฐ ์ง์์ ์กฐ์ (KRM์ ๊ฒฝ์ฐ)๊ณผ ๊ฐ์ ์ต์ ๊ธฐ๋ฅ์ ์ง์ํ๋ ํ์ฑ ์ ๋ฐ์ดํธ ์ํ๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.
Google์ HashiCorp์ ํ๋ ฅํ์ฌ Google Cloud์ฉ Terraform ์ ๊ณต์ ์ฒด๋ฅผ ๊ฐ๋ฐํฉ๋๋ค. ๋ํ 2020๋ ์ Google์ ๊ณ ๊ฐ์ด Kubernetes๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud ๋ฆฌ์์ค ์ ํ์ ๊ด๋ฆฌํ ์ ์๋๋ก ์ง์ํ๋ Config Connector๋ฅผ ์ถ์ํ์ต๋๋ค.
Terraform
Terraform์ ์ธํ๋ผ ํ๋ก๋น์ ๋์ ์ํ ์คํ์์ค ๋๊ตฌ์ ๋๋ค. Terraform์ ์ฌ์ฉํ์ฌ ์ ์ธ์ ๊ตฌ์ฑ์ ์์ฑํ์ฌ Google Cloud์ฉ Terraform ์ ๊ณต์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ Google Cloud ์๋น์ค์ ๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Google Cloud์ Terraform์ ์ฐธ๊ณ ํ์ธ์.
Kubernetes ๋ฆฌ์์ค ๋ชจ๋ธ(KRM)
KRM์ ์ ์ธ์ ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ์ํ API ๋ฐ ๋ฆฌ์์ค ์ ์๋ฅผ ๋น๋ํ๊ธฐ ์ํ ํจ๋ฌ๋ค์์ ๋๋ค. ์ปค์คํ ๋ฆฌ์์ค ์ ์ (CRD)๋ก Google Cloud ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ฉฐ ๊ตฌ์ฑ ์ปจํธ๋กค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํ ์ ์์ต๋๋ค.
์ง์๋๋ ์ ํ ๋ฐ ์ ํ ๊ณต๊ธ์
DM Convert๋ Deployment Manager ๊ตฌ์ฑ YAML ํ์ผ๊ณผ Jinja ๋๋ Python ํ ํ๋ฆฟ ํ์ผ์ KRM ๋๋ Terraform ๊ตฌ์ฑ ํ์ผ๋ก ๋ณํํฉ๋๋ค.
์ ํ ๊ณต๊ธ์ ๋ฐ ๋ฆฌ์์ค ์ ํ์ ๋ํ DM Convert ์ง์์ ํ์ฌ ์ํ๋ฅผ ํ์ธํ๋ ค๋ฉด --list-supported-types
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
DM Convert์์ ์ฌ๋ฌ ํ์์ ๊ฐ๋ ์ ๋ณํํ๋ ๋ฐฉ๋ฒ ์ดํด
๋ค์ ํ์์๋ DM Convert์์ Deployment Manager์ ๊ฐ๋ ์ KRM ๋ฐ Terraform์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
Deployment Manager ๊ฐ๋ | KRM/Config Connector ๋ณํ | Terraform ๋ณํ |
---|---|---|
์ฐธ์กฐ | ๋ฆฌ์์ค ์ฐธ์กฐ(KRM ์คํค๋ง๊ฐ ํ๋๋ฅผ ์ฐธ์กฐ๋ก ์ ์ํ๋ ๊ฒฝ์ฐ) KRM ์คํค๋ง์์ ํ๋๋ฅผ ์ฐธ์กฐ๋ก ์ ์ํ์ง ์์ผ๋ฉด Deployment Manager ์ฐธ์กฐ๊ฐ ํ์ธ๋ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. | Terraform ์ฐธ์กฐ๋ Deployment Manager ์ฐธ์กฐ์ ์ ์ฌํ๊ฒ ํ์๋๊ณ ์๋ํฉ๋๋ค. |
๋ช
์์ ์ข
์ ํญ๋ชฉ(depends_on ) |
๋ช ์์ ์ข ์ ํญ๋ชฉ ์ ๋ ฌ์ ์ง์ํ์ง ์์ต๋๋ค. ๋ฆฌ์์ค๋ eventual consistency ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. | depends_on |
Identity and Access Management(IAM) ๋ฐ์ธ๋ฉ(๊ถํ accessControl ๋ธ๋ก) |
IAMPolicy |
<resource_type>_iam_policy ์ ํ(์: google_pubsub_topic_iam_policy ) |
IAM ๋ฐ์ธ๋ฉ(๋น๊ถํ iamMemberBinding ์ ํ) |
IAMPolicyMember |
<resource_type>_iam_member (์: google_project_iam_member ) |
๋ณตํฉ ์ ํ | ๋ณตํฉ ์ ํ์ ์ง์ ์ค๋จ๋์์ต๋๋ค. DM Convert๋ ๋ณตํฉ ์ ํ์ ๋ณํํ์ง ์์ต๋๋ค. | ๋ณตํฉ ์ ํ์ ์ง์ ์ค๋จ๋์์ต๋๋ค. DM Convert๋ ๋ณตํฉ ์ ํ์ ๋ณํํ์ง ์์ต๋๋ค. |
์์ , ์ปค์คํ ์ ํ ๊ณต๊ธ์ ๋ฐ ์ถ๋ ฅ | ์ง์๋์ง ์์ | Terraform์์ ์ ์ธ์ ๋ฑ๊ฐ ์์ ์ด ์๋ ์์ ์ ๋ณํ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์์ ์ง์์ ์ฐธ์กฐํ์ธ์. |
DM Convert์ ์์ ์ง์(Terraform์ฉ)
์์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ API ๋ฉ์๋ ์งํฉ์ ํ์ฅํ๋ Deployment Manager์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๊ธฐ๋ฅ์ ๋๋ค. ์์ ์ ์ง์๋์ง ์์ผ๋ฉฐ DM Convert๋ ๋ค์๊ณผ ๊ฐ์ด Terraform์ ์ ์ธ์ ๋ฑ๊ฐ ์์ ์ด ์๋ ์์ ์ ๋ณํํ์ง ์์ต๋๋ค.
API ํจ์น, ์ญ์ , ๋์ด
๋ง์ถค ์ ํ ๊ณต๊ธ์์ ์ ์๋ API
์ปค์คํ API(์:
sqladmin-v1beta4:sql.instances.restart
)
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ DM Convert๋ ์์ ์ Terraform์ ํด๋นํ๋ ๋ณํ์ ์ง์ํฉ๋๋ค.
๋ฆฌ์์ค๋ฅผ ๋๋ฑํ Terraform ๋ฆฌ์์ค๋ก ์ฝ์ ํ๋ API์ ๋ํ ์์ ํธ์ถ์ ๋์ฒดํฉ๋๋ค. ์๋ฅผ ๋ค์ด
action: gcp-types/storage-v1:storage.buckets.insert
๋google_storage_bucket
์ผ๋ก ๋ณํ๋ฉ๋๋ค.๊ฐ๋ฅํ ๊ฒฝ์ฐ ํญ์ Terraform
data
์ ํ์ ๋ํ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋ API๋ก ์์ ํธ์ถ์ ๋ณํํฉ๋๋ค. ์๋ฅผ ๋ค์ดactions: gcp-types/compute-v1:compute.subnetworks.get
์google_compute_subnetwork
๋ก ๋ณํ๋ฉ๋๋ค.getIamPolicy
์ ํจ๊ป ์ฌ์ฉ๋๋์ง ์ฌ๋ถ์ ๋ฐ๋ผsetIamPolicy
๋ช ๋ น์ด๋ฅผ*_iam_policy
(๊ถํ) ๋๋*_iam_member
(๋น๊ถํ) ๋ฆฌ์์ค๋ก ๋ณํํฉ๋๋ค.
Deployment Manager ๋ด์์ ์์ ์ฌ์ฉ์ ์ ์ธ์ ๋์์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์์ ์ฌ์ฉ ๋์ฒด๋ฅผ ์ฐธ์กฐํ์ธ์.
Terraform์ผ๋ก ๋ณํํ๊ธฐ ์ํ ์ํฌํ๋ก
DM Convert๋ฅผ ์ฌ์ฉํ์ฌ Deployment Manager ๊ตฌ์ฑ์ Terraform์ผ๋ก ๋ณํํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- Terraform์ผ๋ก ๋ณํํ Deployment Manager ๊ตฌ์ฑ์ ์๋ณํฉ๋๋ค.
- ๋ฆฌ์์ค๊ฐ ์ต์ ์ํ์ธ์ง ํ์ธํ๋ ค๋ฉด ๊ตฌ์ฑ์ ํ์ฑ ๋ฐฐํฌ๋ฅผ ์กฐ์ ํ์ธ์.
- ๊ตฌ์ฑ์ Terraform์ผ๋ก ๋ณํํ๋ ค๋ฉด ๋ก์ปฌ์์ DM Convert ๋๊ตฌ๋ฅผ ์คํํ์ธ์.
- ์์ฑ๋ Terraform ๊ตฌ์ฑ์ด ๋ฆฌ์์ค์ ํ์ฌ ์ํ๋ฅผ ๋ฐ์ํ๋์ง ํ์ธํฉ๋๋ค.
- Deployment Manager ๋ฐฐํฌ๋ฅผ ์ญ์ ํฉ๋๋ค. ๋ฐฐํฌ๋ฅผ ์ญ์ ํ ๋ ๋ฆฌ์์ค๋ฅผ ๋ณด์กดํ๋ ค๋ฉด
delete-policy
๋ฅผabandon
์ผ๋ก ์ค์ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ Terraform ๊ถ์ฅ์ฌํญ์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ์ํฌํ๋ก์ ๋ํ ์์ธํ ์๋ด๋ DM Convert๋ฅผ ์ฌ์ฉํ์ฌ Deployment Manager ๊ตฌ์ฑ ๋ณํ์ ์ฐธ๊ณ ํ์ธ์.
DM Convert์ ๋ฐ์ดํฐ ์์ง
๊ธฐ๋ณธ์ ์ผ๋ก ์์งํ๋ ํญ๋ชฉ
๊ธฐ๋ณธ์ ์ผ๋ก DM Convert ๋๊ตฌ๋ ๋๊ตฌ๋ฅผ ์ ์ง๋ณด์ ๋ฐ ๊ฐ์ ํ๊ธฐ ์ํด ์ต๋ช ์ ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ Google๋ก ์ ์กํฉ๋๋ค. DM Convert ๋๊ตฌ๊ฐ ์คํ๋๋ฉด ์์ฒญ๋ ์์ , ์์ ์ฑ๊ณต, ๋ณํ ์์ ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์์ง๋ฉ๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์ต๋ช ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ ๊ฐ์ธ ์๋ณ ์ ๋ณด, ๋ฏผ๊ฐํ ์ ๋ณด ๋๋ ๊ณ ๊ฐ ์ฝํ ์ธ ๋ ์ ์ธ๋ฉ๋๋ค.
์ฌ์ฉ ๋ฐ์ดํฐ์๋ ๋ค์์ด ํฌํจ๋ ์ ์์ต๋๋ค.
๋ณํ ๋ช ๋ น์ด ์ ๋ ฅ ๋งค๊ฐ๋ณ์: ์ถ๋ ฅ ํ์(KRM ๋๋ Terraform) ๋ฐ ๋ค๋ฅธ ํ๋๊ทธ๊ฐ ์ง์ ๋์๋์ง ์ฌ๋ถ์ ๋ํ ๋ถ์ธ ํํ์ ํฌํจํ์ฌ ๋๊ตฌ๋ฅผ ์คํํ ๋ ๋ณํ ๋ช ๋ น์ด์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๊ธฐ๋กํฉ๋๋ค(ํด๋น ํ๋๊ทธ์ ํน์ ๊ฐ์ ์์งํ์ง ์์).
๋ณํ ๊ฒฐ๊ณผ: ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ณํ ์ํ(
SUCCESS
๋๋FAILURE
)์ ์ค๋ฅ ์ฝ๋ ๋ฐ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํฌํจํ ๋ณํ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.๋ณํ ์๊ฐ: ๋ณํ ์์ ๋ฐ ์ข ๋ฃ ์๊ฐ์ด ๊ธฐ๋ก๋ฉ๋๋ค.
Google์์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์
Google์ ๋ค์๊ณผ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ์ฒ๋ฆฌํฉ๋๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ๊ณผ ์ค์ ์ ํฌํจํ์ฌ ๋๊ตฌ๊ฐ ์ฌ์ฉ๋๋ ๋ฐฉ์์ ํ์ ํฉ๋๋ค.
๋๊ตฌ ์ฌ์ฉ ์คํจ๋ฅผ ์ง๋จํ๊ณ ๊ธฐ์ ์ง์์ ์ํ๋ ์ฌ์ฉ์์๊ฒ ์๋ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์ฌ์ ์ผ๋ก ํน์ฑ ๋ฒ์๋ฅผ ๋๋ ค ๋๊ตฌ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
๋ฐ์ดํฐ ์์ง ์ ํ ํด์
Google์ ์ฌ์ฉ์๊ฐ ๋ณํ์ ์คํํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ๋ฐ์ดํฐ๋ฅผ ์์งํ์ง๋ง ์ด ๋ฐ์ดํฐ ์์ง์ ์ค์งํ ์ ์์ต๋๋ค.
ํน์ ๋ณํ์ ๋ํ ๋ฐ์ดํฐ ์์ง์ ์ค์งํ๋ ค๋ฉด ๋ณํ ๋ช
๋ น์ด์ --opt_out_data_collection=true
ํ๋๊ทธ๋ฅผ ์ง์ ํ๋ฉด ๋ฉ๋๋ค. ์์ผ๋ก ์ด ๋ฐ์ดํฐ ์์ง์ ๊ณ์ ํด์ ํ๋ ค๋ฉด ๋ณํ์ ์คํํ ๋๋ง๋ค ํ๋๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.
ํน์ ๋ณํ์ ๋ฐ์ดํฐ ์์ง์ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ณํ ๋ช
๋ น์ด์ --opt_out_data_collection=false
ํ๋๊ทธ๋ฅผ ์ง์ ํ๊ฑฐ๋ ๋ช
๋ น์ด์์ ํ๋๊ทธ๋ฅผ ์๋ตํ๋ฉด ๋ฉ๋๋ค.