DM 변환을 사용하여 Terraform 또는 Kubernetes 리소스 모델(KRM)로 전환

Deployment Manager Convert(DM Convert)는 Deployment Manager 구성템플릿을 Google에서 지원하는 다른 선언적 구성 형식으로 변환하는 데 사용할 수 있는 도구입니다. Google은 현재 TerraformKubernetes 리소스 모델(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 및 리소스 정의를 빌드하기 위한 패러다임입니다. Google Cloud 리소스를 커스텀 리소스 정의 (CRD)로 나타내며 구성 컨트롤러를 사용하여 작동할 수 있습니다.

지원되는 유형 및 유형 공급자

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.insertgoogle_storage_bucket으로 변환됩니다.

  • 가능한 경우 항상 Terraform data 유형에 대한 리소스를 가져오는 API로 작업 호출을 변환합니다. 예를 들어 actions: gcp-types/compute-v1:compute.subnetworks.getgoogle_compute_subnetwork로 변환됩니다.

  • getIamPolicy와 함께 사용되는지 여부에 따라 setIamPolicy 명령어를 *_iam_policy(권한) 또는 *_iam_member(비권한) 리소스로 변환합니다.

Deployment Manager 내에서 작업 사용을 선언적 대안으로 마이그레이션하는 방법에 대한 자세한 내용은 작업 사용 대체를 참조하세요.

Terraform으로 변환하기 위한 워크플로

DM Convert를 사용하여 Deployment Manager 구성을 Terraform으로 변환하려면 다음 단계를 따르세요.

  1. Terraform으로 변환하려는 Deployment Manager 구성을 식별합니다.
  2. 리소스가 최신 상태인지 확인하려면 구성의 활성 배포를 조정합니다.
  3. 구성을 Terraform으로 변환하려면 로컬에서 DM Convert 도구를 실행합니다.
  4. 생성된 Terraform 구성이 리소스의 현재 상태를 반영하는지 확인합니다.
  5. Deployment Manager 배포를 삭제합니다. 배포를 삭제할 때 리소스를 보존하려면 delete-policyabandon으로 설정합니다.

다음과 같은 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 플래그를 지정하거나 명령어에서 플래그를 생략하면 됩니다.