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

במהלך הפיתוח, ניתן להריץ ולבדוק את תמונת המכולה באופן מקומי, לפני הפריסה. אתה יכול להשתמשקוד ענן אוֹ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:

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

אפשר להגדיר מאפיינים כמו הקצאת מעבד (CPU) והקצאת זיכרון, לציין משתני סביבה ולהגדיר חיבורים למסד נתונים של 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, הקונטיינר נוצר באמצעות Buildpacks של Google Cloud.

כדי לראות את השירות פועל, נכנסים לכתובת 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-. אם נמצא ערך כזה, סימן שהקוד מורץ באופן מקומי.

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