Criar e vincular contas de faturamento

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 recurso BillingAccount.

  • Usuário da conta de faturamento da organização global (organization-billing-account-user): lê, lista e vincula o recurso BillingAccount.

  • Gerente global da conta de faturamento da organização (organization-billing-manager): lê, lista, cria e atualiza o recurso BillingAccountBinding.

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:

  1. Faça login e gere o arquivo kubeconfig para o cluster global da organização, se você não tiver um.

  2. Use o caminho para o arquivo kubeconfig do cluster global da organização para substituir ORG_GLOBAL_CLUSTER_KUBECONFIG nestas 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:

  1. Crie um arquivo YAML e adicione o recurso personalizado BillingAccount e 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".
  2. 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. customConfig oferece suporte a um dicionário de strings de chave-valor, com uma chave obrigatória payment-config-type.

    Os exemplos a seguir mostram snippets de arquivos YAML BillingAccount para diferentes configurações de pagamento:

    Exemplo de cloudBillingConfig:

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Substitua CLOUD_BILLING_ACCOUNT_ID pelo seu Google Cloud ID da conta de faturamento.

    Exemplo de customConfig:

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": PAYMENT_CONFIG_TYPE
    

    Substitua PAYMENT_CONFIG_TYPE pelo 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 customConfig da sua organização, insira os seguintes detalhes:

    spec:
     paymentSystemConfig:
       customConfig:
          "payment-config-type": "N/A"
    

    O arquivo YAML a seguir mostra um recurso BillingAccount completo com a configuração cloudBillingConfig:

    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"
    
  3. Salve o arquivo YAML. Execute a CLI kubectl para aplicar o recurso no cluster global da organização:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yaml
    

    Substitua ORG_GLOBAL_CLUSTER_KUBECONFIG pelo 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.

É 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.

Para vincular uma organização a uma BillingAccount, faça o seguinte:

  1. Adicione o conteúdo a seguir ao arquivo YAML billingaccountbinding.yaml:

    • Na seção billingAccountRef, preencha o campo name com o conteúdo do campo name na BillingAccount que você quer vincular.
    • Na seção metadata, preencha o campo namespace com o valor do campo idêntico no recurso BillingAccount. Neste exemplo, o namespace da organização do recurso BillingAccount é platform:
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. Execute o comando kubectl a seguir para aplicar o arquivo billingaccountbinding.yaml:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Verifique o status do BillingAccountBinding e confirme se não há erros:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
    

Para vincular um projeto a uma BillingAccount, faça o seguinte:

  1. Adicione o conteúdo a seguir ao arquivo: billingaccountbinding.yaml:

    • Na seção billingAccountRef, preencha o campo name com o conteúdo do campo name na BillingAccount que você quer vincular.
    • Na seção metadata, preencha o campo namespace com o conteúdo do campo idêntico no recurso BillingAccount.
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: PROJECT_NAME
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    

    Substitua as seguintes variáveis:

    • PROJECT_NAME pelo nome do projeto vinculado à conta de faturamento.
    • BIL_ACCOUNT_NAME: o nome da conta de faturamento, por exemplo, test-billing-account.
  2. Execute o comando kubectl a seguir para aplicar o arquivo billingaccountbinding.yaml:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Verifique o status do BillingAccountBinding e confirme se não há erros:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    Substitua PROJECT_NAME pelo 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 uma BillingAccount, por exemplo, billing-account-1, todos os custos de project-A serão faturados exclusivamente para billing-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ópria BillingAccountBinding serão associados e cobrados automaticamente em billing-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-0 mudar para billing-account-new, os projetos billing-account-0 não vão mudar automaticamente para billing-account-new. Esses projetos permanecem vinculados a billing-account-0, e é necessário atualizar manualmente a conta de faturamento para que os projetos usem billing-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:

  1. Crie uma nova BillingAccount para vincular ao projeto. Essa conta substitui a antiga.

  2. Localize o arquivo YAML do recurso BillingAccountBinding no namespace do projeto para ver qual conta de faturamento está vinculada:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Modifique a BillingAccountBinding para vincular à nova conta de faturamento. Na seção billingAccountRef, preencha o campo name com um novo nome BillingAccount criado na etapa 1 desta seção.

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. Depois 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:

  1. Crie uma nova BillingAccount para vincular à organização. Essa conta substitui a antiga.

  2. Localize o arquivo YAML do recurso BillingAccountBinding no namespace platform para ver qual conta de faturamento está vinculada:

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Modifique a BillingAccountBinding para vincular à nova conta de faturamento. Na seção billingAccountRef, preencha o campo name com um novo nome BillingAccount criado na etapa 1.

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Depois 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