本文档介绍了创建 Google Distributed Cloud (GDC) 气隙结算账号以跟踪资源使用情况的步骤。
Distributed Cloud 环境需要一个结算账号来跟踪项目和组织的使用费用。组织内的所有结算账号都使用一份价目表向客户收取服务使用费。如果您未将结算账号与组织或项目相关联,则会丢失与资源关联的费用数据,从而导致费用差异。
本文档适用于平台管理员或应用运维人员群组中在 GDC 中创建和管理结算账号的开发者。 如需了解详情,请参阅 GDC 网闸隔离配置 文档的受众。
准备工作
请求 IAM 角色
请与您的组织 IAM 管理员联系,以请求对您的项目使用以下角色:
全局组织结算账号管理员 (
organization-billing-account-admin):创建、管理和绑定BillingAccount资源。全局组织结算账号用户 (
organization-billing-account-user):读取、列出和绑定BillingAccount资源。全局组织结算账号管理员 (
organization-billing-manager):读取、列出、创建和更新BillingAccountBinding资源。
这些角色绑定到项目命名空间(用于项目级结算)或平台命名空间(用于组织级结算)。
获取 kubeconfig 文件
如需针对组织全局集群运行命令,请确保您拥有以下资源:
登录并生成组织全局集群的 kubeconfig 文件(如果您没有)。
使用组织全局集群的 kubeconfig 文件的路径替换这些说明中的
ORG_GLOBAL_CLUSTER_KUBECONFIG。
创建新结算账号
kubectl
结算账号由其 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"。
验证您的支付配置类型。Distributed Cloud 结算账号必须具有以下支付配置之一:
cloudBillingConfig:默认支付配置。此配置存储 Cloud Billing 帐号 ID。customConfig:合作伙伴存储其支付配置以向组织收费的自定义配置。customConfig支持键值对字符串字典,其中包含一个强制性键payment-config-type。
以下示例展示了针对不同支付配置的
BillingAccountYAML 文件代码段: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.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 以在组织全局集群中应用该资源:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yaml将
ORG_GLOBAL_CLUSTER_KUBECONFIG替换为组织全局集群 kubeconfig 文件。
CLI
如需创建结算账号,请使用 gdcloud billing accounts create 命令。
如需了解详情,请参阅 gdcloud billing accounts create。
将组织或项目与结算账号相关联
您必须先将结算账号与组织相关联,然后才能创建任何项目。 这样可确保在组织内创建的所有项目默认继承有效的结算账号。
您还可以将项目明确关联到特定结算账号,以使其与组织的结算账号不同。
关联组织
如需将组织与 BillingAccount 相关联,请执行以下操作:
将以下内容添加到 YAML 文件
billingaccountbinding.yaml:- 在
billingAccountRef部分中,使用您要关联的BillingAccount中的name字段的内容填充name字段。 - 在
metadata部分中,使用BillingAccount资源中相同字段的值填充namespace字段。在此示例中,BillingAccount资源中的组织命名空间为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 ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml检查
BillingAccountBinding的状态,并验证是否没有错误:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
关联项目
如需将项目与 BillingAccount 相关联,请执行以下操作:
将以下内容添加到文件
billingaccountbinding.yaml:- 在
billingAccountRef部分中,使用您要关联的BillingAccount中的name字段的内容填充name字段。 - 在
metadata部分中,使用BillingAccount资源中相同字段的内容填充namespace字段。
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform执行以下变量替换操作:
- 将
PROJECT_NAME替换为与结算账号绑定的项目的名称。 BIL_ACCOUNT_NAME:结算账号的名称,例如test-billing-account。
- 在
运行以下
kubectl命令以应用billingaccountbinding.yaml文件:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml检查
BillingAccountBinding的状态,并验证是否没有错误:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME将
PROJECT_NAME替换为与结算账号绑定的项目的名称。
列出结算账号绑定
查看组织中所有命名空间的所有已部署 BillingAccountBinding 资源及其当前状态的列表:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_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 来更改与组织或项目关联的结算账号。
此用例的一些场景包括以下示例:
- 您公司内的会计规则要求您将与开发者和生产级工作负载相关的费用拆分为单独的账号。
您创建一个结算账号,用于向客户收取为期一年的合同费用。合同到期后,您必须收取剩余期限(超过一年)的费用。
针对项目
请按照以下步骤更改项目的关联结算账号:
创建一个新的
BillingAccount以与项目相关联。此账号将替换旧账号。在项目命名空间中找到
BillingAccountBinding资源 YAML 文件,以查看关联的结算账号:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME修改
BillingAccountBinding以关联到新的结算账号。在billingAccountRef部分中,使用在本部分第 1 步中创建的新BillingAccount名称填充name字段。kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME进行更改后,请确保结算账号已正确更新:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
以下示例展示了一个 BillingAccountBinding YAML 文件,其中账号 expired-billing-account 与项目 project-one 相关联:
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
以下示例展示了经过修改的先前示例中的 BillingAccountBinding YAML 文件,用于关联名为 new-billing-account 的新账号:
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 ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform修改
BillingAccountBinding以关联到新的结算账号。在billingAccountRef部分中,使用在第 1 步中创建的新BillingAccount名称填充name字段。kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platform进行更改后,请确保结算账号已正确更新:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform