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 global 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 deorganization-billing-account-admin.Usuario de la cuenta de facturación de la organización global: Puede leer, enumerar y vincular el recurso
BillingAccount. Pídele al administrador de IAM de tu organización que te otorgue el rol deorganization-billing-account-user.Administrador global de la cuenta 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 deorganization-billing-manager.
Obtén el archivo kubeconfig
Para ejecutar comandos en el servidor de la API global, asegúrate de tener los siguientes recursos:
Accede y genera el archivo kubeconfig para el servidor de la API global si no tienes uno.
Usa la ruta de acceso al archivo kubeconfig del servidor de la API global para reemplazar
GLOBAL_API_SERVER_KUBECONFIGen 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:
Crea un archivo YAML y agrega 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"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"
- BIL_ACCOUNT_NAME: Es el nombre de la cuenta de facturación.
Por ejemplo,
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.customConfigadmite un diccionario de cadenas clave-valor, con una clave obligatoriapayment-config-type.
En los siguientes ejemplos, se muestran fragmentos de archivos YAML de
BillingAccountpara diferentes configuraciones de pago:cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDReemplaza
CLOUD_BILLING_ACCOUNT_IDpor el ID de tu cuenta de facturación deGoogle Cloud .customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPEReemplaza
PAYMENT_CONFIG_TYPEpor 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
customConfigde tu organización, ingresa los siguientes detalles:spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"En el siguiente archivo YAML, se muestra un recurso
BillingAccountcompleto con la configuracióncloudBillingConfig: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.yamlReemplaza
GLOBAL_API_SERVER_KUBECONFIGpor el archivo kubeconfig del servidor de la API global.
Vincula una organización o un proyecto a una cuenta de facturación
En esta sección, se proporcionan una serie de pasos para vincular una organización o un proyecto a un BillingAccount.
Vincular un proyecto
Para vincular un proyecto a un BillingAccount, haz lo siguiente:
Agrega el siguiente contenido al archivo
billingaccountbinding.yaml:- En la sección
billingAccountRef, completa el camponamecon el contenido del camponameen elBillingAccountque deseas vincular. - En la sección
metadata, completa el camponamespacecon el contenido del campo idéntico en el 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: platformReemplaza
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.yamlVerifica el estado de
BillingAccountBindingy asegúrate de que no haya errores:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEReemplaza
PROJECT_NAMEpor el nombre del proyecto vinculado a la cuenta de facturación.
Cómo vincular una organización
Para vincular una organización a un BillingAccount, haz lo siguiente:
Agrega el siguiente contenido al archivo YAML
billingaccountbinding.yaml:- En la sección
billingAccountRef, completa el camponamecon el contenido del camponameen elBillingAccountque deseas vincular. - En la sección
metadata, completa el camponamespacecon el contenido del campo idéntico en el 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.yamlVerifica el estado de
BillingAccountBindingy asegúrate de que no haya errores:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
Enumera las vinculaciones de la cuenta de facturación
Consulta una lista de todos los recursos BillingAccountBinding implementados y su estado actual en todos los espacios de nombres de la organización:
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 genera los campos NAME, NAMESPACE, BillingAccountName y STATUS de cada BillingAccountBinding. El campo STATUS indica si la vinculación está activa o si hay algún error.
Jerarquía y comportamiento de la cuenta 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 del proyecto tiene prioridad: Si un proyecto específico, como
project-A, está vinculado de forma explícita a unBillingAccount(comobilling-account-1), todos los costos deproject-Ase facturan exclusivamente abilling-account-1. Esta asociación a nivel del proyecto sigue siendo válida independientemente de la configuración de la cuenta de facturación a nivel de la organización.Asociación a nivel de la organización para proyectos no vinculados: Si tu organización está vinculada a un
BillingAccount(comobilling-account-0), todos los proyectos dentro de esa organización que no tengan su propioBillingAccountBindingexplícito se asociarán automáticamente abilling-account-0y se facturarán a través de este. Por lo general, esta asociación se aplica después de aproximadamente 15 minutos.Cambio de cuentas de facturación de la 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 cambian automáticamente abilling-account-new. Estos proyectos permanecen vinculados abilling-account-0, y su cuenta de facturación debe actualizarse de forma manual si quieres que usenbilling-account-new.
Cómo cambiar la cuenta de facturación vinculada
En Distributed Cloud, no puedes borrar 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 un proyecto. 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 de cliente por un período de un año. Cuando venza el contrato, debes cobrar el período restante que supere un año.
Cambia la cuenta de facturación vinculada a un proyecto
Sigue estos pasos para cambiar la cuenta de facturación vinculada a un proyecto:
Crea un nuevo
BillingAccountpara vincularlo al proyecto. Esta cuenta reemplaza la cuenta anterior.Ubica 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, completa el camponamecon un nombreBillingAccountnuevo que creaste en el paso 1 de esta sección.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEDespués de realizar los cambios, asegúrate de 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 siguiente ejemplo, se muestra el archivo YAML BillingAccountBinding del ejemplo anterior modificado para vincular una cuenta nueva 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
Cómo 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 reemplaza la cuenta anterior.Ubica 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, completa el camponamecon un nombre deBillingAccountnuevo que creaste en el paso 1.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platformDespués de realizar los cambios, asegúrate de que la cuenta de facturación se haya actualizado correctamente:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform