יכול להיות שהשירות שלכם יצטרך מפתחות API, סיסמאות, אישורים או מידע רגיש אחר בשביל התלות שלו. ב-Cloud Run, Google ממליצה לאחסן את המידע הרגיש הזה בסוד שיוצרים ב-Secret Manager.
אפשר להפוך סוד לזמין למאגרי התגים באחת מהדרכים הבאות:
- כשמציבים כל סוד כנפח, Cloud Run הופך את הסוד לזמין לקונטיינר כקובץ. כשקוראים נפח, Cloud Run תמיד מאחזר את ערך הסוד מ-Secret Manager כדי להשתמש בערך עם הגרסה האחרונה. השיטה הזו מתאימה גם לרוטציה של סודות.
- העברת סוד באמצעות משתני סביבה.
משתני הסביבה נפתרים בזמן הפעלת המופע, ולכן אם משתמשים בשיטה הזו, Google ממליצה להצמיד את הסוד לגרסה מסוימת במקום להשתמש ב-
latestכגרסה.
מידע נוסף זמין במאמר בנושא שיטות מומלצות לשימוש ב-Secret Manager.
איך מתבצעת בדיקה של סודות בזמן הפריסה ובזמן הריצה
במהלך פריסת השירות, Cloud Run בודק את כל הסודות שבהם אתם משתמשים. הבדיקה מוודאת שלחשבון השירות שמריץ את הקונטיינר יש הרשאה לגשת לסודות האלה.
במהלך זמן הריצה, כשהמופעים מופעלים:
- אם הסוד הוא משתנה סביבה, Cloud Run מאחזר את הערך של הסוד לפני הפעלת המופע. אם תהליך אחזור הסוד נכשל, המופע לא יופעל.
- אם מטעינים את הסוד כנפח, Cloud Run לא מבצע בדיקות במהלך הפעלת המופע. עם זאת, במהלך זמן הריצה, אם סוד לא נגיש, הניסיונות לקרוא את אמצעי האחסון המצורף נכשלים.
בעלות על נפח
הבעלות על נפח סודי ב-Cloud Run משתנה בהתאם לסביבת ההפעלה ולסוג הפריסה.
כשמציבים נפח סודי, הזהות שבבעלותה הקבצים והספריות שונה בהתאם לסביבת ההפעלה של עומס העבודה, ובהתאם לכך אם הפריסה מורכבת ממכולה אחת או מכמה מכולות.
בסביבת ההפעלה מהדור הראשון שבה אתם פורסים קונטיינר יחיד, הזהות שבה אתם משתמשים עבור הקונטיינר היא הבעלים של נפח הסוד. בכל המקרים האחרים, הבעלים של עוצמת הקול הוא root. למשל:
- סביבת ביצוע מהדור הראשון שבה אתם פורסים כמה קונטיינרים
- הסביבה של הדור השני
לפני שמתחילים
-
Enable the Secret Manager API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - משתמשים בסוד קיים או יוצרים סוד ב-Secret Manager, כמו שמתואר במאמר יצירת סוד.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להגדרת סודות, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
-
אדמין של Cloud Run (
roles/run.admin) בשירות Cloud Run -
משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בזהות השירות
כדי לאפשר ל-Cloud Run לגשת לסוד, לזהות השירות צריכה להיות ההרשאה הבאה:
- Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor)
הוראות להוספת חשבון המשתמש של השירות לתפקיד Secret Accessor ב-Secret Manager מופיעות במאמר ניהול הגישה לסודות.
רשימת ההרשאות והתפקידים ב-IAM שמשויכים ל-Cloud Run מופיעה במאמרים תפקידי IAM ב-Cloud Run והרשאות IAM ב-Cloud Run. אם שירות Cloud Run שלכם מתקשר עםGoogle Cloud ממשקי API, כמו ספריות לקוח ב-Cloud, כדאי לעיין במדריך להגדרת זהות שירות. מידע נוסף על מתן תפקידים זמין במאמרים הרשאות פריסה וניהול גישה.
הפיכת סוד לנגיש ל-Cloud Run
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
אפשר להפוך סוד לנגיש לשירות באמצעות מסוף Google Cloud, Google Cloud CLI או קובץ YAML כשמפעילים שירות חדש או מעדכנים שירות קיים ומפעילים עדכון. Google Cloud לוחצים על הכרטיסייה הרצויה:
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
לוחצים על Deploy container (פריסת מאגר) כדי להגדיר שירות חדש. ממלאים את הדף של הגדרות השירות הראשוניות, ואז לוחצים על Container(s), Volumes, Networking, Security (מאגרי נתונים, אמצעי אחסון, רשת, אבטחה) כדי להרחיב את דף הגדרות השירות.
אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של גרסה חדשה.
פועלים לפי השלבים להרכבת הסוד כנפח או לחשיפת הסוד כמשתנה סביבה.
כדי לחשוף את הסוד כמשתנה סביבה:
- לוחצים על הכרטיסייה Container(s) (מאגרי תגים).
- בכרטיסייה Variables and Secrets (משתנים וסודות), לוחצים על Reference a secret (הפניה לסוד).
- בשדה Name 1, מזינים את השם של משתנה הסביבה.
- ברשימה Secret, בוחרים את הסוד שרוצים להשתמש בו.
- ברשימה גרסה 1, בוחרים את גרסת הסוד שאליה רוצים להפנות.
- לוחצים על סיום.
- לוחצים על יצירה או על פריסה.
כדי לטעון סוד כנפח:
- לוחצים על הכרטיסייה Volumes (אמצעי אחסון) ובוחרים באפשרות Add volume (הוספת אמצעי אחסון).
- ברשימה Volume type (סוג נפח), בוחרים באפשרות Secret (סוד).
- בשדה Volume name, מזינים שם או מאשרים את שם ברירת המחדל.
- ברשימה Secret, בוחרים את הסוד שרוצים להשתמש בו.
- בשדה נתיב 1, מזינים את שם הקובץ להרכבה.
- ברשימה Version 1, בוחרים את הגרסה של הסוד שאליה רוצים להפנות. כברירת מחדל, הגרסה האחרונה נבחרת. אם רוצים, אפשר לבחור גרסה ספציפית.
- לוחצים על סיום.
- עוברים לכרטיסייה Container(s) (מאגרים) כדי לטעון את הסוד למאגר.
- בכרטיסייה Volume mounts, לוחצים על Mount volume.
- ברשימה Name 1, בוחרים את שם הכרך.
- בשדה Mount path 1, מזינים את נתיב ההרכבה של הסוד הזה. זוהי הספרייה שבה ממוקמות כל הגרסאות של הסוד.
- לוחצים על סיום.
- לוחצים על יצירה או על פריסה.
gcloud
כדי להעניק לשירות גישה לסוד, מזינים אחת מהפקודות הבאות.
כדי לטעון את הסוד כנפח כשפורסים שירות:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של השירות. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG -
PATH: נתיב ההרכבה של אמצעי האחסון ושם הקובץ של הסוד. הנתיב חייב להתחיל בקו נטוי מוביל – לדוגמה:/etc/secrets/dbconfig/password, כאשר/etc/secrets/dbconfig/הוא נתיב ההרכבה של אמצעי האחסון, ו-passwordהוא שם הקובץ של הסוד. -
SECRET_NAME: שם הסוד באותו פרויקט, לדוגמהmysecret. -
VERSION: גרסת הסוד. משתמשים ב-latestכדי להוריד את הגרסה העדכנית, או במספר – לדוגמה,2.
-
כדי לחשוף את הסוד כמשתנה סביבה כשפורסים שירות:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של השירות. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. -
ENV_VAR_NAME: השם של משתנה הסביבה שרוצים להשתמש בו עם הסוד. -
SECRET_NAME: שם הסוד באותו פרויקט, לדוגמהmysecret. -
VERSION: גרסת הסוד. משתמשים ב-latestכדי להוריד את הגרסה העדכנית, או במספר – לדוגמה,2.
-
אפשר לעדכן כמה סודות בו-זמנית. כדי לעשות את זה, מפרידים בין אפשרויות ההגדרה של כל סוד באמצעות פסיק. הפקודה הבאה מעדכנת סוד אחד שמוטמע כנפח וסוד אחר שמוצג כמשתנה סביבתי.
כדי לעדכן סודות קיימים, מזינים את הפקודה הבאה:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION
כדי לנקות סודות קיימים ולהפוך סוד חדש לנגיש לשירות, משתמשים בדגל
--set-secrets:gcloud run services update SERVICE \ --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION"
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
בקטע
env, מעדכנים את ENV_VAR, VERSION ו/או SECRET_NAME לפי הצורך. אם יש לכם כמה סודות שמוצמדים כמשתני סביבה, יהיו לכם כמה עותקים של המאפיינים האלה.apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_NAME
אם הסודות מוצמדים כנתיבי קבצים, מעדכנים את MOUNT_PATH, VOLUME_NAME, VERSION, FILENAME או SECRET_NAME לפי הצורך. אם יש לכם כמה סודות שמוצמדים כנתיבי קבצים, יהיו לכם כמה עותקים של המאפיינים האלה.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_NAME
הערה: אפשר להגדיר את
VOLUME_NAMEלכל שם.מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - REVISION עם שם חדש של גרסה או למחוק אותה (אם היא קיימת). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
- מתחיל ב-
SERVICE- - הוא מכיל רק אותיות קטנות, מספרים וגם
- - לא מסתיים ב-
- - לא חורג מ-63 תווים
- מתחיל ב-
מחליפים את השירות בהגדרה החדשה שלו באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
יוצרים סוד וגרסת סוד.
יוצרים חשבון שירות ומעניקים לו גישה לסוד:
אפשר לגשת לסודות ב-Secret Manager מ-Cloud Run כנתיבי קבצים מוצמדים או כמשתני סביבה.
לסודות שמוצמדים כנתיבי קבצים, מציינים את המשאב של Secret Manager בפרמטר
volumes. הערךnameתואם לרשומה בפרמטרvolume_mounts:כדי להפנות לסודות שמוצגים כמשתני סביבה, צריך להפנות למשאב Secret Manager בפרמטר
env:
הפניה לסודות מפרויקטים אחרים
כדי להפנות לסוד מפרויקט אחר, צריך לוודא שלחשבון השירות של הפרויקט יש גישה לסוד.
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
לוחצים על Deploy container (פריסת מאגר) כדי להגדיר שירות חדש. ממלאים את הדף של הגדרות השירות הראשוניות, ואז לוחצים על Container(s), Volumes, Networking, Security (מאגרי נתונים, אמצעי אחסון, רשת, אבטחה) כדי להרחיב את דף הגדרות השירות.
אם אתם מגדירים שירות קיים, לוחצים על השירות ואז על עריכה ופריסה של גרסה חדשה.
פועלים לפי השלבים להרכבת הסוד כנפח או לחשיפת הסוד כמשתנה סביבה.
כדי לחשוף את הסוד כמשתנה סביבה:
- לוחצים על הכרטיסייה Container(s) (מאגרי תגים).
- בכרטיסייה Variables and Secrets (משתנים וסודות), לוחצים על Reference a secret (הפניה לסוד).
- בשדה Name 1, מזינים את השם של משתנה הסביבה.
- ברשימה Secret, לוחצים על Enter secret manually (הזנת סוד באופן ידני).
מזינים את מזהה המשאב של הסוד בפורמט הבא:
projects/PROJECT_NUMBER/secrets/SECRET_NAMEמחליפים את מה שכתוב בשדות הבאים:
PROJECT_NUMBER במספר הפרויקט. Google Cloud הוראות מפורטות לאיתור מספר הפרויקט זמינות במאמר יצירה וניהול של פרויקטים.
SECRET_NAME: השם של הסוד ב-Secret Manager.
ברשימה גרסה 1, בוחרים את גרסת הסוד שאליה רוצים להפנות.
לוחצים על סיום.
לוחצים על יצירה או על פריסה.
כדי לטעון סוד כנפח:
- לוחצים על הכרטיסייה Volumes (אמצעי אחסון) ובוחרים באפשרות Add volume (הוספת אמצעי אחסון).
- ברשימה Volume type (סוג נפח), בוחרים באפשרות Secret (סוד).
- בשדה Volume name, מזינים שם או מאשרים את שם ברירת המחדל.
- ברשימה Secret, לוחצים על Enter secret manually (הזנת סוד באופן ידני).
מזינים את מזהה המשאב של הסוד בפורמט הבא:
projects/PROJECT_NUMBER/secrets/SECRET_NAMEמחליפים את מה שכתוב בשדות הבאים:
PROJECT_NUMBER במספר הפרויקט. Google Cloud הוראות מפורטות לאיתור מספר הפרויקט זמינות במאמר יצירה וניהול של פרויקטים.
SECRET_NAME: השם של הסוד ב-Secret Manager.
בשדה נתיב 1, מזינים את שם הקובץ להרכבה.
ברשימה Version 1, בוחרים את הגרסה של הסוד שאליה רוצים להפנות. כברירת מחדל, הגרסה האחרונה נבחרת. אם רוצים, אפשר לבחור גרסה ספציפית.
לוחצים על סיום.
עוברים לכרטיסייה Container(s) (מאגרים) כדי לטעון את הסוד למאגר.
בכרטיסייה Volume mounts, לוחצים על Mount volume.
ברשימה Name 1, בוחרים את שם הכרך.
בשדה Mount path 1, מזינים את נתיב ההרכבה של הסוד הזה. זוהי הספרייה שבה ממוקמות כל הגרסאות של הסוד.
לוחצים על סיום.
לוחצים על יצירה או על פריסה.
gcloud
כדי לטעון סוד כנפח כשפורסים שירות:
gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של השירות. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. -
PATH: נתיב ההרכבה של אמצעי האחסון ושם הקובץ של הסוד. הנתיב חייב להתחיל בקו נטוי מוביל – לדוגמה:/etc/secrets/dbconfig/password, כאשר/etc/secrets/dbconfig/הוא נתיב ההרכבה של אמצעי האחסון, ו-passwordהוא שם הקובץ של הסוד. -
PROJECT_NUMBERעם מספר הפרויקט שבו נוצר הסוד. -
SECRET_NAME: שם הסוד, לדוגמה,mysecret. VERSIONעם הגרסה של ה-Secret. משתמשים ב-latestכדי להוריד את הגרסה העדכנית, או במספר – לדוגמה,2.
-
YAML
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
בגלל מגבלות שקשורות לתאימות של API, צריך לאחסן את המיקומים הסודיים בהערה.
לסודות שנחשפים כמשתני סביבה:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_LOOKUP_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של השירות. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG -
ENV_VAR: השם של משתנה הסביבה. -
PROJECT_NUMBER: מספר הפרויקט שבו נוצר הסוד. -
SECRET_NAME: שם הסוד, לדוגמה,mysecret. -
VERSION: גרסת הסוד. משתמשים ב-latestכדי להוריד את הגרסה העדכנית, או במספר – לדוגמה,2. -
SECRET_LOOKUP_NAME: כל שם עם תחביר תקין של שם סוד – לדוגמה,my-secret. יכול להיות שזה יהיה אותו שם כמוSECRET_NAME.
-
לסודות שמוצמדים כנתיבי קבצים:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_LOOKUP_NAME
מחליפים את מה שכתוב בשדות הבאים:
-
SERVICE: השם של השירות. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. -
PATH: נתיב ההרכבה של אמצעי האחסון ושם הקובץ של הסוד. הנתיב חייב להתחיל בקו נטוי מוביל – לדוגמה:/etc/secrets/dbconfig/password, כאשר/etc/secrets/dbconfig/הוא נתיב ההרכבה של אמצעי האחסון, ו-passwordהוא שם הקובץ של הסוד. -
PROJECT_NUMBER: מספר הפרויקט שבו נוצר הסוד. -
SECRET_NAME: שם הסוד, לדוגמה,mysecret. -
VERSION: גרסת הסוד. משתמשים ב-latestכדי להוריד את הגרסה העדכנית, או במספר – לדוגמה,2. -
SECRET_LOOKUP_NAME: כל שם עם תחביר תקין של שם סוד – לדוגמה,my-secret. יכול להיות שזה יהיה אותו שם כמוSECRET_NAME. -
VOLUME_NAME: כל שם – לדוגמה,my-volume. יכול להיות שזה יהיה אותו שם כמוSECRET_NAME.
-
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
מוסיפים את השורות הבאות למשאבgoogle_cloud_run_v2_service בקובץ התצורה של Terraform:לסודות שנחשפים כמשתני סביבה:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE_NAME"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
env {
name = "SECRET_NAME"
value_source {
secret_key_ref {
secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
version = "VERSION"
}
}
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_NAME: השם של המשימה ב-Cloud Run.
- REGION: Google Cloud האזור. לדוגמה:
europe-west1. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - SECRET_NAME: שם הסוד, לדוגמה
mysecret. - PROJECT_ID: מזהה הפרויקט שבו נוצר הסוד.
- VERSION: גרסת הסוד. משתמשים ב-
latestלגרסה העדכנית ביותר, או במספר – לדוגמה,2.
לסודות שמוצמדים כנתיבי קבצים:
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE_NAME"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
secret {
secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
}
}
}
}
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE_NAME: השם של המשימה ב-Cloud Run.
- REGION עם האזור Google Cloud . לדוגמה:
europe-west1. - IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG - VOLUME_NAME: כל שם – למשל,
my-volume. יכול להיות שזה יהיה אותו שם כמוSECRET_NAME - MOUNT_PATH: נתיב ההרכבה של אמצעי האחסון ושם הקובץ של הסוד. הנתיב חייב להתחיל בקו נטוי מוביל – לדוגמה:
/etc/secrets/dbconfig/password, כאשר/etc/secrets/dbconfig/הוא נתיב ההרכבה של אמצעי האחסון, ו-passwordהוא שם הקובץ של הסוד. - PROJECT_ID: מזהה הפרויקט שבו נוצר הסוד.
- SECRET_NAME: שם הסוד, לדוגמה
mysecret.
הצגת הגדרות הסודות
כדי לראות את הגדרות הסודות הנוכחיות בשירות Cloud Run:
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
לוחצים על השירות שרוצים לראות את הפרטים שלו כדי לפתוח את הדף פרטי השירות.
לוחצים על הכרטיסייה עדכונים.
בחלונית הפרטים שמשמאל, הגדרת הסודות מופיעה בכרטיסייה Container.
gcloud
משתמשים בפקודה הבאה:
gcloud run services describe SERVICE
מאתרים את הגדרת הסודות בתצורה שמוחזרת.
הסרת סודות משירות
אפשר להסיר סודות משירות באמצעות מסוף Google Cloud או ה-CLI של gcloud:
המסוף
במסוף Google Cloud , נכנסים לדף Services של Cloud Run:
בוחרים את השירות מהרשימה ולוחצים על עריכה ופריסה של גרסה חדשה.
לוחצים על הכרטיסייה Container(s) (מאגרי תגים).
כדי למחוק סודות שצורפו כנפח, בוחרים בכרטיסייה Volume mounts, מעבירים את מצביע העכבר מעל הסוד שרוצים להסיר ולוחצים על Delete.
כדי למחוק סודות שנחשפו כמשתנה סביבתי, בוחרים בכרטיסייה Variables and secrets, מעבירים את מצביע העכבר מעל הסוד שרוצים להסיר ולוחצים על Delete.
לוחצים על פריסה.
gcloud
אפשר להסיר את כל הסודות משירות או לציין סוד אחד או יותר להסרה:
כדי להסיר את כל הסודות, מריצים את הפקודה הבאה:
gcloud run deploy SERVICE --image IMAGE_URL \ --clear-secretsמחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
כדי לציין רשימה של סודות להסרה, משתמשים בדגל
--remove-secrets. הפקודה הבאה מסירה סוד אחד שצורף כנפח וסוד אחר שנחשף כמשתנה סביבה:gcloud run deploy SERVICE --image IMAGE_URL \ --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATHמחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של השירות.
- IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה,
us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. כתובת ה-URL היא בפורמטLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG. - ENV_VAR_NAME: השם של משתנה הסביבה.
SECRET_FILE_PATH: הנתיב המלא של הסוד. לדוגמה,
/mnt/secrets/primary/latest, כאשר/mnt/secrets/primary/הוא נתיב ההרכבה ו-latestהוא נתיב הסוד. אפשר גם לציין את נתיבי ההרכבה והסוד בנפרד:--set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION
שימוש בסודות בקוד
דוגמאות לגישה לסודות בקוד כמשתני סביבה מופיעות במדריך בנושא אימות משתמשי קצה, במיוחד בקטע טיפול בהגדרות רגישות באמצעות Secret Manager.
מגבלות
בקטעים הבאים מתוארות המגבלות שחלות על העלאת סודות.
נתיבים אסורים
- ב-Cloud Run אי אפשר לטעון סודות בנתיבים
/dev,/procו-/sysאו בספריות המשנה שלהם. - אם אתם מטמיעים סודות ב-
/tmpואתם משתמשים בסביבת הפעלה מהדור הראשון, כדאי לעיין בבעיה הידועה בנושא הטמעת סודות ב-/tmp. - ב-Cloud Run אי אפשר לטעון כמה סודות באותה נתיב, כי אי אפשר לטעון שני כרכים באותו מיקום.
סודות אזוריים
Cloud Run לא תומך בסודות אזוריים.
שינוי של ספרייה
אם הסוד מוטען כנפח ב-Cloud Run, והספרייה האחרונה בנתיב הטעינה של הנפח כבר קיימת, לא תהיה גישה לקבצים או לתיקיות בספרייה הקיימת.
לדוגמה, אם סוד בשם my-secret מותקן בנתיב /etc/app_data, כל התוכן בספרייה app_data יידרס, והקובץ היחיד שיוצג הוא /etc/app_data/my-secret.
כדי להימנע משכתוב של קבצים בספרייה קיימת, יוצרים ספרייה חדשה להרכבת הסוד, למשל /etc/app_data/secrets, כך שנתיב ההרכבה של הסוד יהיה /etc/app_data/secrets/my-secret.