Rechnungskonten erstellen und verknüpfen

Für Google Distributed Cloud-Umgebungen (GDC) ohne Internetverbindung ist ein Rechnungskonto erforderlich, um die Kosten für Projekte und Organisationen zu erfassen. Wenn Sie kein Rechnungskonto mit einer Organisation oder einem Projekt verknüpfen, gehen die mit der Ressource verknüpften Kostendaten verloren.

Wenn die Dienstnutzung dem Kunden in Rechnung gestellt werden soll, wird für alle Rechnungskonten innerhalb einer Organisation eine einzige Preistabelle verwendet.

Hinweise

Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die folgenden erforderlichen Rollen zuzuweisen. Diese Rollen sind entweder an den Projektnamespace für die Abrechnung auf Projektebene oder an den Plattformnamespace für die Abrechnung auf Organisationsebene gebunden:

  • Globaler Administrator für das Abrechnungskonto der Organisation: Kann die BillingAccount-Ressource erstellen, verwalten und binden. Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle organization-billing-account-admin zuzuweisen.

  • Global Organization Billing Account User: Die BillingAccount-Ressource kann gelesen, aufgelistet und gebunden werden. Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle organization-billing-account-user zuzuweisen.

  • Global Organization Billing Account Manager: Berechtigung zum Lesen, Auflisten, Erstellen und Aktualisieren der BillingAccountBinding-Ressource. Bitten Sie Ihren IAM-Administrator der Organisation, Ihnen die Rolle organization-billing-manager zuzuweisen.

kubeconfig-Datei abrufen

Damit Sie Befehle für den Global API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den globalen API-Server, falls Sie noch keine haben.

  2. Verwenden Sie den Pfad zur kubeconfig-Datei des globalen API-Servers, um GLOBAL_API_SERVER_KUBECONFIG in dieser Anleitung zu ersetzen.

Neues Rechnungskonto erstellen

Ein Abrechnungskonto wird eindeutig durch seine name und namespace identifiziert. Wenn Sie ein Rechnungskonto erstellen möchten, verwenden Sie eine benutzerdefinierte Ressource, um name und namespace festzulegen:

  1. Erstellen Sie eine YAML-Datei und fügen Sie die benutzerdefinierte Ressource BillingAccount und den folgenden Inhalt hinzu:

    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"
    

    Ersetzen Sie die folgenden Variablen:

    • BIL_ACCOUNT_NAME: der Name des Rechnungskontos. Beispiel: test-billing-account.
    • BIL_DISPLAY_NAME: der Anzeigename des Abrechnungskontos. Beispiel: "Test Billing Account".
  2. Prüfen Sie den Typ Ihrer Zahlungskonfiguration. Für Distributed Cloud-Rechnungskonten muss eine der folgenden Zahlungskonfigurationen festgelegt sein:

    • cloudBillingConfig: Die Standardkonfiguration für die Zahlung. In dieser Konfiguration wird eine Cloud-Rechnungskonto-ID gespeichert.

    • customConfig: Eine benutzerdefinierte Konfiguration für Partner zum Speichern ihrer Zahlungskonfiguration für die Abrechnung der Organisation. customConfig unterstützt ein Dictionary mit Schlüssel/Wert-Strings und dem obligatorischen Schlüssel payment-config-type.

    Die folgenden Beispiele zeigen BillingAccount-YAML-Dateischnipsel für verschiedene Zahlungskonfigurationen:

    cloudBillingConfig

    spec:
      paymentSystemConfig:
        cloudBillingConfig:
          accountID: CLOUD_BILLING_ACCOUNT_ID
    

    Ersetzen Sie CLOUD_BILLING_ACCOUNT_ID durch die ID IhresGoogle Cloud Abrechnungskontos.

    customConfig

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

    Ersetzen Sie PAYMENT_CONFIG_TYPE durch den von Ihnen ausgewählten Zahlungskonfigurationstyp für Ihre benutzerdefinierte Abrechnungskonfiguration.

    Wenn Sie die Informationen für die customConfig-Konfiguration Ihrer Organisation nicht haben, geben Sie die folgenden Details ein:

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

    Die folgende YAML-Datei zeigt eine vollständige BillingAccount-Ressource mit der cloudBillingConfig-Konfiguration:

    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. Speichern Sie die YAML-Datei. Führen Sie die kubectl-Befehlszeile aus, um die Ressource auf den globalen API-Server anzuwenden:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccount.yaml
    

    Ersetzen Sie GLOBAL_API_SERVER_KUBECONFIG durch die kubeconfig-Datei des globalen API-Servers.

In diesem Abschnitt finden Sie eine Reihe von Schritten zum Verknüpfen einer Organisation oder eines Projekts mit einem BillingAccount.

So verknüpfen Sie ein Projekt mit einer BillingAccount:

  1. Fügen Sie der Datei billingaccountbinding.yaml den folgenden Inhalt hinzu:

    • Füllen Sie im Abschnitt billingAccountRef das Feld name mit dem Inhalt des Felds name in der BillingAccount aus, die Sie verknüpfen möchten.
    • Füllen Sie im Abschnitt metadata das Feld namespace mit dem Inhalt des identischen Felds in der Ressource BillingAccount aus.

    In diesem Beispiel ist der Projekt-Namespace PROJECT_NAME:

    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: PROJECT_NAME
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    

    Ersetzen Sie PROJECT_NAME durch den Namen des Projekts, das mit dem Abrechnungskonto verknüpft ist.

  2. Führen Sie den folgenden kubectl-Befehl aus, um die Datei billingaccountbinding.yaml anzuwenden:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Prüfen Sie den Status von BillingAccountBinding und vergewissern Sie sich, dass keine Fehler vorliegen:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

    Ersetzen Sie PROJECT_NAME durch den Namen des Projekts, das mit dem Abrechnungskonto verknüpft ist.

So verknüpfen Sie eine Organisation mit einem BillingAccount:

  1. Fügen Sie der YAML-Datei billingaccountbinding.yaml den folgenden Inhalt hinzu:

    • Füllen Sie im Bereich billingAccountRef das Feld name mit dem Inhalt des Felds name in der BillingAccount aus, die Sie verknüpfen möchten.
    • Füllen Sie im Abschnitt metadata das Feld namespace mit dem Inhalt des identischen Felds in der Ressource BillingAccount aus. In diesem Beispiel lautet der Organisations-Namespace platform:
    apiVersion: billing.global.gdc.goog/v1
    kind: BillingAccountBinding
    metadata:
      name: billing
      namespace: platform
    spec:
      billingAccountRef:
        name: BIL_ACCOUNT_NAME
        namespace: platform
    
  2. Führen Sie den folgenden kubectl-Befehl aus, um die Datei billingaccountbinding.yaml anzuwenden:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f billingaccountbinding.yaml
    
  3. Prüfen Sie den Status von BillingAccountBinding und vergewissern Sie sich, dass keine Fehler vorliegen:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    

Bindungen von Rechnungskonten auflisten

Eine Liste aller bereitgestellten BillingAccountBinding-Ressourcen und ihres aktuellen Status in allen Namespaces der Organisation ansehen:

  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'

Mit diesem Befehl werden die NAME, NAMESPACE, BillingAccountName und STATUS jedes BillingAccountBinding ausgegeben. Das Feld STATUS gibt an, ob die Bindung aktiv ist oder ob Fehler vorliegen.

Rechnungskontohierarchie und ‑verhalten

Beim Verknüpfen von Rechnungskonten mit Organisationen und Projekten gelten die folgenden Hierarchien und Verhaltensweisen:

  • Vorrang der Zuordnung auf Projektebene:Wenn ein bestimmtes Projekt, z. B. project-A, explizit mit einem BillingAccount (z. B. billing-account-1) verknüpft ist, werden alle Kosten für project-A ausschließlich billing-account-1 in Rechnung gestellt. Diese Zuordnung auf Projektebene bleibt unabhängig von den Rechnungskontoeinstellungen auf Organisationsebene gültig.

  • Zuordnung auf Organisationsebene für nicht verknüpfte Projekte:Wenn Ihre Organisation mit einem BillingAccount (z. B. billing-account-0) verknüpft ist, werden alle Projekte in dieser Organisation, die keine eigene explizite BillingAccountBinding haben, automatisch billing-account-0 zugeordnet und darüber abgerechnet. Diese Verknüpfung wird in der Regel nach etwa 15 Minuten wirksam.

  • Rechnungskonten der Organisation ändern:Wenn sich das mit einer Organisation verknüpfte Rechnungskonto ändert (z. B. von billing-account-0 zu billing-account-new), werden Projekte, die zuvor billing-account-0 übernommen haben, nicht automatisch auf billing-account-new umgestellt. Diese Projekte bleiben an billing-account-0 gebunden und ihr Rechnungskonto muss manuell aktualisiert werden, wenn Sie billing-account-new verwenden möchten.

Verknüpftes Rechnungskonto ändern

In Distributed Cloud können Sie kein Rechnungskonto löschen. Wenn Sie Änderungen an Ihrer Abrechnungskonfiguration vornehmen möchten, müssen Sie das Rechnungskonto ändern, das mit einer Organisation oder einem Projekt verknüpft ist, indem Sie die BillingAccountBinding ändern. Hier einige Beispiele für Szenarien für diesen Anwendungsfall:

  • Die Buchhaltungsregeln in Ihrem Unternehmen erfordern, dass Kosten für Arbeitslasten auf Entwickler- und Produktionsebene auf separate Konten aufgeteilt werden.
  • Sie erstellen ein Rechnungskonto, um einen Kundenvertrag für ein Jahr abzurechnen. Wenn der Vertrag ausläuft, müssen Sie den verbleibenden Zeitraum, der über ein Jahr hinausgeht, in Rechnung stellen.

Verknüpftes Rechnungskonto für ein Projekt ändern

So ändern Sie das verknüpfte Rechnungskonto für ein Projekt:

  1. Erstellen Sie eine neue BillingAccount, die mit dem Projekt verknüpft werden soll. Dieses Konto ersetzt das alte Konto.

  2. Suchen Sie im Projekt-Namespace nach der YAML-Datei der BillingAccountBinding-Ressource, um zu sehen, welches Rechnungskonto verknüpft ist:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    
  3. Ändern Sie die BillingAccountBinding, um sie mit dem neuen Rechnungskonto zu verknüpfen. Füllen Sie im Abschnitt billingAccountRef das Feld name mit einem neuen BillingAccount-Namen aus, der in Schritt 1 dieses Abschnitts erstellt wurde.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME
    
  4. Prüfen Sie nach den Änderungen, ob das Abrechnungskonto richtig aktualisiert wurde:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
    

Das folgende Beispiel zeigt eine BillingAccountBinding-YAML-Datei mit dem Konto expired-billing-account, das mit dem Projekt project-one verknüpft ist:

  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

Im folgenden Beispiel wird die YAML-Datei BillingAccountBinding aus dem vorherigen Beispiel so geändert, dass ein neues Konto namens new billing account verknüpft wird:

  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

Verknüpftes Rechnungskonto für eine Organisation ändern

So ändern Sie das verknüpfte Rechnungskonto für eine Organisation:

  1. Erstellen Sie eine neue BillingAccount, um sie mit der Organisation zu verknüpfen. Dieses Konto ersetzt das alte Konto.

  2. Suchen Sie im Namespace platform nach der YAML-Datei für die Ressource BillingAccountBinding, um zu sehen, welches Rechnungskonto verknüpft ist:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform
    
  3. Ändern Sie die BillingAccountBinding, um sie mit dem neuen Rechnungskonto zu verknüpfen. Füllen Sie im Abschnitt billingAccountRef das Feld name mit einem neuen BillingAccount-Namen aus, der in Schritt 1 erstellt wurde.

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG edit billingaccountbinding billing -n platform
    
  4. Prüfen Sie nach den Änderungen, ob das Abrechnungskonto richtig aktualisiert wurde:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe billingaccountbinding billing -n platform