Créer et associer des comptes de facturation

Ce document décrit les étapes à suivre pour créer un compte de facturation Google Distributed Cloud (GDC) air-gapped afin de suivre l'utilisation des ressources.

Les environnements Distributed Cloud nécessitent un compte de facturation pour suivre les coûts d'utilisation des projets et des organisations. Tous les comptes de facturation d'une organisation utilisent une seule grille tarifaire pour facturer l'utilisation des services au client. Si vous n'associez pas de compte de facturation à une organisation ou à un projet, vous perdrez les données de coût associées à la ressource, ce qui entraînera des écarts de coût.

Ce document s'adresse aux développeurs des groupes d'administrateurs de plate-forme ou d'opérateurs d'applications qui créent et gèrent des comptes de facturation dans GDC. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.

Avant de commencer

Demander des rôles IAM

Contactez l'administrateur de l'organisation IAM pour demander les rôles suivants sur votre projet :

  • Administrateur de compte de facturation de l'organisation globale (organization-billing-account-admin) : crée, gère et lie la ressource BillingAccount.

  • Utilisateur du compte de facturation de l'organisation globale (organization-billing-account-user) : lire, lister et lier la ressource BillingAccount.

  • Responsable de compte de facturation de l'organisation globale (organization-billing-manager) : lire, lister, créer et mettre à jour la ressource BillingAccountBinding.

Ces rôles sont liés à l'espace de noms du projet pour la facturation au niveau du projet ou à l'espace de noms de la plate-forme pour la facturation au niveau de l'organisation.

Obtenir le fichier kubeconfig

Pour exécuter des commandes sur le cluster Org Global, assurez-vous de disposer des ressources suivantes :

  1. Connectez-vous et générez le fichier kubeconfig pour le cluster Org Global si vous n'en avez pas.

  2. Utilisez le chemin d'accès au fichier kubeconfig du cluster Org Global pour remplacer ORG_GLOBAL_CLUSTER_KUBECONFIG dans ces instructions.

Créer un compte de facturation

kubectl

Un compte de facturation est identifié de manière unique par son name et son namespace. Pour créer un compte de facturation, utilisez une ressource personnalisée pour établir les éléments name et namespace :

  1. Créez un fichier YAML, puis ajoutez la ressource personnalisée BillingAccount et le contenu suivant :

    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"
    

    Remplacez les variables suivantes :

    • BIL_ACCOUNT_NAME : nom du compte de facturation, par exemple test-billing-account.
    • BIL_DISPLAY_NAME : nom à afficher du compte de facturation, par exemple "Test Billing Account".
  2. Vérifiez le type de configuration de paiement. Les comptes de facturation Distributed Cloud doivent avoir l'une des configurations de paiement suivantes :

    • cloudBillingConfig : configuration de paiement par défaut. Cette configuration stocke un ID de compte de facturation Cloud.

    • customConfig : configuration personnalisée permettant aux partenaires de stocker leur configuration de paiement pour facturer l'organisation. customConfig accepte un dictionnaire de chaînes clé-valeur, avec une clé obligatoire payment-config-type.

    Les exemples suivants montrent des extraits de fichiers YAML BillingAccount pour différentes configurations de paiement :

    cloudBillingConfig Exemple :

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Remplacez CLOUD_BILLING_ACCOUNT_ID par l'ID de votre compte de facturationGoogle Cloud .

    Exemple de customConfig :

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

    Remplacez PAYMENT_CONFIG_TYPE par le type de configuration de paiement que vous avez choisi pour votre configuration de facturation personnalisée.

    Si vous ne disposez pas des informations de configuration customConfig de votre organisation, saisissez les informations suivantes :

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

    Le fichier YAML suivant montre une ressource BillingAccount complète avec la configuration 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. Enregistrez le fichier YAML. Exécutez la CLI kubectl pour appliquer la ressource dans le cluster Org Global :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yaml
    

    Remplacez ORG_GLOBAL_CLUSTER_KUBECONFIG par le fichier kubeconfig du cluster Org Global.

CLI

Pour créer un compte de facturation, utilisez la commande gdcloud billing accounts create.

Pour en savoir plus, consultez gdcloud billing accounts create.

Vous devez associer un compte de facturation à l'organisation avant de créer des projets. Cela garantit que tous les projets créés au sein de l'organisation héritent par défaut d'un compte de facturation valide.

Vous pouvez également associer explicitement un projet à un compte de facturation spécifique si vous souhaitez qu'il soit différent du compte de facturation de l'organisation.

Pour associer une organisation à un BillingAccount, procédez comme suit :

  1. Ajoutez le contenu suivant au fichier YAML billingaccountbinding.yaml :

    • Dans la section billingAccountRef, renseignez le champ name avec le contenu du champ name de l'BillingAccount que vous souhaitez associer.
    • Dans la section metadata, renseignez le champ namespace avec la valeur du champ identique de la ressource BillingAccount. Dans cet exemple, l'espace de noms de l'organisation de la ressource BillingAccount est platform :
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. Exécutez la commande kubectl suivante pour appliquer le fichier billingaccountbinding.yaml :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Vérifiez l'état de BillingAccountBinding et assurez-vous qu'il n'y a pas d'erreurs :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
    

Pour associer un projet à un BillingAccount, procédez comme suit :

  1. Ajoutez le contenu suivant au fichier billingaccountbinding.yaml :

    • Dans la section billingAccountRef, renseignez le champ name avec le contenu du champ name de l'BillingAccount que vous souhaitez associer.
    • Dans la section metadata, renseignez le champ namespace avec le contenu du champ identique de la ressource BillingAccount.
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: PROJECT_NAME
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    

    Remplacez les variables suivantes :

    • PROJECT_NAME par le nom du projet lié au compte de facturation.
    • BIL_ACCOUNT_NAME : nom du compte de facturation, par exemple test-billing-account.
  2. Exécutez la commande kubectl suivante pour appliquer le fichier billingaccountbinding.yaml :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Vérifiez l'état de BillingAccountBinding et assurez-vous qu'il n'y a pas d'erreurs :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    Remplacez PROJECT_NAME par le nom du projet associé au compte de facturation.

Répertorier les liaisons d'un compte de facturation

Affichez la liste de toutes les ressources BillingAccountBinding déployées et leur état actuel dans tous les espaces de noms de l'organisation :

  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'

Cette commande génère les éléments NAME, NAMESPACE, BillingAccountName et STATUS de chaque BillingAccountBinding. Le champ STATUS indique si la liaison est active ou s'il y a des erreurs.

Hiérarchie et comportement des comptes de facturation

Lorsque vous associez des comptes de facturation à des organisations et à des projets, la hiérarchie et les comportements suivants s'appliquent :

  • L'association au niveau du projet est prioritaire : si un projet spécifique, tel que project-A, est explicitement associé à un BillingAccount, par exemple billing-account-1, tous les coûts de project-A sont facturés exclusivement à billing-account-1. Cette association au niveau du projet reste valide, quels que soient les paramètres du compte de facturation au niveau de l'organisation.

  • Association au niveau de l'organisation pour les projets non associés : si votre organisation est associée à un BillingAccount, par exemple billing-account-0, tous les projets de cette organisation qui n'ont pas leur propre BillingAccountBinding sont automatiquement associés à billing-account-0 et facturés sur ce compte. Cette association prend généralement effet après environ 15 minutes.

  • Modification des comptes de facturation d'une organisation : si le compte de facturation associé à une organisation change (par exemple, si billing-account-0 est remplacé par billing-account-new), les projets billing-account-0 ne passent pas automatiquement à billing-account-new. Ces projets restent liés à billing-account-0, et vous devez mettre à jour manuellement le compte de facturation pour que les projets utilisent billing-account-new.

Modifier le compte de facturation associé

Dans Distributed Cloud, vous ne pouvez pas supprimer un compte de facturation. Si vous devez modifier votre configuration de facturation, vous devez modifier le compte de facturation associé à l'organisation ou au projet en modifiant le BillingAccountBinding. Voici quelques exemples de scénarios pour ce cas d'utilisation :

  • Les règles comptables de votre entreprise exigent que vous répartissiez les frais associés aux charges de travail de développement et de production dans des comptes distincts.
  • Vous créez un compte de facturation pour facturer un contrat client sur une période d'un an. À l'expiration du contrat, vous devez facturer la période restante qui dépasse un an.

Pour un projet

Pour modifier le compte de facturation associé à un projet, procédez comme suit :

  1. Créez un BillingAccount à associer au projet. Ce compte remplace l'ancien.

  2. Recherchez le fichier YAML de la ressource BillingAccountBinding dans l'espace de noms du projet pour voir quel compte de facturation est associé :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Modifiez le BillingAccountBinding pour l'associer au nouveau compte de facturation. Dans la section billingAccountRef, renseignez le champ name avec un nouveau nom de BillingAccount créé à l'étape 1 de cette section.

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. Après avoir apporté les modifications, assurez-vous que le compte de facturation est correctement mis à jour :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

L'exemple suivant montre un fichier YAML BillingAccountBinding avec le compte expired-billing-account associé au projet 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

L'exemple suivant montre le fichier YAML BillingAccountBinding de l'exemple précédent modifié pour associer un nouveau compte appelé 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

Pour une organisation

Pour modifier le compte de facturation associé à une organisation :

  1. Créez un BillingAccount à associer à l'organisation. Ce compte remplace l'ancien.

  2. Recherchez le fichier YAML de la ressource BillingAccountBinding dans l'espace de noms platform pour voir quel compte de facturation est associé :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Modifiez le BillingAccountBinding pour l'associer au nouveau compte de facturation. Dans la section billingAccountRef, renseignez le champ name avec un nouveau nom de BillingAccount créé à l'étape 1.

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Après avoir apporté les modifications, assurez-vous que le compte de facturation est correctement mis à jour :

    kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform