מתן גישה ל-Config Sync למאגר תמונות OCI או למאגר Helm

בדף הזה מוסבר איך לבצע אימות של סנכרון תצורות למאגר תמונות OCI או למאגר Helm. כדי שסנכרון תצורות יוכל לקרוא את ההגדרות, להחיל אותן על האשכולות ולשמור אותן מסונכרנות, הוא צריך הרשאת קריאה בלבד למקור האמת.

בחירה של שיטת אימות

שיטת האימות שבה משתמשים תלויה במה שנתמך בסוג המקור שלכם.

בטבלה הבאה מפורטות שיטות האימות שאפשר להשתמש בהן עם סנכרון תצורות:

‏Method מקורות נתמכים תיאור מגבלות
ללא אימות Git, ‏ OCI, ‏ Helm לא נדרשת הגדרה נוספת. האפשרות הזו פועלת רק אם מקור האמת שלכם הוא ציבורי.
זוג מפתחות SSH Git רוב ספקי Git תומכים בשיטה הזו. נדרש ניהול מפתחות. אין תמיכה ב-OCI או ב-Helm.
token ‫Git, ‏ OCI, ‏ Helm רוב ספקי Git תומכים בשיטה הזו. אפשרות חלופית טובה אם הארגון שלכם לא מאפשר שימוש במפתחות SSH. תמיכה בשם משתמש ובסיסמה עבור OCI ו-Helm. נדרש ניהול טוקנים. יכול להיות שתוקף הטוקנים יפוג.
חשבון שירות של Kubernetes OCI, ‏ Helm משתמש ב-IAM כדי להעניק ל-Artifact Registry גישה ישירה לחשבון שירות של Kubernetes. נדרשת הפעלה של איחוד זהויות של עומסי עבודה ל-GKE באשכול. אין תמיכה ב-Git.
חשבון שירות של Google Git השימוש ב-IAM מאפשר להימנע מאחסון פרטי כניסה בסודות של Kubernetes. מומלץ ל-Secure Source Manager ול-Cloud Source Repositories. נדרשת הפעלה של איחוד זהויות של עומסי עבודה ל-GKE באשכול. נדרשת הגדרה לפני ואחרי התקנת סנכרון תצורות באשכולות. אין תמיכה במאגרי קוד שמארחים מחוץ ל-Secure Source Manager או ל-Cloud Source Repositories.
GitHub App Git שילוב ישיר עם GitHub. מאפשר הרשאות פרטניות. האפשרות הזו נתמכת רק במאגרים שמארחים ב-GitHub.

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

  • יכול להיות שלא תהיה תמיכה ב-cookiefile: אצל כל ספקי Git. אין תמיכה ב-OCI או ב-Helm.
  • חשבון השירות של Compute Engine שמוגדר כברירת מחדל (gcenode): לא מומלץ כי השיטה הזו פועלת רק אם איחוד זהויות של עומסי עבודה ל-GKE מושבת. נתמך ב-Git, ב-OCI וב-Helm.
  • חשבון שירות של Google ל-Helm ול-OCI: נתמך, אבל לא מומלץ כי שיטת חשבון השירות של Kubernetes דורשת פחות הגדרות.

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

לפני שמעניקים ל-סנכרון תצורות הרשאת קריאה בלבד למקור האמת, צריך לבצע את המשימות הבאות:

מתן גישה לתמונה של OCI

בקטע הזה מוסבר איך להעניק ל-סנכרון תצורות גישת קריאה בלבד לתמונות OCI באמצעות שיטת אימות נתמכת.

כדי לבצע אימות ל-Config Sync, צריך לאחסן תמונות OCI ב-Artifact Registry.

שימוש בטוקן

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

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

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

  • SECRET_NAME: שם לסוד.
  • USERNAME: שם המשתמש שלכם במאגר OCI.
  • PASSWORD: הסיסמה של מאגר ה-OCI.

כשמתקינים את סנכרון תצורות, משתמשים בטוקן (token) כסוג האימות. צריך גם לציין את שם הסוד בשדה spec.oci.secretRef.name.

שימוש בחשבון שירות של Kubernetes

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

כדי לתת ל-סנכרון תצורות גישת קריאה בלבד לתמונת OCI באמצעות חשבון שירות של Kubernetes, מבצעים את השלבים הבאים:

  1. כדי לקבל את ההרשאות שנדרשות ליצירת קשירת מדיניות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של חשבון שירות (roles/iam.serviceAccountAdmin) בחשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

    יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

  2. מקצים את תפקיד הקורא (roles/artifactregistry.reader) ב-IAM ל-Artifact Registry לחשבון השירות ב-Kubernetes שכולל את מאגר איחוד זהויות של עומסי עבודה ל-GKE:

    • כדאי להעניק הרשאה ברמת הפרויקט אם אותן הרשאות חלות על כל המאגרים בפרויקט.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.s3ns.svc.id.goog[config-management-system/KSA_NAME]"
      
    • כדאי להעניק הרשאה ספציפית למאגר כשרוצים שלחשבונות שירות יהיו רמות גישה שונות לכל מאגר בפרויקט.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.s3ns.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

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

    • PROJECT_ID: מזהה הפרויקט.
    • FLEET_HOST_PROJECT_ID: אם אתם משתמשים באיחוד זהויות של עומסי עבודה ל-GKE, הערך הזה זהה למזהה הפרויקט. אם אתם משתמשים ב-Workload Identity Federation ב-GKE, הערך הזה הוא מזהה הפרויקט של הצי שאליו רשום האשכול שלכם.
    • REPOSITORY: מזהה התמונה.
    • LOCATION: המיקום האזורי או הרב-אזורי של המאגר.

