Crea y vincula cuentas de facturación

Los entornos aislados de Google Distributed Cloud (GDC) requieren una cuenta de facturación para hacer un seguimiento de los costos 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 costos asociados al recurso.

Para cobrarle al cliente el uso del servicio, todas las cuentas de facturación de una organización usan una sola hoja de precios.

Antes de comenzar

Pídele al administrador de IAM de tu organización que te otorgue los siguientes roles obligatorios. Estos roles se vinculan al espacio de nombres del proyecto para la facturación a nivel del proyecto o al espacio de nombres de la plataforma para la facturación a nivel de la organización:

  • Administrador de la cuenta de facturación de la organización: Crea, administra y vincula el recurso BillingAccount. Pídele al administrador de IAM de tu organización que te otorgue el rol de organization-billing-account-admin.

  • Usuario de la cuenta de facturación de la organización: Puede leer, enumerar y vincular el recurso BillingAccount. Pídele al administrador de IAM de tu organización que te otorgue el rol de organization-billing-account-user.

  • Administrador de cuentas de facturación de la organización: Puede leer, enumerar, crear y actualizar el recurso BillingAccountBinding. Pídele al administrador de IAM de tu organización que te otorgue el rol de organization-billing-manager.

Obtén el archivo kubeconfig

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

  1. Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.

  2. Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar MANAGEMENT_API_SERVER_KUBECONFIG en estas instrucciones.

Crea una cuenta de facturación nueva

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

  1. Crea un archivo YAML y agrega 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"
    

    Reemplaza las siguientes variables:

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

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

    • customConfig: Es una configuración personalizada para que los socios almacenen su configuración de pagos y facturen 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 YAML de BillingAccount para diferentes configuraciones de pago:

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Reemplaza CLOUD_BILLING_ACCOUNT_ID por el ID de tu cuenta de facturación deGoogle Cloud .

    customConfig

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

    Reemplaza PAYMENT_CONFIG_TYPE por el tipo de configuración de pagos que elegiste para tu configuración de facturación personalizada.

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

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

    En el siguiente archivo YAML, se muestra un recurso BillingAccount completo con la configuración 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 de Management para la organización o el proyecto específicos que deseas facturar:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

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

En esta sección, se proporcionan una serie de pasos para vincular una organización o un proyecto a un BillingAccount.

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

  1. Agrega el siguiente contenido al archivo billingaccountbinding.yaml:

    • En la sección billingAccountRef, completa el campo name con el contenido del campo name en el BillingAccount que deseas vincular.
    • En la sección metadata, completa el campo namespace con el contenido del campo idéntico en el 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
    

    Reemplaza 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, haz lo siguiente:

  1. Agrega el siguiente contenido al archivo YAML billingaccountbinding.yaml:

    • En la sección billingAccountRef, completa el campo name con el contenido del campo name en el BillingAccount que deseas vincular.
    • En la sección metadata, completa el campo namespace con el contenido del campo idéntico en el 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 borrar 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 existente. Para ello, modifica el objeto BillingAccountBinding. Estos son algunos ejemplos de situaciones para este caso de uso:

  • Las reglas de contabilidad de tu empresa exigen que dividas los cargos asociados con las cargas de trabajo a nivel de producción y de desarrollador en cuentas separadas.
  • Creas una cuenta de facturación para cobrar un contrato del cliente por un período de un año. Cuando venza el contrato, debes cobrar el período restante que supere un año.

Para desvincular una cuenta de facturación de una organización o un proyecto, haz lo siguiente:

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

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

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

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 siguiente ejemplo, 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