בדיקה מקומית של שירות Cloud Run

במהלך הפיתוח, אתם יכולים להריץ ולבדוק את קובץ אימג' של קונטיינר באופן מקומי, לפני הפריסה. אתם יכולים להשתמש ב-Cloud Code או ב-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 או Google Cloud CLI. בוחרים את הכרטיסייה המתאימה להוראות.

Docker

כדי לבדוק את קובץ האימג' של הקונטיינר באופן מקומי באמצעות Docker:

  1. משתמשים בפקודת 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.

  2. פותחים את http://localhost:9090 בדפדפן.

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

Docker עם גישה ל-Google Cloud

אם אתם משתמשים בספריות לקוח של Google Cloud כדי לשלב את האפליקציה שלכם עם שירותים של Google Cloud , ועדיין לא הגנתם על השירותים האלה כדי לשלוט בגישה חיצונית, אתם יכולים להגדיר את הקונטיינר המקומי כך שיבצע אימות מול Google Cloud שירותים באמצעות Application Default Credentials.

כדי להריץ באופן מקומי:

  1. הוראות להגדרת מפתח לחשבון שירות

  2. הדגלים הבאים של Docker run מזריקים את פרטי הכניסה וההגדרות מהמערכת המקומית לקונטיינר המקומי:

    1. משתמשים בדגל --volume (-v) כדי להחדיר את קובץ פרטי הכניסה למאגר (בהנחה שכבר הגדרתם את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS במחשב):
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. משתמשים בדגל --environment (-e) כדי להגדיר את המשתנה GOOGLE_APPLICATION_CREDENTIALS בתוך מאגר התגים:
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. אפשר גם להשתמש בפקודה המוגדרת במלואה של 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

הפלאגין Cloud Code ל-VS Code ול-IDE של JetBrains מאפשר לכם להריץ ולנפות באגים בקובץ אימג' של קונטיינר באופן מקומי באמולטור של Cloud Run בתוך סביבת הפיתוח המשולבת (IDE). האמולטור מאפשר לכם להגדיר סביבה שמייצגת את השירות שלכם שפועל ב-Cloud Run.

אפשר להגדיר מאפיינים כמו הקצאת מעבד וזיכרון, לציין משתני סביבה ולהגדיר חיבורים למסד נתונים של Cloud SQL.

  1. מתקינים את Cloud Code ל-VS Code או ל-JetBrains IDE.
  2. פועלים לפי ההוראות לפיתוח ולניפוי באגים באופן מקומי בסביבת הפיתוח המשולבת.
  3. VS Code: פיתוח וניפוי באגים באופן מקומי
  4. IntelliJ: פיתוח וניפוי באגים באופן מקומי

‫CLI של gcloud

‫Google Cloud CLI כולל סביבת פיתוח מקומית להדמיה של Cloud Run, שיכולה ליצור קונטיינר ממקור, להריץ את הקונטיינר במחשב המקומי וליצור מחדש את הקונטיינר באופן אוטומטי כשמתבצעים שינויים בקוד המקור.

כדי להפעיל את סביבת הפיתוח המקומית:

  1. עוברים לספרייה שמכילה את קוד המקור של השירות.

  2. מפעילים את הפקודה:

    gcloud beta code dev
    אם יש Dockerfile בספרייה המקומית, הוא ישמש ליצירת הקונטיינר. אם אין Dockerfile, הקונטיינר נוצר באמצעות Google Cloud's buildpacks.

כדי לראות את השירות פועל, נכנסים לכתובת http://localhost:8080/ בדפדפן. אם ציינתם יציאה מותאמת אישית באמצעות האפשרות --local-port, אל תשכחו לפתוח את הדפדפן ליציאה הזו.

כדי לעצור את השרת המקומי:

  • ‫Mac OS ו-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 , צריך לתת למאגר פרטי כניסה לגישה.

  • כדי לתת לקונטיינר גישה לפרטי כניסה באמצעות החשבון שלכם, מתחברים באמצעות 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

כדי לוודא שהקוד פועל באופן מקומי ב-Cloud Code, אפשר לשלוח שאילתה למשתנה הסביבה K_REVISION ולחפש את הערך local כדי לוודא שהוא פועל באופן מקומי.

‫CLI של gcloud

כדי לוודא שהקוד מורץ באופן מקומי ב-Google Cloud CLI, אפשר לשלוח שאילתה למשתנה הסביבה K_REVISION ולחפש ערך שמתחיל ב-dev-. אם נמצא ערך כזה, סימן שהקוד מורץ באופן מקומי.

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