כשמתקינים את סנכרון תצורות, משתמשים בחשבון שירות של Kubernetes ‏ (k8sserviceaccount) כסוג האימות.

שימוש בחשבון שירות שמוגדר כברירת מחדל ב-Compute Engine

אם לא הפעלתם איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, תוכלו להשתמש בחשבון שירות של Compute Engine כדי לבצע אימות.

כדי להשתמש בחשבון שירות שמוגדר כברירת מחדל ב-Compute Engine כדי להעניק ל-סנכרון תצורות הרשאת קריאה בלבד למאגר, צריך להעניק לחשבון השירות של Compute Engine הרשאת קריאה ל-Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com \
      --role=roles/artifactregistry.reader

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

  • PROJECT_ID: מזהה הפרויקט
  • PROJECT_NUMBER: מספר הפרויקט.

כשמתקינים את סנכרון תצורות, משתמשים בחשבון שירות של Compute Engine‏ (gcenode) כסוג האימות.

הענקת גישה למאגר Helm

בקטע הזה מוסבר איך להעניק ל-סנכרון תצורות גישת קריאה בלבד לתרשימי Helm שמאוחסנים במאגר.

שימוש בטוקן

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

kubectl create secret generic SECRET_NAME \
      --namespace=config-management-system \
      --from-literal=username=USERNAME \
      --from-literal=password=PASSWORD

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

  • SECRET_NAME: שם לסוד.
  • USERNAME: שם המשתמש שלכם במאגר Helm.
  • PASSWORD: הסיסמה של מאגר Helm.

כשמתקינים את סנכרון תצורות, משתמשים בטוקן (token) כסוג האימות. צריך גם לציין את שם הסוד בשדה spec.helm.secretRef.name.

שימוש בחשבון שירות של Kubernetes

כדי לבצע אימות באמצעות חשבון שירות של Kubernetes, צריך לעמוד בדרישות הבאות:

כדי להשתמש בחשבון שירות של Kubernetes כדי להעניק ל-סנכרון תצורות גישת קריאה בלבד למאגר Helm, מבצעים את השלבים הבאים:

  1. כדי לקבל את ההרשאות שנדרשות ליצירת קשירת מדיניות, צריך לבקש מהאדמין להקצות לכם ב-IAM את התפקיד אדמין של חשבון שירות (roles/iam.serviceAccountAdmin) בחשבון השירות. כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

    יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

  2. כדי להשתמש בחשבון שירות של Kubernetes כדי להעניק ל-סנכרון תצורות גישת קריאה בלבד למאגר Helm, צריך להקצות את תפקיד ה-IAM ‏Artifact Registry Reader ‏ (roles/artifactregistry.reader) לחשבון השירות של Kubernetes שכולל את מאגר איחוד זהויות של עומסי עבודה ל-GKE:

    • כדאי להעניק הרשאה ברמת הפרויקט אם אותן הרשאות חלות על כל המאגרים בפרויקט.

      gcloud projects add-iam-policy-binding PROJECT_ID \
           --role=roles/artifactregistry.reader \
           --member="serviceAccount:FLEET_HOST_PROJECT_ID.s3ns.svc.id.goog[config-management-system/KSA_NAME]"
      
    • כדאי להעניק הרשאה ספציפית למאגר כשרוצים שלחשבונות שירות יהיו רמות גישה שונות לכל מאגר בפרויקט.

      gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
          --location=LOCATION \
          --role=roles/artifactregistry.reader \
          --member="serviceAccount:FLEET_HOST_PROJECT_ID.s3ns.svc.id.goog[config-management-system/KSA_NAME]" \
          --project=PROJECT_ID
      

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

    • PROJECT_ID: מזהה הפרויקט.
    • FLEET_HOST_PROJECT_ID: אם אתם משתמשים באיחוד זהויות של עומסי עבודה ל-GKE, הערך הזה זהה למזהה הפרויקט. אם אתם משתמשים ב-Workload Identity Federation ב-GKE, הערך הזה הוא מזהה הפרויקט של הצי שאליו רשום האשכול שלכם.
    • REPOSITORY: מזהה התמונה.
    • LOCATION: המיקום האזורי או הרב-אזורי של המאגר.

כשמתקינים את סנכרון תצורות, משתמשים בחשבון שירות של Kubernetes ‏ (k8sserviceaccount) כסוג האימות.

שימוש בחשבון שירות שמוגדר כברירת מחדל ב-Compute Engine

אם לא הפעלתם איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE, תוכלו להשתמש בחשבון שירות של Compute Engine כדי לבצע אימות.

כדי להשתמש בחשבון שירות שמוגדר כברירת מחדל ב-Compute Engine כדי להעניק ל-סנכרון תצורות הרשאת קריאה בלבד למאגר, צריך להעניק לחשבון השירות של Compute Engine הרשאת קריאה ל-Artifact Registry:

gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com \
      --role=roles/artifactregistry.reader

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

  • PROJECT_ID: מזהה הפרויקט
  • PROJECT_NUMBER: מספר הפרויקט.

כשמתקינים את סנכרון תצורות, משתמשים בחשבון שירות של Compute Engine‏ (gcenode) כסוג האימות.

המאמרים הבאים