Criar e vincular contas de faturamento

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 papel organization-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 papel organization-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 papel organization-billing-manager.

Receber o arquivo kubeconfig

Para executar comandos no servidor da API global, verifique se você tem os seguintes recursos:

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

  2. Use o caminho para o arquivo kubeconfig do servidor da API global para substituir GLOBAL_API_SERVER_KUBECONFIG nestas 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:

  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 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ória payment-config-type.

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

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Substitua CLOUD_BILLING_ACCOUNT_ID pelo ID da sua conta de faturamentoGoogle Cloud .

    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 servidor da API global:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    Substitua GLOBAL_API_SERVER_KUBECONFIG pelo arquivo kubeconfig do servidor da API global.

Esta seção fornece uma série de etapas para vincular uma organização ou um projeto a um BillingAccount.

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

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

    • Na seção billingAccountRef, preencha o campo name com o conteúdo do campo name no BillingAccount que você quer vincular.
    • Na seção metadata, preencha o campo namespace com o conteúdo do campo idêntico no recurso BillingAccount.

    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: platform
    

    Substitua PROJECT_NAME pelo nome do projeto vinculado à conta de faturamento.

  2. Execute o comando kubectl a seguir para aplicar o arquivo billingaccountbinding.yaml:

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

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    Substitua PROJECT_NAME pelo nome do projeto vinculado à conta de faturamento.

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

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

    • Na seção billingAccountRef, preencha o campo name com o conteúdo do campo name no BillingAccount que você quer vincular.
    • Na seção metadata, preencha o campo namespace com o conteúdo do campo idêntico no recurso BillingAccount. 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
    
  2. Execute o comando kubectl a seguir para aplicar o arquivo billingaccountbinding.yaml:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Verifique o status do BillingAccountBinding e 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 um BillingAccount (como billing-account-1), todos os custos de project-A serão faturados exclusivamente para billing-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 (como billing-account-0), todos os projetos dessa organização que não tiverem um BillingAccountBinding explícito serão associados e faturados automaticamente para billing-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-0 para billing-account-new), os projetos que antes herdavam billing-account-0 não mudarão automaticamente para billing-account-new. Esses projetos permanecem vinculados ao billing-account-0, e a conta de faturamento deles precisa ser atualizada manualmente se você quiser que eles usem o 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, 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:

  1. Crie um novo BillingAccount para vincular ao projeto. Esta 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 GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Modifique o 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 GLOBAL_API_SERVER_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 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:

  1. Crie um novo BillingAccount para vincular à organização. Esta 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 GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Modifique o 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 GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Depois 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