Crear y vincular cuentas de facturación

Los entornos aislados de Google Distributed Cloud (GDC) requieren una cuenta de facturación para hacer un seguimiento de los costes de los proyectos y las organizaciones. Si no vinculas una cuenta de facturación a una organización o un proyecto, perderás los datos de costes asociados al recurso.

Para cobrar al cliente por el uso del servicio, todas las cuentas de facturación de una organización deben usar una única hoja de precios.

Antes de empezar

Pide al administrador de gestión de identidades y accesos de tu organización que te conceda los siguientes roles obligatorios. Estos roles se vinculan al espacio de nombres del proyecto para la facturación a nivel de proyecto o al espacio de nombres de la plataforma para la facturación a nivel de organización:

  • Administrador de la cuenta de facturación de la organización: crea, gestiona y vincula el recurso BillingAccount. Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol organization-billing-account-admin.

  • Usuario de cuenta de facturación de organización: lee, enumera y vincula el recurso BillingAccount. Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol organization-billing-account-user.

  • Gestor de cuentas de facturación de la organización: puede leer, enumerar, crear y actualizar el recurso BillingAccountBinding. Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol organization-billing-manager.

Obtener el archivo kubeconfig

Para ejecutar comandos en el servidor de la API Management, asegúrate de tener los siguientes recursos:

  1. Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.

  2. Usa la ruta al archivo kubeconfig del servidor de la API Management para sustituir MANAGEMENT_API_SERVER_KUBECONFIG en estas instrucciones.

Crear una cuenta de facturación

Una cuenta de facturación se identifica de forma única por su name y su namespace. Para crear una cuenta de facturación, usa un recurso personalizado para establecer name y namespace:

  1. Crea un archivo YAML y añade el recurso personalizado BillingAccount y el siguiente contenido:

    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"
    

    Sustituye las siguientes variables:

    • BIL_ACCOUNT_NAME: el nombre de la cuenta de facturación. Por ejemplo, test-billing-account.
    • BIL_DISPLAY_NAME: el nombre visible de la cuenta de facturación. Por ejemplo, "Test Billing Account".
  2. Verifica el tipo de configuración de pago. Las cuentas de facturación de Distributed Cloud deben tener una de las siguientes configuraciones de pago:

    • cloudBillingConfig: la configuración de pago predeterminada. Esta configuración almacena un ID de cuenta de facturación de Cloud.

    • customConfig: una configuración personalizada para que los partners almacenen su configuración de pago para facturar a la organización. customConfig admite un diccionario de cadenas clave-valor con una clave obligatoria payment-config-type.

    En los siguientes ejemplos se muestran fragmentos de archivos BillingAccount YAML para diferentes configuraciones de pago:

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Sustituye CLOUD_BILLING_ACCOUNT_ID por elGoogle Cloud ID de tu cuenta de facturación.

    customConfig

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": PAYMENT_CONFIG_TYPE
    

    Sustituye PAYMENT_CONFIG_TYPE por el tipo de configuración de pago que hayas elegido para tu configuración de facturación personalizada.

    Si no tienes la información de la configuración de tu organización, introduce los siguientes datos:customConfig

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": "N/A"
    

    En el siguiente archivo YAML se muestra un recurso BillingAccount completo con la configuración de 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. Guarda el archivo YAML. Ejecuta la CLI de kubectl para aplicar el recurso en el servidor de la API Management de la organización o el proyecto específicos que quieras facturar:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    Sustituye MANAGEMENT_API_SERVER_KUBECONFIG por el archivo kubeconfig del servidor de la API Management.

En esta sección se explica cómo vincular una organización o un proyecto a una BillingAccount.

Para vincular un proyecto a un BillingAccount, haz lo siguiente:

  1. Añade el siguiente contenido al archivo billingaccountbinding.yaml:

    • En la sección billingAccountRef, rellena el campo name con el contenido del campo name del BillingAccount que quieras vincular.
    • En la sección metadata, rellena el campo namespace con el contenido del campo idéntico del recurso BillingAccount.

    En este ejemplo, el espacio de nombres del proyecto es PROJECT_NAME:

    apiVersion: billing.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: PROJECT_NAME
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    

    Sustituye PROJECT_NAME por el nombre del proyecto vinculado a la cuenta de facturación.

  2. Ejecuta el siguiente comando kubectl para aplicar el archivo billingaccountbinding.yaml:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

Para vincular una organización a un BillingAccount, sigue estos pasos:

  1. Añade el siguiente contenido al archivo YAML billingaccountbinding.yaml:

    • En la sección billingAccountRef, rellena el campo name con el contenido del campo name del BillingAccount que quieras vincular.
    • En la sección metadata, rellena el campo namespace con el contenido del campo idéntico del recurso BillingAccount. En este ejemplo, el espacio de nombres de la organización es platform:
    apiVersion: billing.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. Ejecuta el siguiente comando kubectl para aplicar el archivo billingaccountbinding.yaml:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

En Distributed Cloud, no puedes eliminar una cuenta de facturación. Si necesitas cambiar la configuración de facturación, debes desvincular una organización o un proyecto de una cuenta de facturación modificando el BillingAccountBinding. Estos son algunos ejemplos de situaciones en las que se puede usar este caso práctico:

  • Las normas de contabilidad de su empresa exigen que divida los cargos asociados a las cargas de trabajo de nivel de desarrollo y de producción en cuentas independientes.
  • Crea una cuenta de facturación para cobrar a un cliente por un contrato de un año. Cuando el contrato caduque, debes cobrar el periodo restante que supere un año.

Para desvincular una cuenta de facturación de una organización o un proyecto, sigue estos pasos:

  1. Crea un BillingAccount para vincularlo al proyecto. Esta cuenta sustituirá a la anterior.

  2. Busca el archivo YAML del recurso BillingAccountBinding en el proyecto o en el espacio de nombres platform y modifica los siguientes campos:

    • En la sección billingAccountRef, rellena el campo name con un nuevo nombre BillingAccount.

En el siguiente ejemplo se muestra un archivo YAML BillingAccountBinding con la cuenta expired-billing-account vinculada al proyecto 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

En el ejemplo siguiente se muestra el archivo YAML BillingAccountBinding del ejemplo anterior modificado para vincular una cuenta nueva llamada 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