Google Distributed Cloud (GDC) 에어갭 환경에서는 프로젝트 및 조직의 비용을 추적하기 위해 결제 계정이 필요합니다. 결제 계정을 조직 또는 프로젝트에 연결하지 않으면 리소스와 연결된 비용 데이터가 손실됩니다.
고객에게 서비스 사용량을 청구하려면 조직 내 모든 결제 계정에서 단일 가격표를 사용합니다.
시작하기 전에
조직 IAM 관리자에게 다음 필수 역할을 부여해 달라고 요청하세요. 이러한 역할은 프로젝트 수준 결제의 경우 프로젝트 네임스페이스에 바인딩되거나 조직 수준 결제의 경우 플랫폼 네임스페이스에 바인딩됩니다.
전역 조직 결제 계정 관리자:
BillingAccount리소스를 만들고, 관리하고, 바인딩합니다. 조직 IAM 관리자에게organization-billing-account-admin역할을 부여해 달라고 요청하세요.전역 조직 결제 계정 사용자:
BillingAccount리소스를 읽고, 나열하고, 바인딩합니다. 조직 IAM 관리자에게organization-billing-account-user역할을 부여해 달라고 요청하세요.전역 조직 결제 계정 관리자:
BillingAccountBinding리소스를 읽고, 나열하고, 만들고, 업데이트합니다. 조직 IAM 관리자에게organization-billing-manager역할을 부여해 달라고 요청하세요.
kubeconfig 파일 가져오기
전역 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
kubeconfig 파일이 없는 경우 로그인하여 생성합니다.
전역 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의
GLOBAL_API_SERVER_KUBECONFIG를 바꿉니다.
새 결제 계정 만들기
결제 계정은 name 및 namespace로 고유하게 식별됩니다. 결제 계정을 만들려면 커스텀 리소스를 사용하여 name 및 namespace를 설정하세요.
YAML 파일을 만들고
BillingAccount커스텀 리소스와 다음 콘텐츠를 추가합니다.apiVersion: billing.global.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"입니다.
- BIL_ACCOUNT_NAME: 결제 계정의 이름입니다.
예를 들면
결제 구성 유형을 확인합니다. Distributed Cloud 결제 계정에는 다음 결제 구성 중 하나가 있어야 합니다.
cloudBillingConfig: 기본 결제 구성입니다. 이 구성은 Cloud Billing 계정 ID를 저장합니다.customConfig: 파트너가 조직에 청구하기 위해 결제 구성을 저장하는 맞춤 구성입니다.customConfig는 필수 키payment-config-type이 있는 키-값 문자열의 사전을 지원합니다.
다음 예는 다양한 결제 구성을 위한
BillingAccountYAML 파일 스니펫을 보여줍니다.cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDCLOUD_BILLING_ACCOUNT_ID를Google Cloud 청구 계정 ID로 바꿉니다.customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPEPAYMENT_CONFIG_TYPE을 맞춤 결제 구성에 선택한 결제 구성 유형으로 바꿉니다.조직의
customConfig구성 정보가 없는 경우 다음 세부정보를 입력합니다.spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"다음 YAML 파일은
cloudBillingConfig구성이 포함된 완전한BillingAccount리소스를 보여줍니다.apiVersion: billing.global.gdc.goog/v1 kind: BillingAccount metadata: namespace: platform name: test-billing-account spec: displayName: "Test Billing Account" paymentSystemConfig: cloudBillingConfig: accountID: "012345-6789AB-CDEF01"YAML 파일을 저장합니다.
kubectlCLI를 실행하여 전역 API 서버에 리소스를 적용합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yamlGLOBAL_API_SERVER_KUBECONFIG를 전역 API 서버 kubeconfig 파일로 바꿉니다.
조직 또는 프로젝트를 결제 계정에 연결
이 섹션에서는 조직 또는 프로젝트를 BillingAccount에 연결하는 단계를 설명합니다.
프로젝트 연결
프로젝트를 BillingAccount에 연결하려면 다음 단계를 따르세요.
파일에 다음 내용을 추가합니다(
billingaccountbinding.yaml).billingAccountRef섹션에서 연결할BillingAccount의name필드에 있는 콘텐츠로name필드를 채웁니다.metadata섹션에서BillingAccount리소스의 동일한 필드의 콘텐츠로namespace필드를 채웁니다.
이 예에서 프로젝트 네임스페이스는 PROJECT_NAME입니다.
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platformPROJECT_NAME을 결제 계정에 바인딩된 프로젝트의 이름으로 바꿉니다.다음
kubectl명령어를 실행하여billingaccountbinding.yaml파일을 적용합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlBillingAccountBinding의 상태를 확인하고 오류가 없는지 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEPROJECT_NAME을 결제 계정에 바인딩된 프로젝트의 이름으로 바꿉니다.
조직 연결
조직을 BillingAccount에 연결하려면 다음 단계를 따르세요.
YAML 파일
billingaccountbinding.yaml에 다음 콘텐츠를 추가합니다.billingAccountRef섹션에서 연결하려는BillingAccount의name필드에 있는 콘텐츠로name필드를 채웁니다.metadata섹션에서BillingAccount리소스의 동일한 필드의 콘텐츠로namespace필드를 채웁니다. 이 예에서 조직 네임스페이스는platform입니다.
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform다음
kubectl명령어를 실행하여billingaccountbinding.yaml파일을 적용합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlBillingAccountBinding의 상태를 확인하고 오류가 없는지 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
결제 계정 바인딩 나열
조직의 모든 네임스페이스에 배포된 모든 BillingAccountBinding 리소스와 현재 상태의 목록을 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get billingaccountbinding -A -o 'custom-columns=NAME:metadata.name,NAMESPACE:metadata.namespace,BillingAccountName:spec.billingAccountRef.name,STATUS:status.conditions[0].status'
이 명령어는 각 BillingAccountBinding의 NAME, NAMESPACE, BillingAccountName, STATUS를 출력합니다. STATUS 필드는 바인딩이 활성 상태인지 또는 오류가 있는지 나타냅니다.
결제 계정 계층 구조 및 동작
결제 계정을 조직 및 프로젝트에 연결할 때는 다음 계층 구조와 동작이 적용됩니다.
프로젝트 수준 연결이 우선함:
project-A와 같은 특정 프로젝트가BillingAccount(예:billing-account-1)에 명시적으로 연결된 경우project-A의 모든 비용은billing-account-1에만 청구됩니다. 이 프로젝트 수준 연결은 조직 수준 결제 계정 설정과 관계없이 유효합니다.연결되지 않은 프로젝트의 조직 수준 연결: 조직이
BillingAccount(예:billing-account-0)에 연결된 경우 조직 내에 있으며 자체 명시적BillingAccountBinding이 없는 모든 프로젝트가billing-account-0에 자동으로 연결되고 청구됩니다. 이 연결은 일반적으로 약 15분 후에 적용됩니다.조직 결제 계정 변경: 조직에 연결된 결제 계정이 변경되는 경우 (예:
billing-account-0에서billing-account-new로) 이전에billing-account-0를 상속받던 프로젝트는billing-account-new로 자동 전환되지 않습니다. 이러한 프로젝트는billing-account-0에 계속 연결되어 있으며billing-account-new을 사용하려면 결제 계정을 수동으로 업데이트해야 합니다.
연결된 결제 계정 변경
Distributed Cloud에서는 결제 계정을 삭제할 수 없습니다. 결제 구성을 변경해야 하는 경우 BillingAccountBinding를 수정하여 조직 또는 프로젝트에 연결된 결제 계정을 변경해야 합니다. 이 사용 사례의 시나리오에는 다음 예가 포함됩니다.
- 회사 내 회계 규칙에 따라 개발자 및 프로덕션 수준 워크로드와 관련된 요금을 별도의 계정으로 분할해야 합니다.
- 1년 기간의 고객 계약에 요금을 청구하기 위해 결제 계정을 만듭니다. 계약이 만료되면 1년을 초과하는 남은 기간에 대해 요금을 청구해야 합니다.
프로젝트에 연결된 결제 계정 변경
프로젝트에 연결된 결제 계정을 변경하려면 다음 단계를 따르세요.
프로젝트에 연결할 새
BillingAccount만들기 이 계정은 이전 계정을 대체합니다.프로젝트 네임스페이스에서
BillingAccountBinding리소스 YAML 파일을 찾아 연결된 결제 계정을 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME새 결제 계정에 연결되도록
BillingAccountBinding를 수정합니다.billingAccountRef섹션에서 이 섹션의 1단계에서 만든 새BillingAccount이름으로name필드를 채웁니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME변경한 후 결제 계정이 올바르게 업데이트되었는지 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
다음 예시는 계정 expired-billing-account이 프로젝트 project-one에 연결된 BillingAccountBinding YAML 파일을 보여줍니다.
apiVersion: billing.global.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.global.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
조직의 연결된 결제 계정 변경
조직에 연결된 결제 계정을 변경하려면 다음 단계를 따르세요.
조직에 연결할 새
BillingAccount만들기 이 계정은 이전 계정을 대체합니다.platform네임스페이스에서BillingAccountBinding리소스 YAML 파일을 찾아 연결된 결제 계정을 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform새 결제 계정에 연결되도록
BillingAccountBinding를 수정합니다.billingAccountRef섹션에서 1단계에서 만든 새BillingAccount이름으로name필드를 채웁니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform변경한 후 결제 계정이 올바르게 업데이트되었는지 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform