במהלך הפיתוח, ניתן להריץ ולבדוק את תמונת המכולה באופן מקומי, לפני הפריסה. אתה יכול להשתמשקוד ענן אוֹDocker מותקן באופן מקומי להריץ ולבדוק באופן מקומי, כולל הרצה מקומית עם גישה ל Google Cloud שירותים.
לפני שמתחילים
אם זו הפעם הראשונה שאתם מנסים להפעיל את התהליך באופן מקומי, יכול להיות שאין לכם את כל ההרשאות שנדרשות כדי לגשת לתמונה ממאגר התמונות של הקונטיינר שנתמך שבו אתם משתמשים.
כדי לקבל גישה, צריך לעיין במסמכי העזרה של מאגר התמונות הנתמך. אתם יכולים להגדיר את Docker כך שתהיה לו גישה ל-Artifact Registry באמצעות כלי העזר של פרטי הכניסה של ה-CLI של gcloud:
gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION בשם האזור של מאגר הקונטיינרים, לדוגמה, us-west2.
בדיקה מקומית
ניתן לבצע בדיקות מקומיות באמצעות Docker, Docker עם Google Cloud Access, אמולטור Cloud Code או ממשק שורת הפקודה של גוגל קלאוד. בחר את הכרטיסייה המתאימה לקבלת הוראות.
Docker
כדי לבדוק את קובץ האימג' של הקונטיינר שלך באופן מקומי באמצעות Docker:
משתמשים בפקודת Docker:
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL
מחליפים את
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.משתנה הסביבה
PORTמציין את היציאה שבה האפליקציה תשתמש כדי להאזין לבקשות HTTP או HTTPS. זוהי דרישה של הסכם זמן הריצה של מארח הקונטיינר. בדוגמה הזו, אנחנו משתמשים ביציאה 8080.פותחים את http://localhost:9090 בדפדפן.
אם אתם חדשים בעבודה עם קונטיינרים, כדאי לעיין במדריך תחילת העבודה עם Docker. למידע נוסף על פקודות Docker, עיינו בתיעוד של Docker.
Docker עם גישה ל-Google Cloud
אם אתם משתמשים בספריות לקוח של Google Cloud כדי לשלב את האפליקציה שלכם עם שירותים של Google Cloud , ועדיין לא הגנתם על השירותים האלה כדי לשלוט בגישה חיצונית, אתם יכולים להגדיר את הקונטיינר המקומי כך שיבצע אימות מול שירותים של Google Cloud באמצעות Application Default Credentials.
כדי להפעיל באופן מקומי:
הדגלים הבאים של Docker run מזריקים את פרטי הכניסה וההגדרות מהמערכת המקומית לקונטיינר המקומי:
- משתמשים בדגל
--volume(-v) כדי להחדיר את קובץ פרטי הכניסה למאגר (בהנחה שכבר הגדרתם את משתנה הסביבהGOOGLE_APPLICATION_CREDENTIALSבמחשב):-v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
- השתמש בדגל
--environment(-e) כדי להגדיר את המשתנהGOOGLE_APPLICATION_CREDENTIALSבתוך המכולה:-e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
- משתמשים בדגל
לחלופין, השתמשו בפקודת Docker
runהמוגדרת במלואה:PORT=8080 && docker run \ -p 9090:${PORT} \ -e PORT=${PORT} \ -e K_SERVICE=dev \ -e K_CONFIGURATION=dev \ -e K_REVISION=dev-00001 \ -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \ -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \ IMAGE_URL
שימו לב שהנתיב
המוצג בדוגמה לעיל הוא מיקום סביר להניח בו את האישורים שלך בתוך המכולה./tmp/keys/FILE_NAME.json
אבל אפשר להשתמש גם במיקומים אחרים בספרייה. הדרישה החשובה ביותר היא שמשתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSיהיה זהה למיקום הטעינה של bind mount בתוך הקונטיינר.חשוב גם לזכור שבשירותים מסוימים Google Cloud , כדאי להשתמש בהגדרה חלופית כדי לבודד את פתרון הבעיות המקומי מהביצועים ומהנתונים של סביבת הייצור.
אמולטור קוד ענן
הפלאגין Cloud Code ל-VS Code ול-JetBrains IDEs מאפשר לכם להריץ ולנפות באגים בקובץ אימג' של קונטיינר באופן מקומי באמולטור של Cloud Run בתוך סביבת הפיתוח המשולבת (IDE). האמולטור מאפשר לכם להגדיר סביבה שמייצגת את השירות שלכם שפועל ב-Cloud Run.
אפשר להגדיר מאפיינים כמו הקצאת מעבד (CPU) והקצאת זיכרון, לציין משתני סביבה ולהגדיר חיבורים למסד נתונים של Cloud SQL.
- מתקינים את Cloud Code ל-VS Code או ל-JetBrains IDE.
- פועלים לפי ההוראות לפיתוח ולניפוי באגים באופן מקומי בסביבת הפיתוח המשולבת.
- VS Code: פיתוח וניפוי באגים באופן מקומי
- IntelliJ: פיתוח וניפוי באגים באופן מקומי
CLI של gcloud
Google Cloud CLI כולל סביבת פיתוח מקומית להדמיה של Cloud Run, שיכולה ליצור קונטיינר ממקור, להריץ את הקונטיינר במחשב המקומי וליצור מחדש את הקונטיינר באופן אוטומטי כשמתבצעים שינויים בקוד המקור.
כדי להפעיל את סביבת הפיתוח המקומית:
עוברים לספרייה שמכילה את קוד המקור של השירות.
מפעילים את הפקודה:
אם יש Dockerfile בספרייה המקומית, הוא משמש ליצירת הקונטיינר. אם לא קיים קובץ Dockerfile, הקונטיינר נוצר באמצעות Buildpacks של Google Cloud.gcloud beta code dev
כדי לראות את השירות פועל, נכנסים לכתובת http://localhost:8080/ בדפדפן.
אם ציינתם יציאה מותאמת אישית באמצעות האפשרות --local-port, אל תשכחו לפתוח את הדפדפן ליציאה הזו.
כדי לעצור את השרת המקומי:
- מערכת הפעלה Mac ו-Linux: Control-C
- Windows: Control-Break
התאם אישית את תצורת השירות
אתם יכולים להתאים אישית את התצורה של Cloud Run של השירות שפועל באופן מקומי באמצעות קובץ YAML. פורמט ה-YAML זהה לפורמט שאפשר להשתמש בו כדי לפרוס שירות Cloud Run, אבל הוא תומך רק בחלק מההגדרות של שירות Cloud Run. gcloud beta
code dev מחפש ומשתמש בכל קובץ שמסתיים ב-*.service.dev.yaml בספרייה הנוכחית. אם לא נמצאו קבצים כאלה, המערכת תשתמש בכל קובץ שמסתיים ב-*.service.yaml.
אפשר לקבוע את ההגדרות הבאות לפיתוח מקומי:
השדה container image לא נדרש לפיתוח מקומי, כי התמונה נוצרת ומסופקת לשירות כשהפקודה מופעלת.
אפשר להשתמש בקובץ service.dev.yaml לדוגמה הבא לפיתוח מקומי:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: my-service-name spec: template: spec: containers: - env: - name: FOO value: bar
בדיקה באמצעות פרטי כניסה
כדי לתת אישור לשימוש במכולה Google Cloud services, עליך לתת למכולה אישורי גישה.
כדי לתת לקונטיינר גישה לפרטי כניסה באמצעות החשבון שלכם, צריך להתחבר באמצעות gcloud ולהשתמש בדגל
--application-default-credential:gcloud auth application-default login gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential
כדי לתת לאפליקציה פרטי כניסה כחשבון שירות, משתמשים בדגל
--service-account:gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL
ודא שהקוד שלך פועל באופן מקומי
כשבודקים באופן מקומי ב-Cloud Run, אפשר לוודא בקוד שהקונטיינר פועל באופן מקומי על ידי בדיקת משתנה הסביבה K_REVISION, ש-Cloud Run מספק לכל הקונטיינרים.
Docker
כדי לוודא שאתם מריצים את הקוד באופן מקומי ב-Google Cloud CLI, אתם יכולים לנסות לשלוח שאילתה למשתנה הסביבה K_REVISION, אבל מכיוון שהוא לא הוגדר, לא יופיע ערך.
Docker עם גישה ל-Google Cloud
אם השתמשתם בערכים המדויקים מהקטע שלמעלה בשלב 3 כדי לוודא שאתם מריצים את הקוד באופן מקומי ב-Google Cloud CLI, אתם יכולים לשלוח שאילתה למשתנה הסביבה K_REVISION ולחפש את הערך dev-00001 כדי לוודא שהקוד פועל באופן מקומי.
אמולטור קוד ענן
כדי לוודא שהקוד פועל באופן מקומי ב-Cloud Code, אפשר לשלוח שאילתה למשתנה הסביבה K_REVISION ולחפש את הערך local כדי לוודא שהוא פועל באופן מקומי.
CLI של gcloud
כדי לוודא שהקוד מורץ באופן מקומי ב-Google Cloud CLI, אפשר לשלוח שאילתה למשתנה הסביבה K_REVISION ולחפש ערך שמתחיל ב-dev-. אם נמצא ערך כזה, סימן שהקוד מורץ באופן מקומי.
המאמרים הבאים
- כדי ללמוד כיצד לפתור בעיות מקומיות של אפליקציית Cloud Run פגומה, עיין במדריך פתרון בעיות מקומי של שירות Cloud Run.
- כדי ללמוד איך לפרוס את הקונטיינרים שבניתם, פועלים לפי ההוראות במאמר פריסת שירותים.