יצירת קטגוריות אחסון לפרויקטים

בדף הזה מוסבר איך ליצור קטגוריות אחסון מבודלות (air-gapped) ב-Google Distributed Cloud ‏(GDC).

לפני שמתחילים

קטגוריות אחסון הן משאבים שמוגבלים לפרויקט ספציפי. הפרויקט משמש כמאגר שמקבץ את הדליים ומאפשר לנהל אותם באמצעות שרת Management API. כדי לבצע את הפעולות בדף הזה, צריך ליצור פרויקט חדש או לבחור פרויקט קיים שיש לכם בו הרשאות מספיקות.

התפקידים שצריך ב-IAM

פנו לאדמין של פרויקט IAM כדי לבקש את התפקידים הבאים במרחב השמות של הפרויקט:

  • אדמין של קטגוריות בפרויקט (project-bucket-admin): יצירה, עדכון ומחיקה של קטגוריות אחסון.
  • ‫Project Bucket Object Viewer (project-bucket-object-viewer): צפייה בפרטים של קטגוריות ואובייקטים באחסון ובדיקתם.

מידע נוסף זמין במאמר בנושא מתן גישה לקטגוריות.

הכנת הסביבה

כדי להריץ פקודות מול שרת ה-API לניהול או שרת ה-API הגלובלי, צריך לבצע את הפעולות הבאות:

  1. נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig עבור שרת ה-API של ניהול אזורים, אם אין לכם כזה.
  2. לקטגוריות בשני אזורים, מבצעים את הפעולות הבאות:
    • מוודאים עם מפעיל התשתית (IO) שנוצר BucketLocationConfig משאב בהתאמה אישית עבור האזורים המזווגים.
    • יוצרים את קובץ ה-kubeconfig לשרת ה-API הגלובלי.

הנחיות למתן שמות לקטגוריות אחסון

השמות של הקטגוריות צריכים לעמוד במוסכמות הבאות למתן שמות:

  • להיות ייחודיים בתוך הפרויקט. שרת ה-Management API מוסיף קידומת ייחודית לשם המוגדר במלואו של הקטגוריה, כדי למנוע התנגשויות בתוך הארגון. במקרה הלא סביר של התנגשות בין תוספת לשם של מאפיין לבין שם של קטגוריה בארגונים שונים, יצירת הקטגוריה תיכשל ותוצג השגיאה 'שם הקטגוריה נמצא בשימוש'.
  • אל תכללו פרטים אישיים מזהים (PII).
  • השם צריך להיות תואם ל-DNS.
  • להכיל לפחות תו אחד ולא יותר מ-55 תווים.
  • השם חייב להתחיל באות ויכול להכיל רק אותיות, מספרים ומקפים.

יצירת קטגוריה

כברירת מחדל, הקטגוריות משתמשות בסוג האחסון Standard. אם ספק התשתית (IO) הפעיל את Nearline storage, תוכלו גם לבחור את סוג האחסון Nearline לנתונים שניגשים אליהם בתדירות נמוכה יותר. ‫Nearline Storage נתמך גם בקטגוריות של אזור יחיד וגם בקטגוריות של שני אזורים.

המסוף

  1. בתפריט הניווט, לוחצים על Object Storage (אחסון אובייקטים).
  2. ברשימת הפרויקטים, בוחרים את הפרויקט שבו רוצים ליצור את הקטגוריה.
  3. לוחצים על Create Bucket.
  4. בתהליך יצירת הקטגוריה, מקצים שם ייחודי לכל הקטגוריות בפרויקט.
  5. הזן תיאור
  6. בקטע Storage class, בוחרים באפשרות Standard או Nearline. האפשרות Nearline מוצגת רק אם Nearline Storage מופעל.
  7. אופציונלי: לוחצים על המתג toggle_off כדי להגדיר מדיניות שמירת נתונים ומזינים את מספר הימים הרצוי. אם אתם צריכים לחרוג ממגבלות מדיניות השמירה, אתם יכולים לפנות ל-IO.
  8. לוחצים על יצירה. תוצג הודעה על הצלחת הפעולה ותועברו חזרה לדף Buckets.

כדי לוודא שיצרתם בהצלחה דלי חדש, רעננו את הדף Buckets אחרי כמה דקות ובדקו שהסטטוס של הדלי השתנה מ-Not ready ל-Ready.

API

כדי ליצור קטגוריה אזורית, צריך להחיל הגדרת קטגוריה על מרחב השמות של הפרויקט:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

הדוגמה הבאה מציגה הגדרה של קטגוריה באמצעות סוג האחסון Standard:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

הדוגמה הבאה מציגה הגדרה של קטגוריה באמצעות סוג האחסון Nearline:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Nearline
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

הדוגמה הבאה מציגה הגדרה של קטגוריה עם גרסת הצפנה v1:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
  labels:
    object.gdc.goog/encryption-version: v1
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

מידע נוסף מופיע במאמר מאמרי העזרה של ה-API של קטגוריות.

הדוגמה הבאה מציגה מפרט של קטגוריה עם שני אזורים בשרת ה-API הגלובלי:

apiVersion: object.global.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: PROJECT_NAME
spec:
  location: LOCATION_NAME
  description: Sample DZ Bucket
  storageClass: Standard

כדי ליצור קטגוריה בשני אזורים באמצעות Nearline Storage, מגדירים את storageClass: Nearline.

הערה: רק הצפנה בגרסה 2 נתמכת בקטגוריות של אזורים כפולים, וכל הפעולות ליצירה, לעדכון או למחיקה של משאב בקטגוריה של אזורים כפולים חייבות להתבצע מול שרת ה-API הגלובלי.

כדי ליצור קטגוריה בשני אזורים, צריך להחיל את המפרט על שרת ה-API הגלובלי:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

כדי ליצור קטגוריה עם אזור יחיד באמצעות gdcloud עם סוג האחסון Nearline:

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_NAME \
    --location-type=SingleZone \
    --storage-class=Nearline

כדי ליצור קטגוריה בשני אזורים עם gdcloud באמצעות המיקום הגלובלי:

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_1,ZONE_2 \
    --location-type=AsyncDualZone \
    --storage-class=Nearline

אם לא מציינים את --storage-class, המערכת משתמשת ב-Standard כברירת מחדל.

פרטים נוספים זמינים במאמר gdcloud storage buckets create.

אחרי שיוצרים את הקטגוריה, מריצים את הפקודה הבאה כדי לאשר ולבדוק את הפרטים של הקטגוריה:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

בקטע סטטוס יש שני שדות חשובים: הצפנה (לפרטי ההצפנה) ושם מלא (שכולל את FULLY_QUALIFIED_BUCKET_NAME).

הצפנה גרסה 1

המידע מתייחס למפתח AEAD שנקרא obj-FULLY_QUALIFIED_BUCKET_NAME, שמשמש כהפניה למפתח ההצפנה שמשמש להצפנת אובייקטים שמאוחסנים בדלי. לדוגמה:

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

הצפנה גרסה 2

המידע מתייחס ל-Secret שנקרא kek-ref-FULLY_QUALIFIED_BUCKET_NAME, שמשמש כהפניה ל-AEADKeys פעילים שמוגדרים כברירת מחדל. מערכת בוחרת באופן אקראי מתוך AEADKeys פעילים שמוגדרים כברירת מחדל כדי להצפין אובייקטים שמועלים לקטגוריה, אם לא מצוין AEADKey ספציפי.

לדוגמה:

Status:
  Encryption:
    Key Ref:
      Kind: Secret
      Name: kek-ref-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

אפשר גם להריץ את הפקודה הבאה כדי לוודא שנוצרו מפתחות AEAD:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get aeadkeys -n PROJECT_NAMESPACE -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME