Google Distributed Cloud (GDC) 空气隔离环境需要结算账号来跟踪项目和组织的费用。如果您未将结算账号与组织或项目相关联,则会丢失与相应资源相关联的费用数据。
为了向客户收取服务使用费,组织内的所有结算账号都使用同一份价目表。
准备工作
请让您的组织 IAM 管理员为您授予以下必需的角色。这些角色会绑定到项目级结算的项目命名空间或组织级结算的平台命名空间:
组织结算账号管理员:创建、管理和绑定
BillingAccount
资源。请让组织 IAM 管理员为您授予organization-billing-account-admin
角色。组织结算账号用户:读取、列出和绑定
BillingAccount
资源。请让组织 IAM 管理员为您授予organization-billing-account-user
角色。组织结算账号管理员:读取、列出、创建和更新
BillingAccountBinding
资源。请让您的组织 IAM 管理员为您授予organization-billing-manager
角色。
获取 kubeconfig 文件
如需针对管理 API 服务器运行命令,请确保您拥有以下资源:
登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。
使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的
MANAGEMENT_API_SERVER_KUBECONFIG
。
创建新结算账号
结算账号由其 name
和 namespace
唯一标识。如需创建结算账号,请使用自定义资源来建立 name
和 namespace
:
创建一个 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"
。
- BIL_ACCOUNT_NAME:结算账号的名称。
例如
验证您的付款配置类型。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 文件展示了一个完整的
BillingAccount
资源,其中包含cloudBillingConfig
配置: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"
保存 YAML 文件。运行
kubectl
CLI 以在 Management API 服务器中应用资源,从而为要结算的特定组织或项目设置结算账号:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
将
MANAGEMENT_API_SERVER_KUBECONFIG
替换为管理 API 服务器 kubeconfig 文件。
将组织或项目与结算账号相关联
本部分提供了一系列将组织或项目与 BillingAccount
相关联的步骤。
关联项目
如需将项目与 BillingAccount
相关联,请执行以下操作:
将以下内容添加到文件
billingaccountbinding.yaml
中:- 在
billingAccountRef
部分中,使用要链接的BillingAccount
中的name
字段的内容填充name
字段。 - 在
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
替换为与结算账号绑定的项目的名称。- 在
运行以下
kubectl
命令以应用billingaccountbinding.yaml
文件:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
关联组织
如需将组织与 BillingAccount
相关联,请执行以下操作:
将以下内容添加到 YAML 文件
billingaccountbinding.yaml
中:- 在
billingAccountRef
部分中,使用要关联的BillingAccount
中的name
字段的内容填充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
- 在
运行以下
kubectl
命令以应用billingaccountbinding.yaml
文件:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
解除结算账号与组织或项目的关联
在 Distributed Cloud 中,您无法删除结算账号。如果您需要更改结算配置,必须通过修改 BillingAccountBinding
将组织或项目与现有结算账号取消关联。此使用场景的一些示例包括:
- 您公司的会计规则要求您将与开发者和生产级工作负载相关的费用分摊到不同的账号中。
- 您创建了一个结算账号,用于为客户合同收取一年的费用。合同到期时,您必须为超过一年的剩余期限支付费用。
如需解除结算账号与组织或项目的关联,请执行以下操作:
创建新的
BillingAccount
以关联到项目。此账号将取代旧账号。在项目或
platform
命名空间中找到BillingAccountBinding
资源 YAML 文件,然后修改以下字段:- 在
billingAccountRef
部分中,使用新的BillingAccount
名称填充name
字段。
- 在
以下示例展示了一个 BillingAccountBinding
YAML 文件,其中账号 expired-billing-account
已关联到项目 project-one
:
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
以下示例展示了之前示例中的 BillingAccountBinding
YAML 文件,该文件经过修改,可用于关联名为 new billing account
的新账号:
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