שימוש בתוסף Secret Manager עם Google Kubernetes Engine

השילוב בין Secret Manager לבין Google Kubernetes Engine‏ (GKE) מאפשר לכם לאחסן נתונים רגישים כמו סיסמאות ואישורים שמשמשים אשכולות GKE כסודות ב-Secret Manager.

בדף הזה מוסבר איך אפשר להשתמש בתוסף Secret Manager כדי לגשת לסודות שמאוחסנים ב-Secret Manager כנפחים שמוצמדים ל-Pods של Kubernetes.

התהליך הזה כולל את השלבים הבאים:

  1. מפעילים את התוסף Secret Manager באשכול GKE חדש או קיים.
  2. הגדרת אפליקציות לאימות ב-Secret Manager API.
  3. מגדירים אילו סודות לטעון לקבוצות Pod ב-Kubernetes באמצעות קובץ SecretProviderClass YAML. תוסף Secret Manager תומך בסודות גלובליים ואזוריים.
  4. יוצרים נפח אחסון שבו יותקנו הסודות. אחרי שמצרפים את אמצעי האחסון, אפליקציות במאגר יכולות לגשת לנתונים במערכת הקבצים של המאגר.

התוסף Secret Manager מבוסס על Kubernetes Secrets Store CSI Driver בקוד פתוח ועל Google Secret Manager provider. אם אתם משתמשים ב-Secrets Store CSI Driver בקוד פתוח כדי לגשת לסודות, אתם יכולים לעבור לתוסף Secret Manager. מידע נוסף זמין במאמר בנושא העברה מ-Secrets Store CSI Driver הקיים.

יתרונות

התוסף Secret Manager מספק את היתרונות הבאים:

  • אתם יכולים להשתמש בפתרון מנוהל ונתמך באופן מלא כדי לגשת לסודות של Secret Manager מתוך GKE בלי תקורה תפעולית.
  • לא צריך לכתוב קוד בהתאמה אישית כדי לגשת לסודות שמאוחסנים ב-Secret Manager.
  • אתם יכולים לאחסן ולנהל את כל הסודות שלכם באופן מרכזי ב-Secret Manager ולגשת לסודות באופן סלקטיבי מ-pods של GKE באמצעות התוסף Secret Manager. כך תוכלו להשתמש בתכונות שמציע Secret Manager, כמו הצפנת CMEK, בקרת גישה פרטנית, רוטציה מנוהלת, ניהול מחזור חיים ויומני ביקורת, וגם בתכונות של Kubernetes, כמו העברת סודות למאגרי מידע בצורה של אמצעי אחסון מוצמדים.
  • התוסף Secret Manager נתמך באשכולות רגילים ובאשכולות Autopilot.
  • התוסף Secret Manager תומך בצמתים שמשתמשים בקובצי אימג' של צמתים של מערכת הפעלה שמותאמת לקונטיינרים או של Ubuntu.

מגבלות

התוסף Secret Manager כולל את המגבלות הבאות:

  • התוסף Secret Manager לא תומך בתכונה Sync as Kubernetes Secret (סנכרון כסוד של Kubernetes), שזמינה ב-Secrets Store CSI Driver בקוד פתוח. אם רוצים לסנכרן סודות שמאוחסנים ב-Secret Manager עם סודות של Kubernetes, אפשר להשתמש בתכונת סנכרון הסודות המשולבת של Secret Manager. מידע נוסף זמין במאמר בנושא סנכרון סודות עם סודות של Kubernetes.

  • התוסף Secret Manager לא תומך בצמתים של Windows Server.

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

  • מפעילים את ממשקי ה-API של Secret Manager ו-Google Kubernetes Engine.

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    הפעלת ממשקי ה-API

  • אם רוצים להשתמש ב-Google Cloud CLI למשימה הזו, צריך להתקין ואז לאתחל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית.

    אי אפשר להגדיר את התוסף Secret Manager באופן ידני באמצעות Google Cloud SDK או מסוף Google Cloud .

  • מוודאים שהאשכול פועל ב-GKE בגרסה 1.27.14-gke.1042001 ואילך עם תמונת צומת של Linux.

  • אם אתם משתמשים באשכול GKE Standard, אתם צריכים לוודא שמופעל באשכול שלכם איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE. איחוד זהויות של עומסי עבודה ל-GKE מופעל כברירת מחדל באשכול Autopilot. קבוצות Pod ב-Kubernetes משתמשות באיחוד זהויות של עומסי עבודה ל-GKE כדי לבצע אימות ל-Secret Manager API.

הפעלת התוסף Secret Manager

אפשר להפעיל את התוסף Secret Manager גם באשכולות רגילים וגם באשכולות של Autopilot.

הפעלת התוסף Secret Manager באשכול GKE חדש

כדי להפעיל את התוסף Secret Manager כשיוצרים את האשכול:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Google Kubernetes Engine.

    מעבר אל Google Kubernetes Engine

  2. לוחצים על יצירה.

  3. בתיבת הדו-שיח יצירת אשכול, לוחצים על הגדרה.

  4. בתפריט הניווט, בקטע Cluster, לוחצים על Security.

  5. מסמנים את תיבת הסימון Enable Secret Manager (הפעלת Secret Manager).

  6. מסמנים את התיבה Enable Workload Identity.

  7. ממשיכים להגדיר את האשכול ולוחצים על יצירה.

gcloud

{ Standard cluster}

כדי להפעיל את התוסף Secret Manager באשכול Standard חדש, מריצים את הפקודה הבאה:

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • LOCATION: האזור של Compute Engine שבו נמצא האשכול, למשל us-central1.
  • VERSION: גרסת GKE הספציפית שרוצים להשתמש בה. מוודאים שהאשכול פועל ב-GKE בגרסה 1.27.14-gke.1042001 ואילך. אם ערוץ ההפצה שמוגדר כברירת מחדל לא כולל את הגרסה הזו, צריך להשתמש בדגל --release-channel כדי לבחור ערוץ הפצה שכן כולל אותה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters create CLUSTER_NAME \
    --enable-secret-manager \
    --location=LOCATION \
    --cluster-version=VERSION \
    --workload-pool=PROJECT_ID.svc.id.goog

‏Windows (PowerShell)

gcloud container clusters create CLUSTER_NAME `
    --enable-secret-manager `
    --location=LOCATION `
    --cluster-version=VERSION `
    --workload-pool=PROJECT_ID.svc.id.goog

Windows‏ (cmd.exe)

gcloud container clusters create CLUSTER_NAME ^
    --enable-secret-manager ^
    --location=LOCATION ^
    --cluster-version=VERSION ^
    --workload-pool=PROJECT_ID.svc.id.goog

{ Autopilot cluster}

כדי להפעיל את התוסף Secret Manager באשכול חדש של Autopilot, מריצים את הפקודה הבאה:

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • VERSION: גרסת GKE הספציפית שרוצים להשתמש בה. מוודאים שהאשכול פועל ב-GKE בגרסה 1.27.14-gke.1042001 ואילך. כדי להגדיר גרסה ספציפית, אפשר לעיין במאמר הגדרת הגרסה וערוץ ההפצה של אשכול חדש של Autopilot.
  • LOCATION: האזור של Compute Engine שבו נמצא האשכול, למשל us-central1.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters create-auto CLUSTER_NAME \
    --enable-secret-manager \
    --cluster-version=VERSION \
    --location=LOCATION

‏Windows (PowerShell)

gcloud container clusters create-auto CLUSTER_NAME `
    --enable-secret-manager `
    --cluster-version=VERSION `
    --location=LOCATION

Windows‏ (cmd.exe)

gcloud container clusters create-auto CLUSTER_NAME ^
    --enable-secret-manager ^
    --cluster-version=VERSION ^
    --location=LOCATION

אחרי שמפעילים את התוסף Secret Manager, אפשר להשתמש במנהל ההתקן של CSI של Secrets Store בנפחי אחסון של Kubernetes באמצעות מנהל ההתקן ושם הספק: secrets-store-gke.csi.k8s.io.

הפעלת התוסף Secret Manager באשכול GKE קיים

כדי להפעיל את התוסף Secret Manager באשכול קיים:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Google Kubernetes Engine.

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. בדף הפרטים של האשכול, בקטע אבטחה, לוחצים על Secret Manager.

  4. בתיבת הדו-שיח עריכת Secret Manager, מסמנים את התיבה הפעלת Secret Manager.

  5. לוחצים על שמירת השינויים.

gcloud

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: השם של האשכול
  • LOCATION: האזור של Compute Engine עבור האשכול, למשל us-central1

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters update CLUSTER_NAME \
    --enable-secret-manager \
    --location=LOCATION \

‏Windows (PowerShell)

gcloud container clusters update CLUSTER_NAME `
    --enable-secret-manager `
    --location=LOCATION `

