Les environnements isolés Google Distributed Cloud (GDC) nécessitent un compte de facturation pour suivre les coûts des projets et des organisations. Si vous n'associez pas de compte de facturation à une organisation ou à un projet, vous perdrez les données de coûts associées à la ressource.
Pour facturer l'utilisation des services au client, tous les comptes de facturation d'une organisation utilisent une seule et même grille tarifaire.
Avant de commencer
Demandez à l'administrateur IAM de votre organisation de vous accorder les rôles requis suivants. Ces rôles sont associé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 :
Administrateur de compte de facturation de l'organisation globale : créez, gérez et associez la ressource
BillingAccount. Demandez à l'administrateur IAM de votre organisation de vous attribuer le rôleorganization-billing-account-admin.Utilisateur du compte de facturation de l'organisation globale : lecture, liste et association de la ressource
BillingAccount. Demandez à l'administrateur IAM de votre organisation de vous attribuer le rôleorganization-billing-account-user.Administrateur de compte de facturation de l'organisation globale : lecture, liste, création et mise à jour de la ressource
BillingAccountBinding. Demandez à l'administrateur IAM de votre organisation de vous attribuer le rôleorganization-billing-manager.
Obtenir le fichier kubeconfig
Pour exécuter des commandes sur le serveur de l'API mondiale, assurez-vous de disposer des ressources suivantes :
Connectez-vous et générez le fichier kubeconfig pour le serveur d'API mondial si vous n'en avez pas.
Utilisez le chemin d'accès au fichier kubeconfig du serveur d'API mondial pour remplacer
GLOBAL_API_SERVER_KUBECONFIGdans ces instructions.
Créer un compte de facturation
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 name et namespace :
Créez un fichier YAML, puis ajoutez la ressource personnalisée
BillingAccountet 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.
Exemple :
test-billing-account - BIL_DISPLAY_NAME : nom à afficher du compte de facturation.
Exemple :
"Test Billing Account"
- BIL_ACCOUNT_NAME : nom du compte de facturation.
Exemple :
Vérifiez votre type de configuration de paiement. Les comptes de facturation Distributed Cloud doivent disposer de 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.customConfigaccepte un dictionnaire de chaînes clé/valeur, avec une clé obligatoirepayment-config-type.
Les exemples suivants montrent des extraits de fichier YAML
BillingAccountpour différentes configurations de paiement :cloudBillingConfigspec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDRemplacez
CLOUD_BILLING_ACCOUNT_IDpar l'ID de votre compte de facturationGoogle Cloud .customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPERemplacez
PAYMENT_CONFIG_TYPEpar le type de configuration de paiement de votre choix pour votre configuration de facturation personnalisée.Si vous ne disposez pas des informations de configuration
customConfigde votre organisation, saisissez les informations suivantes :spec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"Le fichier YAML suivant montre une ressource
BillingAccountcomplète avec la configurationcloudBillingConfig: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"Enregistrez le fichier YAML. Exécutez la CLI
kubectlpour appliquer la ressource dans le serveur d'API Global :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yamlRemplacez
GLOBAL_API_SERVER_KUBECONFIGpar le fichier kubeconfig du serveur d'API global.
Associer une organisation ou un projet à un compte de facturation
Cette section fournit une série d'étapes pour associer une organisation ou un projet à un BillingAccount.
Associer un projet
Pour associer un projet à un BillingAccount, procédez comme suit :
Ajoutez le contenu suivant au fichier :
billingaccountbinding.yaml:- Dans la section
billingAccountRef, remplissez le champnameavec le contenu du champnamede l'BillingAccountque vous souhaitez associer. - Dans la section
metadata, remplissez le champnamespaceavec le contenu du champ identique dans la ressourceBillingAccount.
Dans cet exemple, l'espace de noms du projet est PROJECT_NAME :
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platformRemplacez
PROJECT_NAMEpar le nom du projet associé au compte de facturation.- Dans la section
Exécutez la commande
kubectlsuivante pour appliquer le fichierbillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlVérifiez l'état de
BillingAccountBindinget assurez-vous qu'il n'y a pas d'erreurs :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMERemplacez
PROJECT_NAMEpar le nom du projet associé au compte de facturation.
Associer une organisation
Pour associer une organisation à un BillingAccount, procédez comme suit :
Ajoutez le contenu suivant au fichier YAML
billingaccountbinding.yaml:- Dans la section
billingAccountRef, remplissez le champnameavec le contenu du champnamede l'BillingAccountque vous souhaitez associer. - Dans la section
metadata, remplissez le champnamespaceavec le contenu du champ identique dans la ressourceBillingAccount. Dans cet exemple, l'espace de noms de l'organisation estplatform:
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform- Dans la section
Exécutez la commande
kubectlsuivante pour appliquer le fichierbillingaccountbinding.yaml:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yamlVérifiez l'état de
BillingAccountBindinget assurez-vous qu'il n'y a pas d'erreurs :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
Lister les liaisons de 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 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'
Cette commande affiche les NAME, NAMESPACE, BillingAccountName et STATUS de chaque BillingAccountBinding. Le champ STATUS indique si l'association 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é à unBillingAccount(tel quebilling-account-1), tous les coûts deproject-Asont facturés exclusivement àbilling-account-1. Cette association au niveau du projet reste valide quels que soient les paramètres de 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(tel quebilling-account-0), tous les projets de cette organisation qui n'ont pas leur propreBillingAccountBindingexplicite sont automatiquement associés àbilling-account-0et facturés à ce compte. Cette association prend généralement effet au bout de 15 minutes environ.Modification des comptes de facturation d'une organisation : si le compte de facturation associé à une organisation change (par exemple, de
billing-account-0àbilling-account-new), les projets qui héritaient auparavant debilling-account-0ne passent pas automatiquement àbilling-account-new. Ces projets restent associés àbilling-account-0. Si vous souhaitez qu'ils utilisentbilling-account-new, vous devez mettre à jour manuellement leur compte de facturation.
Modifier le compte de facturation associé
Dans Distributed Cloud, vous ne pouvez pas supprimer de compte de facturation. Si vous devez modifier votre configuration de facturation, vous devez modifier le compte de facturation associé à une organisation ou à un 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. Lorsque le contrat expire, vous devez facturer la période restante qui dépasse un an.
Modifier le compte de facturation associé à un projet
Pour modifier le compte de facturation associé à un projet :
Créez une
BillingAccountpour l'associer au projet. Ce compte remplace l'ancien.Localisez le fichier YAML de la ressource
BillingAccountBindingdans l'espace de noms du projet pour voir quel compte de facturation est associé :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEModifiez
BillingAccountBindingpour l'associer au nouveau compte de facturation. Dans la sectionbillingAccountRef, renseignez le champnameavec le nouveau nomBillingAccountcréé à l'étape 1 de cette section.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEAprès avoir effectué les modifications, assurez-vous que le compte de facturation a été correctement mis à jour :
kubectl --kubeconfig GLOBAL_API_SERVER_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
Modifier le compte de facturation associé à une organisation
Pour modifier le compte de facturation associé à une organisation :
Créez un
BillingAccountpour l'associer à l'organisation. Ce compte remplace l'ancien.Localisez le fichier YAML de la ressource
BillingAccountBindingdans l'espace de nomsplatformpour voir quel compte de facturation est associé :kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platformModifiez
BillingAccountBindingpour l'associer au nouveau compte de facturation. Dans la sectionbillingAccountRef, renseignez le champnameavec le nouveau nomBillingAccountcréé à l'étape 1.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platformAprès avoir effectué les modifications, assurez-vous que le compte de facturation a été correctement mis à jour :
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform