本文說明如何建立 Google Distributed Cloud (GDC) 實體隔離環境的帳單帳戶,以追蹤資源用量。
Distributed Cloud 環境需要帳單帳戶,才能追蹤專案和機構的使用費用。機構中的所有帳單帳戶都會使用單一價格表,向客戶收取服務用量費用。如果未將帳單帳戶連結至機構或專案,您將會遺失與資源相關聯的費用資料,導致費用差異。
本文適用於平台管理員或應用程式營運人員群組的開發人員,這類人員會在 GDC 中建立及管理帳單帳戶。詳情請參閱「適用於 GDC 氣隙環境的目標對象」說明文件。
事前準備
要求 IAM 角色
請與機構 IAM 管理員聯絡,要求授予專案的下列角色:
全域機構帳單帳戶管理員 (
organization-billing-account-admin):建立、管理及繫結資源。BillingAccount全域機構帳單帳戶使用者 (
organization-billing-account-user):讀取、列出及繫結BillingAccount資源。全域機構帳單帳戶管理員 (
organization-billing-manager):讀取、列出、建立及更新BillingAccountBinding資源。
這些角色會繫結至專案命名空間 (適用於專案層級帳單),或是平台命名空間 (適用於機構層級帳單)。
取得 kubeconfig 檔案
如要對 Org Global 叢集執行指令,請確認您擁有下列資源:
如果沒有 Org Global 叢集的 kubeconfig 檔案,請登入並產生該檔案。
使用 Org Global 叢集的 kubeconfig 檔案路徑,取代這些操作說明中的
ORG_GLOBAL_CLUSTER_KUBECONFIG。
建立新的帳單帳戶
kubectl
帳單帳戶的專屬 ID 為 name 和 namespace。如要建立帳單帳戶,請使用自訂資源建立 name 和 namespace:
建立 YAML 檔案,並新增
BillingAccount自訂資源和下列內容: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"請替換下列變數:
BIL_ACCOUNT_NAME:帳單帳戶名稱,例如test-billing-account。BIL_DISPLAY_NAME:帳單帳戶顯示名稱,例如"Test Billing Account"。
確認付款設定類型。Distributed Cloud 帳單帳戶必須採用下列其中一種付款設定:
cloudBillingConfig:預設付款設定。這項設定會儲存 Cloud Billing 帳戶 ID。customConfig:合作夥伴的自訂設定,用於儲存付款設定,以便向機構收費。customConfig支援鍵/值字串的字典,且必須包含payment-config-type鍵。
下列範例顯示不同付款設定的
BillingAccountYAML 檔案程式碼片段:cloudBillingConfig範例:spec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_ID將
CLOUD_BILLING_ACCOUNT_ID替換為Google Cloud 帳單帳戶 ID。customConfig範例:spec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPE將
PAYMENT_CONFIG_TYPE替換為自訂帳單設定所選的付款設定類型。如果沒有貴機構設定的相關資訊,請輸入下列詳細資料:
customConfigspec: paymentSystemConfig: customConfig: "payment-config-type": "N/A"下列 YAML 檔案顯示完整的
BillingAccount資源,其中包含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"儲存 YAML 檔案。執行
kubectlCLI,在 Org Global 叢集中套用資源:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yaml將
ORG_GLOBAL_CLUSTER_KUBECONFIG替換為機構全域叢集 kubeconfig 檔案。
CLI
如要建立帳單帳戶,請使用 gdcloud billing accounts create 指令。
將機構或專案連結至帳單帳戶
您必須先將帳單帳戶連結至機構,才能建立任何專案。 這麼做可確保機構內建立的所有專案,預設都會繼承有效的帳單帳戶。
如要使用與機構帳單帳戶不同的帳單帳戶,也可以明確將專案連結至特定帳單帳戶。
連結機構
如要將機構連結至 BillingAccount,請按照下列步驟操作:
在 YAML 檔案
billingaccountbinding.yaml中新增下列內容:- 在
billingAccountRef區段中,將name欄位填入要連結的BillingAccount中name欄位的內容。 - 在
metadata區段中,填入namespace欄位的值,該值與BillingAccount資源中相同欄位的值相同。在本例中,BillingAccount資源的機構命名空間為platform:
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: platform spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform- 在
執行下列
kubectl指令來套用billingaccountbinding.yaml檔案:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml檢查
BillingAccountBinding的狀態,並確認沒有錯誤:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform
連結專案
如要將專案連結至 BillingAccount,請按照下列步驟操作:
在
billingaccountbinding.yaml檔案中新增下列內容:- 在
billingAccountRef區段中,將name欄位填入要連結的BillingAccount中name欄位的內容。 - 在
metadata區段中,使用BillingAccount資源中相同欄位的內容填入namespace欄位。
apiVersion: billing.global.gdc.goog/v1 kind: BillingAccountBinding metadata: name: billing namespace: PROJECT_NAME spec: billingAccountRef: name: BIL_ACCOUNT_NAME namespace: platform請替換下列變數:
PROJECT_NAME,並填入與帳單帳戶綁定的專案名稱。BIL_ACCOUNT_NAME:帳單帳戶名稱,例如test-billing-account。
- 在
執行下列
kubectl指令來套用billingaccountbinding.yaml檔案:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccountbinding.yaml檢查
BillingAccountBinding的狀態,並確認沒有錯誤:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME將
PROJECT_NAME替換為繫結至帳單帳戶的專案名稱。
列出帳單帳戶繫結
查看所有已部署的 BillingAccountBinding 資源清單,以及機構中所有命名空間的目前狀態:
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'
這項指令會輸出每個 BillingAccountBinding 的 NAME、NAMESPACE、BillingAccountName 和 STATUS。STATUS 欄位會指出繫結是否有效,或是否有任何錯誤。
帳單帳戶階層和行為
將帳單帳戶連結至機構和專案時,適用下列階層和行為:
專案層級的關聯優先:如果特定專案 (例如
project-A) 明確連結至BillingAccount(例如billing-account-1),則project-A的所有費用都會只計入billing-account-1。無論機構層級的帳單帳戶設定為何,這個專案層級的關聯都會維持有效。未連結專案的機構層級關聯:如果機構連結至
BillingAccount(例如billing-account-0),該機構中所有沒有自己明確BillingAccountBinding的專案都會自動與billing-account-0建立關聯,並向billing-account-0收取費用。這項關聯通常會在約 15 分鐘後生效。變更機構帳單帳戶:如果連結至機構的帳單帳戶變更 (例如從
billing-account-0變更為billing-account-new),billing-account-0專案不會自動切換至billing-account-new。這些專案仍會綁定billing-account-0,您必須手動更新帳單帳戶,才能讓專案使用billing-account-new。
變更連結的帳單帳戶
在 Distributed Cloud 中,您無法刪除帳單帳戶。如要變更帳單設定,請修改 BillingAccountBinding,變更連結至機構或專案的帳單帳戶。這類用途的適用情境包括:
- 貴公司的會計規則要求您將與開發人員和生產層級工作負載相關的費用,分別計入不同帳戶。
您建立帳單帳戶,以便在一年期間向客戶合約收費。合約到期後,您必須支付超過一年的剩餘期間費用。
專案
如要變更專案的連結帳單帳戶,請按照下列步驟操作:
建立新的
BillingAccount,然後連結至專案。這個帳戶會取代舊帳戶。在專案命名空間中找出
BillingAccountBinding資源 YAML 檔案,查看連結的帳單帳戶:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME修改
BillingAccountBinding,連結至新的帳單帳戶。在billingAccountRef區段中,使用本節步驟 1 建立的新BillingAccount名稱填入name欄位。kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAME變更完成後,請確認帳單帳戶已正確更新:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
以下範例顯示的 BillingAccountBinding YAML 檔案中,帳戶 expired-billing-account 已連結至專案 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
以下範例顯示先前範例中的 BillingAccountBinding YAML 檔案,經過修改後會連結名為 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
機構
如要變更機構的連結帳單帳戶,請按照下列步驟操作:
建立新的
BillingAccount,連結至機構。這個帳戶會取代舊帳戶。在
platform命名空間中找出BillingAccountBinding資源 YAML 檔案,查看連結的帳單帳戶:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform修改
BillingAccountBinding,連結至新的帳單帳戶。在billingAccountRef區段中,使用步驟 1 建立的新BillingAccount名稱填入name欄位。kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platform變更完成後,請確認帳單帳戶已正確更新:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform