Crie e associe contas de faturação

Os ambientes isolados do Google Distributed Cloud (GDC) requerem uma conta de faturação para acompanhar os custos dos projetos e das organizações. Se não associar uma conta de faturação a uma organização ou a um projeto, perde os dados de custos associados ao recurso.

Para cobrar a utilização dos serviços ao cliente, todas as contas de faturação numa organização usam uma única folha de preços.

Antes de começar

Peça ao administrador de IAM da organização para lhe conceder as seguintes funções obrigatórias. Estas funções estão associadas ao espaço de nomes do projeto para a faturação ao nível do projeto ou ao espaço de nomes da plataforma para a faturação ao nível da organização:

  • Administrador da conta de faturação da organização global: criar, gerir e associar o recurso BillingAccount. Peça ao administrador de IAM da organização para lhe conceder a função organization-billing-account-admin.

  • Utilizador da conta de faturação da organização global: ler, listar e associar o recurso.BillingAccount Peça ao administrador de IAM da organização para lhe conceder a função organization-billing-account-user.

  • Gestor da conta de faturação da organização global: ler, listar, criar e atualizar o recurso BillingAccountBinding. Peça ao administrador de IAM da organização para lhe conceder a função organization-billing-manager.

Obtenha o ficheiro kubeconfig

Para executar comandos no servidor da API global, certifique-se de que tem os seguintes recursos:

  1. Inicie sessão e gere o ficheiro kubeconfig para o servidor da API global, se não tiver um.

  2. Use o caminho para o ficheiro kubeconfig do servidor da API global para substituir GLOBAL_API_SERVER_KUBECONFIG nestas instruções.

Crie uma nova conta de faturação

Uma conta de faturação é identificada exclusivamente pelo respetivo name e namespace. Para criar uma conta de faturação, use um recurso personalizado para estabelecer o name e o namespace:

  1. Crie um ficheiro YAML e adicione o recurso personalizado BillingAccount e o seguinte conteúdo:

    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 faturação. Por exemplo, test-billing-account.
    • BIL_DISPLAY_NAME: o nome a apresentar da conta de faturação. Por exemplo, "Test Billing Account".
  2. Valide o tipo de configuração de pagamento. As contas de faturação do Distributed Cloud têm de ter uma das seguintes configurações de pagamento:

    • cloudBillingConfig: a configuração de pagamento predefinida. Esta configuração armazena um ID da conta do Cloud Billing.

    • customConfig: uma configuração personalizada para os parceiros armazenarem a respetiva configuração de pagamento para faturar à organização. customConfig suporta um dicionário de strings de chave-valor, com uma chave obrigatória payment-config-type.

    Os exemplos seguintes mostram fragmentos de ficheiros YAML para diferentes configurações de pagamento:BillingAccount

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Substitua CLOUD_BILLING_ACCOUNT_ID pelo ID da sua conta de faturação.Google Cloud

    customConfig

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

    Substitua PAYMENT_CONFIG_TYPE pelo tipo de configuração de pagamento escolhido para a sua configuração de faturação personalizada.

    Se não tiver as informações de customConfigconfiguração da sua organização, introduza os seguintes detalhes:

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

    O ficheiro YAML seguinte 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. Guarde o ficheiro 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 ficheiro kubeconfig do servidor da API global.

Esta secção fornece uma série de passos para associar uma organização ou um projeto a um BillingAccount.

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

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

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

    Neste exemplo, o espaço de nomes 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 associado à conta de faturação.

  2. Execute o seguinte comando kubectl para aplicar o ficheiro billingaccountbinding.yaml:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Verifique o estado do BillingAccountBinding e confirme que não existem erros:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    Substitua PROJECT_NAME pelo nome do projeto associado à conta de faturação.

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

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

    • Na secção billingAccountRef, preencha o campo name com o conteúdo do campo name no BillingAccount que quer associar.
    • Na secção metadata, preencha o campo namespace com o conteúdo do campo idêntico no recurso BillingAccount. Neste exemplo, o espaço de nomes 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 seguinte comando kubectl para aplicar o ficheiro billingaccountbinding.yaml:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Verifique o estado do BillingAccountBinding e confirme que não existem erros:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    

Liste as associações de contas de faturação

Veja uma lista de todos os recursos BillingAccountBinding implementados e o respetivo estado atual em todos os espaços de nomes na 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'

Este comando produz o NAME, o NAMESPACE, o BillingAccountName e o STATUS de cada BillingAccountBinding. O campo STATUS indica se a associação está ativa ou se existem erros.

Hierarquia e comportamento da conta de faturação

Quando associa contas de faturação a organizações e projetos, aplica-se a seguinte hierarquia e comportamentos:

  • A associação ao nível do projeto tem precedência: se um projeto específico, como project-A, estiver explicitamente associado a um BillingAccount (como billing-account-1), todos os custos de project-A são faturados exclusivamente a billing-account-1. Esta associação ao nível do projeto permanece válida independentemente das definições da conta de faturação ao nível da organização.

  • Associação ao nível da organização para projetos não associados: se a sua organização estiver associada a um BillingAccount (como o billing-account-0), todos os projetos nessa organização que não tenham o seu próprio BillingAccountBinding explícito são automaticamente associados e faturados ao billing-account-0. Normalmente, esta associação entra em vigor após aproximadamente 15 minutos.

  • Alterar contas de faturação da organização: se a conta de faturação associada a uma organização for alterada (por exemplo, de billing-account-0 para billing-account-new), os projetos que estavam anteriormente a herdar billing-account-0 não mudam automaticamente para billing-account-new. Estes projetos permanecem associados a billing-account-0 e a respetiva conta de faturação tem de ser atualizada manualmente se quiser que usem billing-account-new.

Altere a conta de faturação associada

No Distributed Cloud, não pode eliminar uma conta de faturação. Se precisar de alterar a configuração de faturação, tem de alterar a conta de faturação associada a uma organização ou a um projeto modificando o BillingAccountBinding. Alguns cenários para este exemplo de utilização incluem os seguintes exemplos:

  • As regras de contabilidade da sua empresa exigem que divida os custos associados aos encargos de trabalho ao nível de produção e de programador em contas separadas.
  • Cria uma conta de faturação para cobrar um contrato de cliente durante um período de um ano. Quando o contrato expira, tem de cobrar o período restante que excede um ano.

Altere a conta de faturação associada de um projeto

Siga estes passos para alterar a conta de faturação associada de um projeto:

  1. Crie um novo BillingAccount para associar ao projeto. Esta conta substitui a conta antiga.

  2. Localize o ficheiro YAML do recurso BillingAccountBinding no espaço de nomes do projeto para ver a conta de faturação associada:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Modifique o BillingAccountBinding para associá-lo à nova conta de faturação. Na secção billingAccountRef, preencha o campo name com um novo nome BillingAccount criado no passo 1 desta secção.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. Depois de fazer as alterações, certifique-se de que a conta de faturação é atualizada corretamente:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

O exemplo seguinte mostra um BillingAccountBindingficheiro YAML com a conta expired-billing-account associada 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 que se segue mostra o ficheiro BillingAccountBinding YAML do exemplo anterior modificado para associar uma nova conta denominada 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

Altere a conta de faturação associada de uma organização

Siga estes passos para alterar a conta de faturação associada de uma organização:

  1. Crie um novo BillingAccount para associar à organização. Esta conta substitui a conta antiga.

  2. Localize o ficheiro YAML do recurso BillingAccountBinding no espaço de nomes platform para ver a conta de faturação associada:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Modifique o BillingAccountBinding para associá-lo à nova conta de faturação. Na secção billingAccountRef, preencha o campo name com um novo nome BillingAccount criado no passo 1.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Depois de fazer as alterações, certifique-se de que a conta de faturação é atualizada corretamente:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform