Este documento descreve as etapas para criar uma conta de faturamento isolada do Google Distributed Cloud (GDC) para acompanhar o uso de recursos.
Os ambientes do Distributed Cloud exigem uma conta de faturamento para acompanhar os custos de uso de projetos e organizações. Todas as contas de faturamento em uma organização usam uma única tabela de preços para cobrar o uso do serviço do cliente. Se você não vincular uma conta de faturamento a uma organização ou projeto, vai perder os dados de custo associados ao recurso, resultando em discrepâncias de custo.
Este documento é destinado a desenvolvedores em grupos de administradores de plataforma ou operadores de aplicativos que criam e administram contas de faturamento no GDC. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Solicitar papéis do IAM
Entre em contato com o administrador do IAM da organização para solicitar os seguintes papéis no projeto:
Administrador global da conta de faturamento da organização (
organization-billing-account-admin): cria, gerencia e vincula o recursoBillingAccount.Usuário da conta de faturamento da organização global (
organization-billing-account-user): lê, lista e vincula o recursoBillingAccount.Gerente global da conta de faturamento da organização (
organization-billing-manager): lê, lista, cria e atualiza o recursoBillingAccountBinding.
Esses papéis são vinculados ao namespace do projeto para faturamento para envolvidos no projeto ou ao namespace da plataforma para faturamento no nível da organização.
Receber o arquivo kubeconfig
Para executar comandos no cluster global da organização, verifique se você tem os seguintes recursos:
Faça login e gere o arquivo kubeconfig para o cluster global da organização, se você não tiver um.
Use o caminho para o arquivo kubeconfig do cluster global da organização para substituir
ORG_GLOBAL_CLUSTER_KUBECONFIGnestas instruções.
Criar uma nova conta de faturamento
kubectl
Uma conta de faturamento é identificada exclusivamente pelo name e 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".
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 que os parceiros armazenem a configuração de pagamento para faturar a organização.customConfigoferece suporte a 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:Exemplo de
cloudBillingConfig:spec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDSubstitua
CLOUD_BILLING_ACCOUNT_IDpelo seu Google Cloud ID da conta de faturamento.Exemplo de
customConfig:spec: 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 cluster global da organização:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yamlSubstitua
ORG_GLOBAL_CLUSTER_KUBECONFIGpelo arquivo kubeconfig do cluster global da organização.
CLI
Para criar uma conta de faturamento, use o comando gdcloud billing accounts create.
Para mais informações, consulte gdcloud billing accounts create.
Vincular uma organização ou projeto a uma conta de faturamento
É necessário vincular uma conta de faturamento à organização antes de criar projetos. Isso garante que todos os projetos criados na organização herdem uma conta de faturamento válida por padrão.
Também é possível vincular explicitamente um projeto a uma conta de faturamento específica se você quiser que ela seja diferente da conta de faturamento da organização.
Vincular uma organização
Para vincular uma organização a uma BillingAccount, faça o seguinte:
Adicione o conteúdo a seguir ao arquivo YAML
billingaccountbinding.yaml:- Na seção
billingAccountRef, preencha o camponamecom o conteúdo do camponamenaBillingAccountque você quer vincular. - Na seção
metadata, preencha o camponamespacecom o valor do campo idêntico no recursoBillingAccount. Neste exemplo, o namespace da organização do recursoBillingAccounté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 ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yamlVerifique o status do
BillingAccountBindinge confirme se não há erros:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
Vincular um projeto
Para vincular um projeto a uma BillingAccount, faça o seguinte:
Adicione o conteúdo a seguir ao arquivo:
billingaccountbinding.yaml:- Na seção
billingAccountRef, preencha o camponamecom o conteúdo do camponamenaBillingAccountque você quer vincular. - Na seção
metadata, preencha o camponamespacecom o conteúdo do campo idêntico no recursoBillingAccount.
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platformSubstitua as seguintes variáveis:
PROJECT_NAMEpelo nome do projeto vinculado à conta de faturamento.BIL_ACCOUNT_NAME: o nome da conta de faturamento, por exemplo,test-billing-account.
- Na seção
Execute o comando
kubectla seguir para aplicar o arquivobillingaccountbinding.yaml:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yamlVerifique o status do
BillingAccountBindinge confirme se não há erros:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMESubstitua
PROJECT_NAMEpelo nome do projeto vinculado à conta de faturamento.
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 ORG_GLOBAL_CLUSTER_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 comportamentos são aplicados:
A associação para envolvidos no projeto tem precedência:se um projeto específico, como
project-A, estiver explicitamente vinculado a umaBillingAccount, por exemplo,billing-account-1, todos os custos deproject-Aserão faturados exclusivamente parabilling-account-1. Essa associação para envolvidos no 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 uma
BillingAccount, por exemplo,billing-account-0, todos os projetos dessa organização que não têm a própriaBillingAccountBindingserão associados e cobrados automaticamente embilling-account-0. Essa associação normalmente entra em vigor após aproximadamente 15 minutos.Como mudar as contas de faturamento da organização:se a conta de faturamento vinculada a uma organização mudar, por exemplo,
billing-account-0mudar parabilling-account-new, os projetosbilling-account-0não vão mudar automaticamente parabilling-account-new. Esses projetos permanecem vinculados abilling-account-0, e é necessário atualizar manualmente a conta de faturamento para que os projetos usembilling-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, modifique a conta de faturamento vinculada à organização ou ao projeto alterando a BillingAccountBinding.
Alguns cenários para esse caso de uso incluem os exemplos a seguir:
- As regras de contabilidade da sua empresa exigem que você divida os encargos associados às cargas de trabalho de desenvolvedores e de 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 expira, é necessário cobrar o período restante que excede um ano.
Para um projeto
Siga estas etapas para mudar a conta de faturamento vinculada de um projeto:
Crie uma nova
BillingAccountpara vincular ao projeto. Essa conta substitui a antiga.Localize o arquivo YAML do recurso
BillingAccountBindingno namespace do projeto para ver qual conta de faturamento está vinculada:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEModifique a
BillingAccountBindingpara vincular à nova conta de faturamento. Na seçãobillingAccountRef, preencha o camponamecom um novo nomeBillingAccountcriado na etapa 1 desta seção.kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEDepois de fazer as mudanças, verifique se a conta de faturamento foi atualizada corretamente:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_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
Para uma organização
Siga estas etapas para mudar a conta de faturamento vinculada de uma organização:
Crie uma nova
BillingAccountpara vincular à organização. Essa conta substitui a antiga.Localize o arquivo YAML do recurso
BillingAccountBindingno namespaceplatformpara ver qual conta de faturamento está vinculada:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platformModifique a
BillingAccountBindingpara vincular à nova conta de faturamento. Na seçãobillingAccountRef, preencha o camponamecom um novo nomeBillingAccountcriado na etapa 1.kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platformDepois de fazer as mudanças, verifique se a conta de faturamento foi atualizada corretamente:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform