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 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: 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 de contas 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 Management, verifique se você tem os seguintes recursos:

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

  2. Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir MANAGEMENT_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.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 é 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.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 Management da organização ou do projeto específico que você quer faturar:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    Substitua MANAGEMENT_API_SERVER_KUBECONFIG pelo arquivo kubeconfig do servidor da API Management.

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.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 seguinte comando kubectl para aplicar o arquivo billingaccountbinding.yaml:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

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.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 arquivo billingaccountbinding.yaml:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    

No Distributed Cloud, não é possível excluir uma conta de faturamento. Se você precisar mudar a configuração de faturamento, desvincule uma organização ou um projeto de uma conta de faturamento atual 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 desenvolvedor 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 expirar, você precisará cobrar pelo período restante que exceder um ano.

Para desvincular uma conta de faturamento de uma organização ou projeto, faça o seguinte:

  1. Crie um novo BillingAccount para vincular ao projeto. Ela vai substituir a conta antiga.

  2. Localize o arquivo YAML do recurso BillingAccountBinding no projeto ou namespace platform e modifique os seguintes campos:

    • Na seção billingAccountRef, preencha o campo name com um novo nome de BillingAccount.

O exemplo a seguir mostra um arquivo YAML BillingAccountBinding com a conta expired-billing-account vinculada ao projeto project-one:

  apiVersion: billing.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.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