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 global: 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 la cuenta de facturación de la organización global: 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 organizaciones globales: lee, enumera, crea y actualiza 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 Global, asegúrate de tener los siguientes recursos:

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

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

Crear una cuenta de facturación

Una cuenta de facturación se identifica de forma exclusiva 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.global.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.global.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 global:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    Sustituye GLOBAL_API_SERVER_KUBECONFIG por el archivo kubeconfig del servidor de la API Global.

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.global.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 GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Comprueba el estado de BillingAccountBinding y verifica que no haya errores:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

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

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.global.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 GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Comprueba el estado de BillingAccountBinding y verifica que no haya errores:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    

Mostrar vinculaciones de cuentas de facturación

Para ver una lista de todos los recursos BillingAccountBinding implementados y su estado actual en todos los espacios de nombres de la organización, haz lo siguiente:

  kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get billingaccountbinding -A -o 'custom-columns=NAME:metadata.name,NAMESPACE:metadata.namespace,BillingAccountName:spec.billingAccountRef.name,STATUS:status.conditions[0].status'

Este comando muestra el NAME, el NAMESPACE, el BillingAccountName y el STATUS de cada BillingAccountBinding. El campo STATUS indica si el enlace está activo o si hay algún error.

Jerarquía y comportamiento de las cuentas de facturación

Cuando se vinculan cuentas de facturación a organizaciones y proyectos, se aplican la siguiente jerarquía y los siguientes comportamientos:

  • La asociación a nivel de proyecto tiene prioridad: si un proyecto específico, como project-A, está vinculado explícitamente a un BillingAccount (como billing-account-1), todos los costes de project-A se facturan exclusivamente a billing-account-1. Esta asociación a nivel de proyecto sigue siendo válida independientemente de los ajustes de la cuenta de facturación a nivel de organización.

  • Asociación a nivel de organización para proyectos no vinculados: si tu organización está vinculada a un BillingAccount (como billing-account-0), todos los proyectos de esa organización que no tengan su propio BillingAccountBinding explícito se asociarán automáticamente a billing-account-0 y se les facturará. Esta asociación suele aplicarse al cabo de unos 15 minutos.

  • Cambiar las cuentas de facturación de una organización: si cambia la cuenta de facturación vinculada a una organización (por ejemplo, de billing-account-0 a billing-account-new), los proyectos que antes heredaban billing-account-0 no cambiarán automáticamente a billing-account-new. Estos proyectos seguirán vinculados a billing-account-0 y su cuenta de facturación se deberá actualizar manualmente si quieres que usen billing-account-new.

Cambiar la cuenta de facturación vinculada

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

  • Las normas de contabilidad de tu empresa exigen que dividas 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.

Cambiar la cuenta de facturación vinculada de un proyecto

Sigue estos pasos para cambiar la cuenta de facturación vinculada de un proyecto:

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

  2. Busca el archivo YAML del recurso BillingAccountBinding en el espacio de nombres del proyecto para ver qué cuenta de facturación está vinculada:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Modifica el BillingAccountBinding para vincularlo a la nueva cuenta de facturación. En la sección billingAccountRef, rellena el campo name con el nombre del BillingAccount que has creado en el paso 1 de esta sección.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. Después de hacer los cambios, comprueba que la cuenta de facturación se haya actualizado correctamente:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

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

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

Cambiar la cuenta de facturación vinculada de una organización

Sigue estos pasos para cambiar la cuenta de facturación vinculada de una organización:

  1. Crea un nuevo BillingAccount para vincularlo a la organización. Esta cuenta sustituye a la anterior.

  2. Busca el archivo YAML del recurso BillingAccountBinding en el espacio de nombres platform para ver qué cuenta de facturación está vinculada:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Modifica el BillingAccountBinding para vincularlo a la nueva cuenta de facturación. En la sección billingAccountRef, rellena el campo name con el nuevo nombre de BillingAccount que has creado en el paso 1.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Después de hacer los cambios, comprueba que la cuenta de facturación se haya actualizado correctamente:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform