במאמר הזה מוסבר איך יוצרים חשבון לחיוב ב-Google Distributed Cloud (GDC) עם air gap כדי לעקוב אחרי השימוש במשאבים.
בסביבות של Distributed Cloud צריך חשבון לחיוב כדי לעקוב אחרי עלויות השימוש בפרויקטים ובארגונים. כל החשבונות לחיוב בארגון משתמשים בגיליון מחירים אחד כדי לחייב את הלקוח על השימוש בשירות. אם לא תקשרו חשבון לחיוב לארגון או לפרויקט, תאבדו את נתוני העלות שמשויכים למשאב, וכתוצאה מכך יהיו פערים בעלויות.
המסמך הזה מיועד למפתחים בקבוצות של מנהלי פלטפורמות או מפעילי אפליקציות שיוצרים ומנהלים חשבונות לחיוב ב-GDC. מידע נוסף מופיע במאמר קהלים ב-GDC עם air gap.
לפני שמתחילים
בקשת תפקידים ב-IAM
כדי לבקש את התפקידים הבאים בפרויקט, פנו למנהל חשבון ארגוני ב-IAM:
אדמין של חשבון לחיוב ברמת הארגון (
organization-billing-account-admin): יצירה, ניהול וקישור של המשאבBillingAccount.משתמש בחשבון לחיוב ברמת הארגון (
organization-billing-account-user): קריאה, הצגה ברשימה וקישור של המשאבBillingAccount.ניהול חשבונות לחיוב ברמת הארגון (
organization-billing-manager): קריאה, הצגה, יצירה ועדכון של המשאבBillingAccountBinding.
התפקידים האלה מקושרים למרחב השמות של הפרויקט לחיוב ברמת הפרויקט, או למרחב השמות של הפלטפורמה לחיוב ברמת הארגון.
קבלת הקובץ kubeconfig
כדי להריץ פקודות באשכול Org Global, צריך לוודא שיש לכם את המשאבים הבאים:
אם אין לכם קובץ kubeconfig לאשכול Org Global, נכנסים לחשבון ויוצרים אותו.
בהוראות האלה, מחליפים את
ORG_GLOBAL_CLUSTER_KUBECONFIGבנתיב לקובץ kubeconfig של האשכול Org Global.
יצירת חשבון חדש לחיוב
kubectl
חשבון לחיוב מזוהה באופן ייחודי באמצעות 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.
customConfig: הגדרה מותאמת אישית לשותפים, שמאפשרת להם לשמור את הגדרות התשלום שלהם כדי לחייב את הארגון. השדהcustomConfigתומך במילון של מחרוזות מפתח/ערך, עם מפתח חובהpayment-config-type.
הדוגמאות הבאות מציגות קטעי קוד של קובץ YAML ב-
BillingAccountלהגדרות תשלום שונות:דוגמה ל-
cloudBillingConfig:spec: paymentSystemConfig: cloudBillingConfig: accountID: CLOUD_BILLING_ACCOUNT_IDמחליפים את
CLOUD_BILLING_ACCOUNT_IDבמזהה החשבון לחיוב ב-Google Cloud .דוגמה ל-
customConfig:spec: paymentSystemConfig: customConfig: "payment-config-type": PAYMENT_CONFIG_TYPEמחליפים את
PAYMENT_CONFIG_TYPEבסוג הגדרת התשלום שבחרתם להגדרת החיוב בהתאמה אישית.אם אין לכם את פרטי ההגדרות האישיות של
customConfigבארגון, הזינו את הפרטים הבאים:spec: 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. מריצים את ה-CLI של
kubectlכדי להחיל את המשאב באשכול Org Global:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG apply -f billingaccount.yamlמחליפים את
ORG_GLOBAL_CLUSTER_KUBECONFIGבקובץ kubeconfig של האשכול Org Global.
CLI
כדי ליצור חשבון לחיוב, משתמשים בפקודה gdcloud billing accounts create.
מידע נוסף זמין במאמר gdcloud billing accounts create.
קישור של ארגון או פרויקט לחשבון לחיוב
לפני שיוצרים פרויקטים, צריך לקשר חשבון לחיוב לארגון. כך כל הפרויקטים שנוצרים בארגון יורשים כברירת מחדל חשבון תקין לחיוב.
אם רוצים שהפרויקט לא ישויך לחשבון לחיוב של הארגון, אפשר לקשר אותו באופן מפורש לחשבון אחר לחיוב.
קישור ארגון
כדי לקשר ארגון אל BillingAccount:
מוסיפים את התוכן הבא לקובץ ה-YAML
billingaccountbinding.yaml:- בקטע
billingAccountRef, ממלאים את השדהnameבתוכן מהשדהnameבBillingAccountשרוצים לקשר. - בקטע
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בתוכן מהשדהnameבBillingAccountשרוצים לקשר. - בקטע
metadata, מאכלסים את השדהnamespaceבתוכן מהשדה הזהה במשאבBillingAccount.
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'
הפקודה הזו מפיקה את NAME, NAMESPACE, BillingAccountName ו-STATUS של כל BillingAccountBinding. השדה STATUS מציין אם הקישור פעיל או אם יש שגיאות.
ההיררכיה וההתנהגות של החשבון לחיוב
כשמקשרים חשבונות לחיוב לארגונים ולפרויקטים, חלים ההיררכיה וההתנהגויות הבאות:
שיוך ברמת הפרויקט מקבל עדיפות: אם פרויקט ספציפי, כמו
project-A, מקושר באופן מפורש ל-BillingAccount, לדוגמהbilling-account-1, כל העלויות שלproject-Aמחויבות באופן בלעדי ב-billing-account-1. הקישור הזה ברמת הפרויקט נשאר בתוקף, בלי קשר להגדרות של החשבון לחיוב ברמת הארגון.שיוך ברמת הארגון של פרויקטים לא מקושרים: אם הארגון שלכם מקושר ל
BillingAccount, לדוגמהbilling-account-0, כל הפרויקטים בארגון שאין להםBillingAccountBindingמפורש משלהם משויכים באופן אוטומטי ל-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חדש כדי לקשר לפרויקט. החשבון הזה מחליף את החשבון הישן.מאתרים את קובץ ה-YAML של המשאב
BillingAccountBindingבמרחב השמות של הפרויקט כדי לראות איזה חשבון לחיוב מקושר:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAMEמשנים את
BillingAccountBindingכדי לקשר לחשבון החדש לחיוב. בקטעbillingAccountRef, ממלאים את השדהnameבשם החדש שלBillingAccountשנוצר בשלב 1 של הקטע הזה.kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n PROJECT_NAMEאחרי שמבצעים את השינויים, צריך לוודא שחשבון החיוב עודכן בצורה נכונה:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n PROJECT_NAME
בדוגמה הבאה מוצג קובץ YAML של BillingAccountBinding עם החשבון 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
בדוגמה הבאה מוצג קובץ ה-YAML של BillingAccountBinding מהדוגמה הקודמת, ששונה כדי לקשר חשבון חדש בשם 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חדש כדי לקשר לארגון. החשבון הזה מחליף את החשבון הישן.מאתרים את קובץ ה-YAML של המשאב
BillingAccountBindingבמרחב השמותplatformכדי לראות איזה חשבון לחיוב מקושר:kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platformמשנים את
BillingAccountBindingכדי לקשר לחשבון החדש לחיוב. בקטעbillingAccountRef, מאכלסים את השדהnameבשם החדש שלBillingAccountשנוצר בשלב 1.kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG edit billingaccountbinding billing -n platformאחרי שמבצעים את השינויים, צריך לוודא שחשבון החיוב עודכן בצורה נכונה:
kubectl --kubeconfig ORG_GLOBAL_CLUSTER_KUBECONFIG describe billingaccountbinding billing -n platform