請求先アカウントを作成してリンクする

Google Distributed Cloud(GDC)のエアギャップ環境では、プロジェクトと組織の費用を追跡するために請求先アカウントが必要です。請求先アカウントを組織またはプロジェクトにリンクしないと、リソースに関連付けられた費用データが失われます。

サービスの使用料金を顧客に請求するには、組織内のすべての請求先アカウントで単一の料金表を使用します。

始める前に

組織の IAM 管理者に、次の必要なロールを付与するよう依頼します。これらのロールは、プロジェクト レベルの課金の場合はプロジェクト Namespace に、組織レベルの課金の場合はプラットフォーム Namespace にバインドされます。

  • グローバル組織の請求先アカウント管理者: BillingAccount リソースを作成、管理、バインドします。組織の IAM 管理者に organization-billing-account-admin ロールを付与するよう依頼します。

  • グローバル組織の請求先アカウント ユーザー: BillingAccount リソースの読み取り、一覧表示、バインドを行います。組織の IAM 管理者に organization-billing-account-user ロールを付与するよう依頼します。

  • グローバル組織の請求先アカウント管理者: BillingAccountBinding リソースの読み取り、一覧表示、作成、更新を行います。組織の IAM 管理者に organization-billing-manager ロールを付与するよう依頼します。

kubeconfig ファイルを取得する

Global API サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。

  1. まだ kubeconfig ファイルがない場合は、ログインしてグローバル API サーバーの kubeconfig ファイルを生成します。

  2. これらの手順で GLOBAL_API_SERVER_KUBECONFIG を置き換えるには、グローバル API サーバーの kubeconfig ファイルのパスを使用します。

新しい請求先アカウントの作成

請求先アカウントは、namenamespace によって一意に識別されます。請求先アカウントを作成するには、カスタム リソースを使用して namenamespace を確立します。

  1. 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"
  2. お支払い構成のタイプを確認します。Distributed Cloud 請求先アカウントには、次のいずれかの支払い構成が必要です。

    • cloudBillingConfig: デフォルトの支払い構成。この構成には、Cloud 請求先アカウント ID が保存されます。

    • customConfig: パートナーが組織に請求するための支払い構成を保存するためのカスタム構成。customConfig は、Key-Value 文字列のディクショナリをサポートしています。必須のキーは 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.global.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 を実行して、グローバル API サーバーにリソースを適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    GLOBAL_API_SERVER_KUBECONFIG は、グローバル API サーバーの kubeconfig ファイルに置き換えます。

このセクションでは、組織またはプロジェクトを BillingAccount にリンクする一連の手順について説明します。

プロジェクトを BillingAccount にリンクする手順は次のとおりです。

  1. ファイル billingaccountbinding.yaml に次の内容を追加します。

    • billingAccountRef セクションで、リンクする BillingAccountname フィールドの内容を name フィールドに入力します。
    • metadata セクションで、namespace フィールドに 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: platform
    

    PROJECT_NAME は、課金アカウントにバインドされているプロジェクトの名前に置き換えます。

  2. 次の kubectl コマンドを実行して billingaccountbinding.yaml ファイルを適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. BillingAccountBinding のステータスを確認し、エラーがないことを確認します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    PROJECT_NAME は、課金アカウントにバインドされているプロジェクトの名前に置き換えます。

組織を BillingAccount にリンクする手順は次のとおりです。

  1. YAML ファイル billingaccountbinding.yaml に次の内容を追加します。

    • billingAccountRef セクションで、リンクする BillingAccountname フィールドの内容を name フィールドに入力します。
    • metadata セクションで、BillingAccount リソースの同じフィールドの内容を namespace フィールドに入力します。この例では、組織の Namespace は platform です。
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. 次の kubectl コマンドを実行して billingaccountbinding.yaml ファイルを適用します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. BillingAccountBinding のステータスを確認し、エラーがないことを確認します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    

請求先アカウントのバインディングを一覧表示する

組織内のすべての Namespace にデプロイされたすべての 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'

このコマンドは、各 BillingAccountBindingNAMENAMESPACEBillingAccountNameSTATUS を出力します。STATUS フィールドは、バインディングが有効かどうか、エラーがあるかどうかを示します。

請求先アカウントの階層と動作

請求先アカウントを組織とプロジェクトにリンクする際は、次の階層と動作が適用されます。

  • プロジェクト レベルの関連付けが優先される: project-A などの特定のプロジェクトが BillingAccountbilling-account-1 など)に明示的にリンクされている場合、project-A のすべての費用は billing-account-1 にのみ請求されます。このプロジェクト レベルの関連付けは、組織レベルの請求先アカウントの設定に関係なく有効です。

  • リンクされていないプロジェクトの組織レベルの関連付け: 組織が BillingAccountbilling-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 年を超える残りの期間の料金を請求する必要があります。

プロジェクトにリンクされている請求先アカウントを変更する

プロジェクトにリンクされている請求先アカウントを変更する手順は次のとおりです。

  1. プロジェクトにリンクする新しい BillingAccount を作成します。このアカウントは古いアカウントに代わるものです。

  2. プロジェクトの Namespace で BillingAccountBinding リソース YAML ファイルを見つけて、リンクされている請求先アカウントを確認します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. BillingAccountBinding を変更して、新しい請求先アカウントにリンクします。billingAccountRef セクションで、name フィールドに、このセクションの手順 1 で作成した新しい BillingAccount 名を入力します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. 変更を加えた後、請求先アカウントが正しく更新されていることを確認します。

    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

組織にリンクされている請求先アカウントを変更する

組織にリンクされている請求先アカウントを変更する手順は次のとおりです。

  1. 組織にリンクする新しい BillingAccount を作成します。このアカウントは古いアカウントに代わるものです。

  2. platform Namespace で BillingAccountBinding リソース YAML ファイルを見つけて、リンクされている請求先アカウントを確認します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. BillingAccountBinding を変更して、新しい請求先アカウントにリンクします。billingAccountRef セクションで、name フィールドにステップ 1 で作成した新しい BillingAccount 名を入力します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. 変更を加えた後、請求先アカウントが正しく更新されていることを確認します。

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform