Os ambientes isolados do Google Distributed Cloud (GDC) exigem uma conta de faturamento para rastrear custos de projetos e organizações. Se você não vincular uma conta de faturamento a uma organização ou projeto, vai perder os dados de custo associados ao recurso.
Para cobrar o uso do serviço do cliente, todas as contas de faturamento em uma organização usam uma única tabela de preços.
Antes de começar
Peça ao administrador do IAM da organização para conceder a você os seguintes papéis obrigatórios. Esses papéis são vinculados ao namespace do projeto para faturamento no nível do projeto ou ao namespace da plataforma para faturamento no nível da organização:
Administrador global da conta de faturamento da organização: cria, gerencia e vincula o recurso
BillingAccount. Peça ao administrador do IAM da organização para conceder a você o papelorganization-billing-account-admin.Usuário da conta de faturamento da organização global: lê, lista e vincula o recurso
BillingAccount. Peça ao administrador do IAM da organização para conceder a você o papelorganization-billing-account-user.Gerente global da conta de faturamento da organização: lê, lista, cria e atualiza o recurso
BillingAccountBinding. Peça ao administrador do IAM da organização para conceder a você o papelorganization-billing-manager.
Receber o arquivo kubeconfig
Para executar comandos no servidor da API global, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o servidor da API global, se você não tiver um.
Use o caminho para o arquivo kubeconfig do servidor da API global para substituir
GLOBAL_API_SERVER_KUBECONFIGnestas instruções.
Criar uma nova conta de faturamento
Uma conta de faturamento é identificada exclusivamente pelo name e pelo namespace. Para criar uma conta de faturamento, use um recurso personalizado para estabelecer o name e o namespace:
Crie um arquivo YAML e adicione o recurso personalizado
BillingAccounte o conteúdo a seguir: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"Substitua as seguintes variáveis:
- BIL_ACCOUNT_NAME: o nome da conta de faturamento.
Por exemplo,
test-billing-account. - BIL_DISPLAY_NAME: o nome de exibição da conta de faturamento.
Por exemplo,
"Test Billing Account".
- BIL_ACCOUNT_NAME: o nome da conta de faturamento.
Por exemplo,
Verifique o tipo de configuração de pagamento. As contas de faturamento do Distributed Cloud precisam ter uma das seguintes configurações de pagamento:
cloudBillingConfig: a configuração de pagamento padrão. Essa configuração armazena um ID da conta do Cloud Billing.customConfig: uma configuração personalizada para os parceiros armazenarem a configuração de pagamento para faturar a organização.customConfigé compatível com um dicionário de strings de chave-valor, com uma chave obrigatóriapayment-config-type.
Os exemplos a seguir mostram snippets de arquivos YAML
BillingAccountpara diferentes configurações de pagamento:cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDSubstitua
CLOUD_BILLING_ACCOUNT_IDpelo ID da sua conta de faturamentoGoogle Cloud .customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPESubstitua
PAYMENT_CONFIG_TYPEpelo tipo de configuração de pagamento escolhido para sua configuração de faturamento personalizada.Se você não tiver as informações da configuração
customConfigda sua organização, insira os seguintes detalhes:spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"O arquivo YAML a seguir mostra um recurso
BillingAccountcompleto com a configuraçãocloudBillingConfig: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"Salve o arquivo YAML. Execute a CLI
kubectlpara aplicar o recurso no servidor da API global:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yamlSubstitua
GLOBAL_API_SERVER_KUBECONFIGpelo arquivo kubeconfig do servidor da API global.
Vincular uma organização ou um projeto a uma conta de faturamento
Esta seção fornece uma série de etapas para vincular uma organização ou um projeto a um
BillingAccount.
Vincular um projeto
Para vincular um projeto a um BillingAccount, faça o seguinte:
Adicione o seguinte conteúdo ao arquivo:
billingaccountbinding.yaml:- Na seção
billingAccountRef, preencha o camponamecom o conteúdo do camponamenoBillingAccountque você quer vincular. - Na seção
metadata, preencha o camponamespacecom o conteúdo do campo idêntico no recursoBillingAccount.
Neste exemplo, o namespace do projeto é PROJECT_NAME:
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platformSubstitua
PROJECT_NAMEpelo nome do projeto vinculado à conta de faturamento.- Na seção
Execute o comando
kubectla seguir para aplicar o arquivobillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlVerifique o status do
BillingAccountBindinge confira se não há erros:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMESubstitua
PROJECT_NAMEpelo nome do projeto vinculado à conta de faturamento.
Vincular uma organização
Para vincular uma organização a um BillingAccount, faça o seguinte:
Adicione o seguinte conteúdo ao arquivo YAML
billingaccountbinding.yaml:- Na seção
billingAccountRef, preencha o camponamecom o conteúdo do camponamenoBillingAccountque você quer vincular. - Na seção
metadata, preencha o camponamespacecom o conteúdo do campo idêntico no recursoBillingAccount. Neste exemplo, o namespace da organização éplatform:
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform- Na seção
Execute o comando
kubectla seguir para aplicar o arquivobillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlVerifique o status do
BillingAccountBindinge confira se não há erros:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
Listar vinculações de contas de faturamento
Confira uma lista de todos os recursos BillingAccountBinding implantados e o status atual deles em todos os namespaces da organização:
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'
Esse comando gera o NAME, NAMESPACE, BillingAccountName e STATUS de cada BillingAccountBinding. O campo STATUS indica se a vinculação está ativa ou se há erros.
Hierarquia e comportamento da conta de faturamento
Ao vincular contas de faturamento a organizações e projetos, a seguinte hierarquia e os seguintes comportamentos se aplicam:
A associação no nível do projeto tem precedência:se um projeto específico, como
project-A, estiver explicitamente vinculado a umBillingAccount(comobilling-account-1), todos os custos deproject-Aserão faturados exclusivamente parabilling-account-1. Essa associação no nível do projeto permanece válida, independentemente das configurações da conta de faturamento no nível da organização.Associação no nível da organização para projetos não vinculados:se a organização estiver vinculada a um
BillingAccount(comobilling-account-0), todos os projetos dessa organização que não tiverem umBillingAccountBindingexplícito serão associados e faturados automaticamente parabilling-account-0. Essa associação geralmente entra em vigor após aproximadamente 15 minutos.Mudança de contas de faturamento da organização:se a conta de faturamento vinculada a uma organização mudar (por exemplo, de
billing-account-0parabilling-account-new), os projetos que antes herdavambilling-account-0não mudarão automaticamente parabilling-account-new. Esses projetos permanecem vinculados aobilling-account-0, e a conta de faturamento deles precisa ser atualizada manualmente se você quiser que eles usem obilling-account-new.
Mudar a conta de faturamento vinculada
No Distributed Cloud, não é possível excluir uma conta de faturamento. Se você precisar mudar a configuração de faturamento, altere a conta vinculada a uma organização ou projeto modificando o BillingAccountBinding. Alguns cenários para esse caso de uso incluem os seguintes exemplos:
- As regras de contabilidade da sua empresa exigem que você divida as cobranças associadas a cargas de trabalho de desenvolvimento e produção em contas separadas.
- Você cria uma conta de faturamento para cobrar um contrato de cliente por um período de um ano. Quando o contrato expirar, você precisará cobrar pelo período restante que exceder um ano.
Mudar a conta de faturamento vinculada a um projeto
Siga estas etapas para mudar a conta de faturamento vinculada a um projeto:
Crie um novo
BillingAccountpara vincular ao projeto. Esta conta substitui a antiga.Localize o arquivo YAML do recurso
BillingAccountBindingno namespace do projeto para ver qual conta de faturamento está vinculada:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEModifique o
BillingAccountBindingpara vincular à nova conta de faturamento. Na seçãobillingAccountRef, preencha o camponamecom um novo nomeBillingAccountcriado na etapa 1 desta seção.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEDepois de fazer as mudanças, verifique se a conta de faturamento foi atualizada corretamente:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
O exemplo a seguir mostra um arquivo YAML BillingAccountBinding com a conta
expired-billing-account vinculada ao projeto 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
O exemplo a seguir mostra o arquivo YAML BillingAccountBinding do exemplo anterior modificado para vincular uma nova conta chamada 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
Mudar a conta de faturamento vinculada a uma organização
Siga estas etapas para mudar a conta de faturamento vinculada de uma organização:
Crie um novo
BillingAccountpara vincular à organização. Esta conta substitui a antiga.Localize o arquivo YAML do recurso
BillingAccountBindingno namespaceplatformpara ver qual conta de faturamento está vinculada:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platformModifique o
BillingAccountBindingpara vincular à nova conta de faturamento. Na seçãobillingAccountRef, preencha o camponamecom um novo nomeBillingAccountcriado na etapa 1.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platformDepois de fazer as mudanças, verifique se a conta de faturamento foi atualizada corretamente:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform