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 rolorganization-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 rolorganization-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 rolorganization-billing-manager.
Obtener el archivo kubeconfig
Para ejecutar comandos en el servidor de la API Global, asegúrate de tener los siguientes recursos:
Inicia sesión y genera el archivo kubeconfig del servidor de la API global si no tienes uno.
Usa la ruta al archivo kubeconfig del servidor de la API global para sustituir
GLOBAL_API_SERVER_KUBECONFIGen 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:
Crea un archivo YAML y añade el recurso personalizado
BillingAccounty 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".
- BIL_ACCOUNT_NAME: el nombre de la cuenta de facturación.
Por ejemplo,
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.customConfigadmite un diccionario de cadenas clave-valor con una clave obligatoriapayment-config-type.
En los siguientes ejemplos se muestran fragmentos de archivos
BillingAccountYAML para diferentes configuraciones de pago:cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDSustituye
CLOUD_BILLING_ACCOUNT_IDpor elGoogle Cloud ID de tu cuenta de facturación.customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPESustituye
PAYMENT_CONFIG_TYPEpor 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:
customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"En el siguiente archivo YAML se muestra un recurso
BillingAccountcompleto con la configuración decloudBillingConfig: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"Guarda el archivo YAML. Ejecuta la CLI de
kubectlpara aplicar el recurso en el servidor de la API global:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yamlSustituye
GLOBAL_API_SERVER_KUBECONFIGpor el archivo kubeconfig del servidor de la API Global.
Vincular una organización o un proyecto a una cuenta de facturación
En esta sección se explica cómo vincular una organización o un proyecto a una BillingAccount.
Vincular un proyecto
Para vincular un proyecto a un BillingAccount, haz lo siguiente:
Añade el siguiente contenido al archivo
billingaccountbinding.yaml:- En la sección
billingAccountRef, rellena el camponamecon el contenido del camponamedelBillingAccountque quieras vincular. - En la sección
metadata, rellena el camponamespacecon el contenido del campo idéntico del recursoBillingAccount.
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: platformSustituye
PROJECT_NAMEpor el nombre del proyecto vinculado a la cuenta de facturación.- En la sección
Ejecuta el siguiente comando
kubectlpara aplicar el archivobillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlComprueba el estado de
BillingAccountBindingy verifica que no haya errores:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMESustituye
PROJECT_NAMEpor el nombre del proyecto vinculado a la cuenta de facturación.
Vincular una organización
Para vincular una organización a un BillingAccount, sigue estos pasos:
Añade el siguiente contenido al archivo YAML
billingaccountbinding.yaml:- En la sección
billingAccountRef, rellena el camponamecon el contenido del camponamedelBillingAccountque quieras vincular. - En la sección
metadata, rellena el camponamespacecon el contenido del campo idéntico del recursoBillingAccount. En este ejemplo, el espacio de nombres de la organización esplatform:
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform- En la sección
Ejecuta el siguiente comando
kubectlpara aplicar el archivobillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlComprueba el estado de
BillingAccountBindingy 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 unBillingAccount(comobilling-account-1), todos los costes deproject-Ase facturan exclusivamente abilling-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(comobilling-account-0), todos los proyectos de esa organización que no tengan su propioBillingAccountBindingexplícito se asociarán automáticamente abilling-account-0y 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-0abilling-account-new), los proyectos que antes heredabanbilling-account-0no cambiarán automáticamente abilling-account-new. Estos proyectos seguirán vinculados abilling-account-0y su cuenta de facturación se deberá actualizar manualmente si quieres que usenbilling-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:
Crea un
BillingAccountpara vincularlo al proyecto. Esta cuenta sustituye a la anterior.Busca el archivo YAML del recurso
BillingAccountBindingen 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_NAMEModifica el
BillingAccountBindingpara vincularlo a la nueva cuenta de facturación. En la secciónbillingAccountRef, rellena el camponamecon el nombre delBillingAccountque has creado en el paso 1 de esta sección.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEDespué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:
Crea un nuevo
BillingAccountpara vincularlo a la organización. Esta cuenta sustituye a la anterior.Busca el archivo YAML del recurso
BillingAccountBindingen el espacio de nombresplatformpara ver qué cuenta de facturación está vinculada:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platformModifica el
BillingAccountBindingpara vincularlo a la nueva cuenta de facturación. En la secciónbillingAccountRef, rellena el camponamecon el nuevo nombre deBillingAccountque has creado en el paso 1.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platformDespué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