결제 계정 만들기 및 연결

Google Distributed Cloud (GDC) 에어갭 환경에서는 프로젝트 및 조직의 비용을 추적하기 위해 결제 계정이 필요합니다. 결제 계정을 조직 또는 프로젝트에 연결하지 않으면 리소스와 연결된 비용 데이터가 손실됩니다.

고객에게 서비스 사용량을 청구하려면 조직 내 모든 결제 계정에서 단일 가격표를 사용합니다.

시작하기 전에

조직 IAM 관리자에게 다음 필수 역할을 부여해 달라고 요청하세요. 이러한 역할은 프로젝트 수준 결제의 경우 프로젝트 네임스페이스에, 조직 수준 결제의 경우 플랫폼 네임스페이스에 바인딩됩니다.

  • 조직 결제 계정 관리자: BillingAccount 리소스를 생성, 관리, 바인딩합니다. 조직 IAM 관리자에게 organization-billing-account-admin 역할을 부여해 달라고 요청하세요.

  • 조직 결제 계정 사용자: BillingAccount 리소스를 읽고, 나열하고, 바인딩합니다. 조직 IAM 관리자에게 organization-billing-account-user 역할을 부여해 달라고 요청하세요.

  • 조직 결제 계정 관리자: BillingAccountBinding 리소스를 읽고, 나열하고, 만들고, 업데이트합니다. 조직 IAM 관리자에게 organization-billing-manager 역할을 부여해 달라고 요청하세요.

kubeconfig 파일 가져오기

관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  1. 관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.

  2. 관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의 MANAGEMENT_API_SERVER_KUBECONFIG를 바꿉니다.

새 결제 계정 만들기

결제 계정은 namenamespace로 고유하게 식별됩니다. 결제 계정을 만들려면 커스텀 리소스를 사용하여 namenamespace를 설정하세요.

  1. YAML 파일을 만들고 BillingAccount 커스텀 리소스와 다음 콘텐츠를 추가합니다.

    apiVersion: billing.gdc.goog/v1
    kind: BillingAccount
    metadata:
      namespace: platform
      name: BIL_ACCOUNT_NAME
    spec:
      displayName: BIL_DISPLAY_NAME
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: "012345-6789AB-CDEF01"
    

    다음 변수를 바꿉니다.

    • BIL_ACCOUNT_NAME: 결제 계정의 이름입니다. 예를 들면 test-billing-account입니다.
    • BIL_DISPLAY_NAME: 결제 계정 표시 이름입니다. 예를 들면 "Test Billing Account"입니다.
  2. 결제 구성 유형을 확인합니다. Distributed Cloud 결제 계정에는 다음 결제 구성 중 하나가 있어야 합니다.

    • cloudBillingConfig: 기본 결제 구성입니다. 이 구성은 Cloud Billing 계정 ID를 저장합니다.

    • customConfig: 파트너가 조직에 청구할 결제 구성을 저장하는 맞춤 구성입니다. customConfig는 필수 키 payment-config-type이 있는 키-값 문자열의 사전을 지원합니다.

    다음 예는 다양한 결제 구성을 위한 BillingAccount YAML 파일 스니펫을 보여줍니다.

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    CLOUD_BILLING_ACCOUNT_ID를Google Cloud 청구 계정 ID로 바꿉니다.

    customConfig

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": PAYMENT_CONFIG_TYPE
    

    PAYMENT_CONFIG_TYPE을 맞춤 결제 구성에 선택한 결제 구성 유형으로 바꿉니다.

    조직의 customConfig 구성 정보가 없는 경우 다음 세부정보를 입력합니다.

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": "N/A"
    

    다음 YAML 파일은 cloudBillingConfig 구성이 포함된 완전한 BillingAccount 리소스를 보여줍니다.

    apiVersion: billing.gdc.goog/v1
    kind: BillingAccount
    metadata:
      namespace: platform
      name: test-billing-account
    spec:
      displayName: "Test Billing Account"
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: "012345-6789AB-CDEF01"
    
  3. YAML 파일을 저장합니다. kubectl CLI를 실행하여 청구할 특정 조직 또는 프로젝트의 Management API 서버에 리소스를 적용합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    MANAGEMENT_API_SERVER_KUBECONFIG를 관리 API 서버 kubeconfig 파일로 바꿉니다.

이 섹션에서는 조직 또는 프로젝트를 BillingAccount에 연결하는 단계를 설명합니다.

프로젝트를 BillingAccount에 연결하려면 다음 단계를 따르세요.

  1. 파일에 다음 내용을 추가합니다(billingaccountbinding.yaml).

    • billingAccountRef 섹션에서 name 필드를 연결하려는 BillingAccountname 필드의 콘텐츠로 채웁니다.
    • metadata 섹션에서 BillingAccount 리소스의 동일한 필드에 있는 콘텐츠로 namespace 필드를 채웁니다.

    이 예시에서 프로젝트 네임스페이스는 PROJECT_NAME입니다.

    apiVersion: billing.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: PROJECT_NAME
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    

    PROJECT_NAME을 결제 계정에 바인딩된 프로젝트의 이름으로 바꿉니다.

  2. 다음 kubectl 명령어를 실행하여 billingaccountbinding.yaml 파일을 적용합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

조직을 BillingAccount에 연결하려면 다음 단계를 따르세요.

  1. 다음 콘텐츠를 YAML 파일 billingaccountbinding.yaml에 추가합니다.

    • billingAccountRef 섹션에서 연결하려는 BillingAccountname 필드에 있는 콘텐츠로 name 필드를 채웁니다.
    • metadata 섹션에서 BillingAccount 리소스의 동일한 필드의 콘텐츠로 namespace 필드를 채웁니다. 이 예에서 조직 네임스페이스는 platform입니다.
    apiVersion: billing.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. 다음 kubectl 명령어를 실행하여 billingaccountbinding.yaml 파일을 적용합니다.

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

Distributed Cloud에서는 결제 계정을 삭제할 수 없습니다. 결제 구성을 변경해야 하는 경우 BillingAccountBinding를 수정하여 기존 결제 계정에서 조직 또는 프로젝트를 연결 해제해야 합니다. 이 사용 사례의 시나리오에는 다음 예가 포함됩니다.

  • 회사 내 회계 규칙에 따라 개발자 및 프로덕션 수준 워크로드와 관련된 요금을 별도의 계정으로 분할해야 합니다.
  • 1년 기간의 고객 계약에 요금을 청구하기 위해 결제 계정을 만듭니다. 계약이 만료되면 1년을 초과하는 남은 기간에 대해 요금을 청구해야 합니다.

조직 또는 프로젝트에서 결제 계정을 연결 해제하려면 다음을 수행하세요.

  1. 프로젝트에 연결할 새 BillingAccount를 만듭니다. 이 계정은 이전 계정을 대체합니다.

  2. 프로젝트 또는 platform 네임스페이스에서 BillingAccountBinding 리소스 YAML 파일을 찾아 다음 필드를 수정합니다.

    • billingAccountRef 섹션에서 name 필드에 새 BillingAccount 이름을 입력합니다.

다음 예시는 계정 expired-billing-account이 프로젝트 project-one에 연결된 BillingAccountBinding YAML 파일을 보여줍니다.

  apiVersion: billing.gdc.goog/v1
  kind: BillingAccountBinding
  metadata:
    # The name of a BillingAccountBinding will typically always be `billing`.
    name: billing
    # This is the project.
    namespace: project-one
  spec:
    billingAccountRef:
      # This is an example of a BillingAccount that has expired.
      name: expired-billing-account
      namespace: platform

다음 예에서는 new billing account이라는 새 계정을 연결하도록 수정된 이전 예의 BillingAccountBinding YAML 파일을 보여줍니다.

  apiVersion: billing.gdc.goog/v1
  kind: BillingAccountBinding
  metadata:
    name: billing
    # This is the project.
    namespace: project-one
  spec:
    billingAccountRef:
      # This is the example of the new BillingAccount.
      name: new-billing-account
      namespace: platform