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 サーバーに対してコマンドを実行するには、次のリソースがあることを確認します。
まだ kubeconfig ファイルがない場合は、ログインしてグローバル API サーバーの kubeconfig ファイルを生成します。
これらの手順で
GLOBAL_API_SERVER_KUBECONFIGを置き換えるには、グローバル API サーバーの 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 請求先アカウント ID が保存されます。customConfig: パートナーが組織に請求するための支払い構成を保存するためのカスタム構成。customConfigは、Key-Value 文字列のディクショナリをサポートしています。必須のキーは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セクションで、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: 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フィールドに入力します。この例では、組織の 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
請求先アカウントのバインディングを一覧表示する
組織内のすべての 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'
このコマンドは、各 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を作成します。このアカウントは古いアカウントに代わるものです。プロジェクトの Namespace で
BillingAccountBindingリソース YAML ファイルを見つけて、リンクされている請求先アカウントを確認します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEBillingAccountBindingを変更して、新しい請求先アカウントにリンクします。billingAccountRefセクションで、nameフィールドに、このセクションの手順 1 で作成した新しいBillingAccount名を入力します。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
組織にリンクされている請求先アカウントを変更する
組織にリンクされている請求先アカウントを変更する手順は次のとおりです。
platformNamespace でBillingAccountBindingリソース YAML ファイルを見つけて、リンクされている請求先アカウントを確認します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platformBillingAccountBindingを変更して、新しい請求先アカウントにリンクします。billingAccountRefセクションで、nameフィールドにステップ 1 で作成した新しいBillingAccount名を入力します。kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform変更を加えた後、請求先アカウントが正しく更新されていることを確認します。
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform