创建和关联结算账号

Google Distributed Cloud (GDC) 空气隔离环境需要结算账号来跟踪项目和组织的费用。如果您未将结算账号与组织或项目相关联,则会丢失与相应资源相关联的费用数据。

为了向客户收取服务使用费,组织内的所有结算账号都使用同一份价目表。

准备工作

请让您的组织 IAM 管理员为您授予以下必需的角色。这些角色会绑定到项目级结算的项目命名空间或组织级结算的平台命名空间:

  • 组织结算账号管理员:创建、管理和绑定 BillingAccount 资源。请让组织 IAM 管理员为您授予 organization-billing-account-admin 角色。

  • 组织结算账号用户:读取、列出和绑定 BillingAccount 资源。请让组织 IAM 管理员为您授予 organization-billing-account-user 角色。

  • 组织结算账号管理员:读取、列出、创建和更新 BillingAccountBinding 资源。请让您的组织 IAM 管理员为您授予 organization-billing-manager 角色。

获取 kubeconfig 文件

如需针对管理 API 服务器运行命令,请确保您拥有以下资源:

  1. 登录并生成管理 API 服务器的 kubeconfig 文件(如果您还没有)。

  2. 使用管理 API 服务器的 kubeconfig 文件路径替换这些说明中的 MANAGEMENT_API_SERVER_KUBECONFIG

创建新结算账号

结算账号由其 namenamespace 唯一标识。如需创建结算账号,请使用自定义资源来建立 namenamespace

  1. 创建一个 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"
  2. 验证您的付款配置类型。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"
    
  3. 保存 YAML 文件。运行 kubectl CLI 以在 Management API 服务器中应用资源,从而为要结算的特定组织或项目设置结算账号:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    MANAGEMENT_API_SERVER_KUBECONFIG 替换为管理 API 服务器 kubeconfig 文件。

本部分提供了一系列将组织或项目与 BillingAccount 相关联的步骤。

如需将项目与 BillingAccount 相关联,请执行以下操作:

  1. 将以下内容添加到文件 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 替换为与结算账号绑定的项目的名称。

  2. 运行以下 kubectl 命令以应用 billingaccountbinding.yaml 文件:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

如需将组织与 BillingAccount 相关联,请执行以下操作:

  1. 将以下内容添加到 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
    
  2. 运行以下 kubectl 命令以应用 billingaccountbinding.yaml 文件:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

在 Distributed Cloud 中,您无法删除结算账号。如果您需要更改结算配置,必须通过修改 BillingAccountBinding 将组织或项目与现有结算账号取消关联。此使用场景的一些示例包括:

  • 您公司的会计规则要求您将与开发者和生产级工作负载相关的费用分摊到不同的账号中。
  • 您创建了一个结算账号,用于为客户合同收取一年的费用。合同到期时,您必须为超过一年的剩余期限支付费用。

如需解除结算账号与组织或项目的关联,请执行以下操作:

  1. 创建新的 BillingAccount 以关联到项目。此账号将取代旧账号。

  2. 在项目或 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