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 deorganization-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 deorganization-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 deorganization-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:
Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.
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
:
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"
- 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.customConfig
admite un diccionario de cadenas clave-valor, con una clave obligatoriapayment-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óncloudBillingConfig
: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"
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.
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 camponame
con el contenido del camponame
en elBillingAccount
que deseas vincular. - En la sección
metadata
, completa el camponamespace
con el contenido del campo idéntico en el recursoBillingAccount
.
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.- En la sección
Ejecuta el siguiente comando
kubectl
para aplicar el archivobillingaccountbinding.yaml
:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
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 camponame
con el contenido del camponame
en elBillingAccount
que deseas vincular. - En la sección
metadata
, completa el camponamespace
con el contenido del campo idéntico en el recursoBillingAccount
. En este ejemplo, el espacio de nombres de la organización esplatform
:
apiVersion: billing.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
kubectl
para aplicar el archivobillingaccountbinding.yaml
:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
Desvincula cuentas de facturación de una organización o un proyecto
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:
Crea un nuevo
BillingAccount
para vincularlo al proyecto. Esta cuenta reemplazará a la anterior.Ubica el archivo YAML del recurso
BillingAccountBinding
en el proyecto o el espacio de nombresplatform
y modifica los siguientes campos:- En la sección
billingAccountRef
, completa el camponame
con un nombre deBillingAccount
nuevo.
- En la sección
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