Windows‏ (cmd.exe)

gcloud container clusters update CLUSTER_NAME ^
    --enable-secret-manager ^
    --location=LOCATION ^

אימות ההתקנה של תוסף Secret Manager

כדי לוודא שהתוסף Secret Manager מותקן באשכול Kubernetes, מריצים את הפקודה הבאה:

  gcloud container clusters describe CLUSTER_NAME --location LOCATION | grep secretManagerConfig -A 4

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: שם האשכול
  • LOCATION: המיקום של האשכול, למשל us-central1

הגדרת רוטציה אוטומטית של סודות

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

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

  • החלפה אוטומטית של סודות היא הגדרה אופציונלית.
  • אפשר להגדיר את התכונה הזו כשיוצרים אשכול חדש או כשמעדכנים אשכול קיים.
  • אפשר להגדיר את התדירות של הסיבוב האוטומטי על ידי ציון של מרווח הסיבוב ויחידת מרווח הסיבוב.
  • סיבוב אוטומטי של סודות נתמך ב-GKE בגרסה 1.32.2-gke.1059000 ואילך.

כדי להגדיר החלפה אוטומטית של סודות, צריך להפעיל את התכונה enable-secret-manager-rotation ולהגדיר את מרווח ההחלפה באמצעות ההגדרה secret-manager-rotation-interval.

הגדרה של רוטציה אוטומטית של סודות באשכול GKE חדש

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

המסוף

{ Autopilot cluster}

  1. נכנסים לדף Create an Autopilot cluster במסוף Google Cloud .

    כניסה לדף Create an Autopilot cluster

  2. בתפריט הניווט, בקטע הגדרות מתקדמות, לוחצים על אבטחה.

  3. מסמנים את תיבת הסימון Enable Secret Manager (הפעלת Secret Manager).

  4. מסמנים את התיבה הגדרת סיבוב אוטומטי.

  5. מציינים את מרווח ההחלפה ואת יחידת מרווח ההחלפה.

  6. ממשיכים להגדיר את האשכול ולוחצים על יצירה.

{ Standard cluster}

  1. נכנסים לדף Create a Kubernetes cluster במסוף Google Cloud .

    מעבר אל יצירת אשכול Kubernetes

  2. בתפריט הניווט, בקטע Cluster, לוחצים על Security.

  3. מסמנים את תיבת הסימון Enable Secret Manager (הפעלת Secret Manager).

  4. מסמנים את התיבה הגדרת סיבוב אוטומטי.

  5. מציינים את מרווח ההחלפה ואת יחידת מרווח ההחלפה.

  6. ממשיכים להגדיר את האשכול ולוחצים על יצירה.

gcloud

{ Autopilot cluster}

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: שם האשכול
  • VERSION: גרסת GKE הספציפית שרוצים להשתמש בה. מוודאים שהאשכול פועל ב-GKE בגרסה 1.27.14-gke.1042001 ואילך. אם ערוץ ההפצה שמוגדר כברירת מחדל לא כולל את הגרסה הזו, צריך להשתמש בדגל --release-channel כדי לבחור ערוץ הפצה שכן כולל אותה.
  • LOCATION: המיקום של האשכול, למשל us-central1
  • ROTATION_INTERVAL: מרווח הרוטציה בשניות. הערך חייב להיות מספר שלם חיובי עם הסיומת s. הערך המינימלי המותר הוא 120s. לדוגמה, כדי להגדיר את המרווח ל-5 דקות, משתמשים ב-300s.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters create CLUSTER_NAME \
    --cluster-version=VERSION \
    --location=LOCATION \
    --enable-secret-manager \
    --enable-secret-manager-rotation \
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

‏Windows (PowerShell)

gcloud container clusters create CLUSTER_NAME `
    --cluster-version=VERSION `
    --location=LOCATION `
    --enable-secret-manager `
    --enable-secret-manager-rotation `
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

Windows‏ (cmd.exe)

gcloud container clusters create CLUSTER_NAME ^
    --cluster-version=VERSION ^
    --location=LOCATION ^
    --enable-secret-manager ^
    --enable-secret-manager-rotation ^
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

{ Standard cluster}

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: שם האשכול
  • LOCATION: המיקום של האשכול, למשל us-central1
  • VERSION: גרסת GKE הספציפית שרוצים להשתמש בה. מוודאים שהאשכול פועל ב-GKE בגרסה 1.27.14-gke.1042001 ואילך. אם ערוץ ההפצה שמוגדר כברירת מחדל לא כולל את הגרסה הזו, צריך להשתמש בדגל --release-channel כדי לבחור ערוץ הפצה שכן כולל אותה.
  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ROTATION_INTERVAL: מרווח הרוטציה בשניות. הערך חייב להיות מספר שלם חיובי עם הסיומת s. הערך המינימלי המותר הוא 120s. לדוגמה, כדי להגדיר את המרווח ל-5 דקות, משתמשים ב-300s.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --cluster-version=VERSION \
    --workload-pool=PROJECT_ID.svc.id.goog \
    --enable-secret-manager \
    --enable-secret-manager-rotation \
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

‏Windows (PowerShell)

gcloud container clusters create CLUSTER_NAME `
    --location=LOCATION `
    --cluster-version=VERSION `
    --workload-pool=PROJECT_ID.svc.id.goog `
    --enable-secret-manager `
    --enable-secret-manager-rotation `
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

Windows‏ (cmd.exe)

gcloud container clusters create CLUSTER_NAME ^
    --location=LOCATION ^
    --cluster-version=VERSION ^
    --workload-pool=PROJECT_ID.svc.id.goog ^
    --enable-secret-manager ^
    --enable-secret-manager-rotation ^
    --secret-manager-rotation-interval=ROTATION_INTERVAL
    

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

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

המסוף

  1. נכנסים לדף Kubernetes clusters במסוף Google Cloud .

    מעבר אל Kubernetes clusters

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. בדף הפרטים של האשכול, לוחצים על עריכה.

  4. בקטע אבטחה, לוחצים על Secret Manager.

  5. בתיבת הדו-שיח עריכת Secret Manager, מסמנים את התיבה הפעלת Secret Manager.

  6. מסמנים את התיבה הגדרת סיבוב אוטומטי.

  7. מציינים את מרווח ההחלפה ואת יחידת מרווח ההחלפה.

  8. לוחצים על שמירת השינויים.

gcloud

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: שם האשכול
  • LOCATION: המיקום של האשכול, למשל us-central1
  • ROTATION_INTERVAL: מרווח הרוטציה בשניות. הערך חייב להיות מספר שלם חיובי עם הסיומת s. הערך המינימלי המותר הוא 120s. לדוגמה, כדי להגדיר את המרווח ל-5 דקות, משתמשים ב-300s.

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters update CLUSTER_NAME \
    --enable-secret-manager \
    --location=LOCATION \
    --enable-secret-manager-rotation \
    --secret-manager-rotation-interval=ROTATION_INTERVAL

‏Windows (PowerShell)

gcloud container clusters update CLUSTER_NAME `
    --enable-secret-manager `
    --location=LOCATION `
    --enable-secret-manager-rotation `
    --secret-manager-rotation-interval=ROTATION_INTERVAL

Windows‏ (cmd.exe)

gcloud container clusters update CLUSTER_NAME ^
    --enable-secret-manager ^
    --location=LOCATION ^
    --enable-secret-manager-rotation ^
    --secret-manager-rotation-interval=ROTATION_INTERVAL

הגדרת אפליקציות לאימות ב-Secret Manager API

ספק Google Secret Manager משתמש בזהות עומס העבודה של ה-Pod שסוד מוצמד אליו כשמתבצע אימות ל-Secret Manager API. כדי לאפשר לאפליקציות שלכם לבצע אימות ל-Secret Manager API באמצעות איחוד זהויות של עומסי עבודה ל-GKE, אתם צריכים:

  • יוצרים Kubernetes ServiceAccount חדש או משתמשים ב-Kubernetes ServiceAccount קיים באותו מרחב שמות כמו ה-Pod שרוצים לצרף אליו את הסוד.

  • יוצרים מדיניות הרשאות בניהול הזהויות והרשאות הגישה (IAM) עבור הסוד ב-Secret Manager.

קבוצות Pod שמשתמשות ב-Kubernetes ServiceAccount שהוגדר מבצעות אימות אוטומטי בתור מזהה החשבון הראשי של IAM שתואם ל-Kubernetes ServiceAccount, כשניגשים אל Secret Manager API.

יצירת חשבון שירות חדש ב-Kubernetes

  1. שומרים את קובץ המניפסט הבא בשם service-account.yaml:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: KSA_NAME
      namespace: NAMESPACE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • KSA_NAME: השם של חשבון השירות החדש ב-Kubernetes
    • NAMESPACE: השם של מרחב השמות ב-Kubernetes עבור ServiceAccount
  2. החלת המניפסט:

    kubectl apply -f service-account.yaml
    
  3. יוצרים מדיניות הרשאה ב-IAM שמפנה אל חשבון השירות החדש של Kubernetes ומעניקים לו הרשאה לגשת לסוד:

    gcloud secrets add-iam-policy-binding SECRET_NAME \
        --role=roles/secretmanager.secretAccessor \
        --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SECRET_NAME: השם של הסוד ב-Secret Manager
    • PROJECT_NUMBER: מספר הפרויקט Google Cloud
    • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שמכיל את אשכול GKE
    • NAMESPACE: השם של מרחב השמות ב-Kubernetes עבור ServiceAccount
    • KSA_NAME: השם של חשבון השירות הקיים ב-Kubernetes

שימוש בחשבון שירות קיים ב-Kubernetes

יוצרים מדיניות הרשאה ב-IAM שמפנה אל Kubernetes ServiceAccount הקיים ומעניקים לו הרשאה לגשת לסוד:

gcloud secrets add-iam-policy-binding SECRET_NAME \
    --role=roles/secretmanager.secretAccessor \
    --member=principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • SECRET_NAME: השם של הסוד ב-Secret Manager
  • PROJECT_NUMBER: מספר הפרויקט Google Cloud
  • PROJECT_ID: מזהה הפרויקט של Google Cloud הפרויקט שמכיל את אשכול GKE
  • NAMESPACE: השם של מרחב השמות ב-Kubernetes עבור ServiceAccount
  • KSA_NAME: השם של חשבון השירות הקיים ב-Kubernetes

הגדרת הסודות להעברה

כדי לציין אילו סודות להוסיף כקבצים ל-Pod של Kubernetes, יוצרים מניפסט SecretProviderClassYAML ומפרטים את הסודות שרוצים להוסיף ואת שם הקובץ שרוצים להוסיף אותם אליו. איך לעשות את זה?

  1. שומרים את קובץ המניפסט הבא בשם app-secrets.yaml:

    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: SECRET_PROVIDER_CLASS_NAME
    spec:
      provider: gke
      parameters:
        secrets: |
          - resourceName: "projects/PROJECT_ID/secrets/SECRET_NAME/versions/SECRET_VERSION"
            path: "FILENAME.txt"
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SECRET_PROVIDER_CLASS_NAME: השם של אובייקט SecretProviderClass.
    • PROJECT_ID: מזהה הפרויקט.
    • SECRET_NAME: שם הסוד.
    • SECRET_VERSION: גרסת הסוד. גרסת הסוד צריכה להיות באותו אזור כמו האשכול.
    • FILENAME.txt: שם הקובץ שבו יותקן ערך הסוד. אפשר ליצור כמה קבצים באמצעות המשתנים resourceName ו-path.

    בסוד אזורי, resourceName הוא הנתיב המלא למשאב הסוד שכולל את המיקום של הסוד האזורי. לדוגמה, ‎"projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_NAME/versions/SECRET_VERSION"‎

  2. החלת המניפסט:

    kubectl apply -f app-secrets.yaml -n NAMESPACE
    

    מחליפים את NAMESPACE בשם של מרחב השמות של Kubernetes עבור ServiceAccount.

  3. מוודאים שאובייקט SecretProviderClass נוצר:

    kubectl get SecretProviderClasses -n NAMESPACE
    

הגדרת נפח אחסון שבו הסודות יותקנו

  1. שומרים את ההגדרה הבאה בתור my-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: POD_NAME
      namespace: NAMESPACE
    spec:
      serviceAccountName: KSA_NAME
      containers:
      - image: IMAGE_NAME
        imagePullPolicy: IfNotPresent
        name: POD_NAME
        resources:
          requests:
            cpu: 100m
        stdin: true
        stdinOnce: true
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        tty: true
        volumeMounts:
          - mountPath: "/var/secrets"
            name: mysecret
      volumes:
      - name: mysecret
        csi:
          driver: secrets-store-gke.csi.k8s.io
          readOnly: true
          volumeAttributes:
            secretProviderClass: SECRET_PROVIDER_CLASS_NAME
    

    מחליפים את מה שכתוב בשדות הבאים:

    • POD_NAME: השם של ה-Pod ב-Kubernetes שבו הסוד מותקן
    • NAMESPACE: השם של מרחב השמות ב-Kubernetes עבור ServiceAccount
    • KSA_NAME: חשבון השירות של Kubernetes שהגדרתם בשלב הגדרת אפליקציות לאימות ל-Secret Manager API
    • IMAGE_NAME: שם קובץ האימג' של הקונטיינר
    • SECRET_PROVIDER_CLASS_NAME: השם של אובייקט SecretProviderClass
  2. באשכולות Standard בלבד, מוסיפים את השורה הבאה לשדה template.spec כדי למקם את ה-Pods במאגרי צמתים שמשתמשים באיחוד זהויות של עומסי עבודה ל-GKE.

    באשכולות Autopilot, אפשר לדלג על השלב הזה כי כל צומת משתמש באיחוד זהויות של עומסי עבודה ל-GKE, ולכן האשכול דוחה את nodeSelector הזה.

    spec:
      nodeSelector:
        iam.gke.io/gke-metadata-server-enabled: "true"
    
  3. מחילים את ההגדרה על האשכול.

    kubectl apply -f my-pod.yaml
    

בשלב הזה מתבצעת טעינה של נפח mysecret ב-/var/secrets באמצעות מנהל התקן ה-CSI ‏(secrets-store-gke.csi.k8s.io). הנפח הזה מפנה לאובייקט SecretProviderClass שפועל כספק.

מעבר מ-Secrets Store CSI Driver הקיים

אם אתם עוברים לתוסף Secret Manager מההתקנה הקיימת של Secrets Store CSI Driver, אתם צריכים לעדכן את מניפסט ה-Pod באופן הבא:

  1. מעדכנים את השם של SecretProviderClass ואת provider כמו שמתואר במניפסט הבא:

    apiVersion: secrets-store.csi.x-k8s.io/v1
    kind: SecretProviderClass
    metadata:
      name: app-secrets-gke
    spec:
      provider: gke
      parameters:
        secrets: |
          - resourceName: "projects/<project_id>/secrets/<secret_name>/versions/<secret_version>"
            path: "good1.txt"
    
  2. מעדכנים את driver ואת secretProviderClass עבור נפח האחסון של Kubernetes כמו שמתואר במניפסט הבא:

    volumes:
      - name: mysecret
        csi:
          driver: secrets-store-gke.csi.k8s.io
          readOnly: true
          volumeAttributes:
            secretProviderClass: "app-secrets-gke"
    

השבתת התוסף Secret Manager

כדי להשבית את התוסף Secret Manager באשכול קיים מסוג Standard או באשכול במצב Autopilot, מריצים את הפקודה הבאה:

המסוף

  1. במסוף Google Cloud , נכנסים לדף Google Kubernetes Engine.

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. בדף הפרטים של האשכול, בקטע אבטחה, לוחצים על Secret Manager.

  4. בתיבת הדו-שיח עריכת Secret Manager, מבטלים את הסימון בתיבת הסימון הפעלת Secret Manager.

  5. לוחצים על שמירת השינויים.

gcloud

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

  • CLUSTER_NAME: השם של האשכול
  • REGION: האזור ב-Compute Engine של האשכול, למשל us-central1

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud container clusters update CLUSTER_NAME \
    --no-enable-secret-manager \
    --region=REGION \

‏Windows (PowerShell)

gcloud container clusters update CLUSTER_NAME `
    --no-enable-secret-manager `
    --region=REGION `

Windows‏ (cmd.exe)

gcloud container clusters update CLUSTER_NAME ^
    --no-enable-secret-manager ^
    --region=REGION ^