מדריך להגדרה ידנית

אפשר להשתמש בתהליך ההקצאה האוטומטית כדי לפרוס את שרת התיוג ב-Cloud Run בכמה לחיצות. אם רוצים להקצות את שרת התיוג בסביבות אחרות, אפשר לעשות זאת באופן ידני. שרת התיוג הוא שרת Node.js בתוך תמונת Docker.

כדי להקצות ידנית את שרת התיוג, צריך להקצות בנפרד את אשכול התיוג בצד השרת (SST) ושרת תצוגה מקדימה. אשכול SST הוא נקודת הכניסה לכל הבקשות לשרת התיוג, והוא יטפל בבקשות כפי שמתואר במאמר מבוא לתיוג בצד השרת. שרת התצוגה המקדימה נדרש לתצוגה מקדימה של קונטיינר.

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

תרשים של שרתי תיוג וזרימת נתונים של שרת לתצוגה מקדימה

איור 1: דיאגרמה של שרתי התיוג וזרימת הנתונים של שרת התצוגה המקדימה.

במדריך הזה נסביר איך:

  • הצגת כל ההגדרות הזמינות לקובץ האימג' של Docker.
  • (אופציונלי) הכללת פרטי כניסה ל-BigQuery
  • הקצאה ידנית של שרת תצוגה מקדימה באמצעות תמונת SST Docker.
  • הקצאה ידנית של אשכול SST באמצעות תמונת SST Docker.
  • יש לוודא ששרת התצוגה המקדימה ואשכול ה-SST מוגדרים כראוי.
  • חשוב להקפיד שהגרסה של שרת התיוג תהיה מעודכנת אחרי הקצאת השרת.

על מנת להריץ את פקודות Docker במדריך זה, תחילה צריך להתקין את Docker במחשב.

הצגת כל ההגדרות הזמינות לקובץ האימג' של Docker

תמונת ה-Docker של שרת התיוג נמצאת בכתובת ה-URL הזו:

gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable

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

כדי לראות את כל ההגדרות הזמינות, מריצים את הפקודה הבאה באמצעות כלי שורת הפקודה שלdocker:

docker run gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable server_bin.js --help

(אופציונלי) כוללים פרטי כניסה ל-Google Cloud

כדי להשתמש ב-API של BigQuery או של Firestore מחוץ ל-Google Cloud, צריך לספק פרטי כניסה לחשבון השירות שיש לו הרשאה לגשת למשאבים האלה.

  1. יש לפעול לפי המדריך הזה כדי ליצור חשבון שירות עם BigQuery Data Editor עם הרשאת גישה BigQueryאו על התפקיד Cloud Datastore User לצורך גישה ל-Firestore ולייצוא של פרטי הכניסה שלו ל-JSON באמצעות שם הקובץ local_service_account_key.json.
  2. טוענים את פרטי הכניסה ל-JSON באמצעי אחסון שנגיש לתמונה. ב-docker run אפשר לציין את -v local_service_account_key.json:/app/service_account_key.json כדי לטעון את פרטי הכניסה שבתמונה.
  3. מכוונים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS לפרטי הכניסה.
  4. אפשר לציין את מזהה הפרויקט ב-Google Cloud במשתנה הסביבה GOOGLE_CLOUD_PROJECT, כדי לאפשר לשרת התיוג לבחור את הפרויקט באופן מרומז.
  5. מפעילים את השרת. הפקודה הבאה מפעילה את שרת התיוג עם פרטי הכניסה כלולים:

    docker run -v local_service_account_key.json:/app/service_account_key.json \
    -p 8080:8080 \
    -e GOOGLE_APPLICATION_CREDENTIALS='/app/service_account_key.json' \
    -e GOOGLE_CLOUD_PROJECT='<your project id>' \
    -e CONTAINER_CONFIG='<config string>' \
    gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable
    

יכולות להיות דרכים שונות לטעון את פרטי הכניסה, בהתאם למערכת שבה שרת התיוג נפרס. לדוגמה, Kubernetes ו-Docker Swarm מספקים מדריכים לניהול סודות. תוכלו למצוא מידע נוסף במדריך של המערכת המתאימה.

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

הקצאה ידנית של שרת תצוגה מקדימה

שרת התצוגה המקדימה מאפשר לך להציג תצוגה מקדימה של מאגר התגים בצד השרת. כדי להריץ את שרת התצוגה המקדימה, מריצים את תמונת ה-Docker עם משתני הסביבה הבאים שמועברים לסביבת Docker.

הגדרות נדרשות

  • CONTAINER_CONFIG - מחרוזת ההגדרה של מאגר התגים בצד השרת. ב-Tag Manager, עוברים לסביבת העבודה של מאגר התגים בצד השרת ולוחצים על מזהה מאגר התגים בפינה הימנית העליונה של הדף. לוחצים על הקצאה ידנית של שרת תיוג כדי למצוא את הערך של Container Config.

  • RUN_AS_PREVIEW_SERVER - מגדירים את הערך הזה ל-true כדי להקצות את השרת כשרת תצוגה מקדימה.

דוגמה לשימוש בכלי שורת הפקודה Docker

כדי להקצות שרת תצוגה מקדימה באופן מקומי, מריצים את הפקודה הבאה:

docker run -p 8080:8080 -e CONTAINER_CONFIG='<config string>' -e RUN_AS_PREVIEW_SERVER=true gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable

אמורה להופיע תגובה 200 מבקשה אל http://localhost:8080/healthz. אפשר גם להשתמש במשתנה הסביבה PORT כדי לשנות את היציאה.

שיטות מומלצות

  • עליך לפרוס רק שרת תצוגה מקדימה אחד. אל תגדירו התאמה לעומס (autoscaling) מעבר למכונה אחת.
  • לאחר שהגדרת שרת תצוגה מקדימה באמצעות Docker, הגדר כתובת אתר מסוג HTTPS שתצביע על שרת התצוגה המקדימה. ההרשאה הזו נדרשת להגדרת אשכול ה-SST.
  • הזמן הקצוב לתפוגה של מאזן העומסים או CDN צריך להיות ארוך מ-20 שניות, אחרת מצב התצוגה המקדימה לא יפעל בצורה תקינה.

הקצאה ידנית של אשכול תיוג בצד השרת

אשכול ה-SST משמש כנקודת הכניסה, משרת בקשות תצוגה מקדימה לשרת התצוגה המקדימה ומטפל בכל שאר הבקשות כפי שמתואר במבוא לתיוג בצד השרת. כדי להקצות אשכול SST בכל סביבה שתומכת ב-Docker, השתמשו בהגדרות הנדרשות הבאות עם תמונת Docker של שרת התיוג.

הגדרות נדרשות

  • CONTAINER_CONFIG - מחרוזת ההגדרה של מאגר התגים בצד השרת. ב-Tag Manager, עוברים לסביבת העבודה של מאגר התגים בצד השרת ולוחצים על מזהה מאגר התגים בפינה הימנית העליונה של הדף. לוחצים על הקצאה ידנית של שרת תיוג כדי למצוא את הערך של Container Config.

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

דוגמה לשימוש בכלי שורת הפקודה Docker

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

docker run -p 8080:8080 -e CONTAINER_CONFIG='<config string>' -e PREVIEW_SERVER_URL='<HTTPS preview server url>' gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable

אמורה להופיע תגובה 200 מבקשה אל http://localhost:8080/healthz. אפשר להשתמש במשתנה הסביבה PORT כדי לשנות את היציאה.

שיטות מומלצות

  • אפשר להקצות שרתי תיוג בצד השרת כשרת יחיד או כאשכול. מומלץ להקצות אותו כאשכול כדי לשפר את הזמינות, המדרגיות והביצועים. שימו לב שכשמגדירים את התצורה כאשכול, צריך להגדיר לכל מופע של שרת את אותם משתני סביבה CONTAINER_CONFIG ו-PREVIEW_SERVER_URL.
  • הקפידו להפנות את הפריסה של אשכול ה-SST לתת-דומיין חדש באתר שנפרד מתת-הדומיין שמשמש את האפליקציה. לדוגמה, אם האפליקציה מציגה תעבורת נתונים באינטרנט בכתובת example.com, צריך להשתמש בתת-דומיין כמו analytics.example.com בתור שרת התיוג.
  • לאחר שהגדרת אשכול SST באמצעות Docker, הגדר כתובת URL של HTTPS שתצביע על אשכול ה-SST.
  • חשוב להקפיד להפעיל מחדש את השרתים מדי פעם כדי לוודא שיש להם את עדכוני הקוד האחרונים ל-SST. אם לא תעשו זאת, ייתכן שהפונקציונליות של תכונות SST חדשות לא תפעל. אחת הדרכים לדעת מתי השרת צריך להפעיל מחדש היא להגדיר את בדיקות מצב הפעילות (liveness), מוסברות בפירוט בהמשך. כמו כן, שימו לב שכל העדכונים בקונטיינר של השרת עדיין יחולו ללא הפעלה מחדש.
  • משתמשים בנקודת הקצה הקיימת של /healthz (למשל https://analytics.example.com/healthz) בשרתי התיוג כדי להגדיר בדיקות של פעילות חיים. תגובה לא בריאה מציינת שצריך להפעיל מחדש את השרת.
  • הקונטיינר ב-Docker כולל פקודת ברירת מחדל לבדיקת תקינות – HEALTHCHECK CMD ["/nodejs/bin/node", "/app/health_checker_bin.js"] – ששולחת מדי פעם שאילתה לנקודת הקצה /healthz. אם תלויים בבדיקת התקינות של Docker, אפשר לשנות את ההגדרות לפי ההוראות של Docker.
  • אם שרת התצוגה המקדימה ושרת התיוג נמצאים באותו מקור, מארחים את שרת התצוגה המקדימה בנתיב שונה מזה של שרת התיוג. צריך לציין את השדה PREVIEW_SERVER_URL, כולל הנתיב.
  • השרתים שהוקצו יכולים לכלול vCPU אחד לכל היותר. לא נעשה שימוש במעבדי vCPU נוספים והם משפיעים על ההתאמה לעומס (autoscaling) באופן שלילי.

אימות

הגדרת כתובת ה-URL של מאגר התגים בצד השרת

ב-Tag Manager, עוברים למאגר התגים בצד השרת. בקטע Admin > Container Settings (ניהול > הגדרות קונטיינר), מזינים את כתובת ה-URL של שרת התיוג בשדה Server Container URL (כתובת URL של מאגר תגים בצד השרת) ולוחצים על Save (שמירה).

אימות באמצעות מצב תצוגה מקדימה

בסביבת העבודה של Tag Manager, מציגים בתצוגה מקדימה את מאגר התגים בלחיצה על Preview (תצוגה מקדימה) ובודקים אם דף התצוגה המקדימה נטען. בכרטיסייה אחרת בדפדפן, עוברים לנתיב כלשהו בכתובת ה-URL של מאגר התגים בצד השרת. אם בדף התצוגה המקדימה מוצגת הבקשה שנשלחה, הכול מוגדר כמו שצריך.

אם מיפיתם כמה תת-דומיינים לשרת תיוג יחיד ואתם רוצים להציג תצוגה מקדימה של כל תת-דומיין, עליכם להוסיף עוד כתובות URL של מאגרי תגים בצד השרת בקטע Admin > Container Settings (ניהול > הגדרות קונטיינר). אם מזינים כמה כתובות URL, כל הנתיבים של כתובות ה-URL חייבים להיות זהים (מחרוזת המידע שמופיעה אחרי שם הדומיין). לדוגמה, אפשר להציג תצוגה מקדימה ב-example.com/abc וב-example2.com/abc, אבל אי אפשר להציג תצוגה מקדימה ב-example.com/abc וב-example2.com/def. אם הוספתם מספר כתובות URL, יופיע סמל ליד הלחצן Preview שמאפשר לבחור את כתובת ה-URL שבה רוצים להציג תצוגה מקדימה.

עדכון הגרסה של שרת התיוג

התמונה של gtm-cloud-image מכילה את Node.js ואת הספריות הנחוצות לפעולתו של שרת התיוג. תמונת ה-Docker מתעדכנת מדי פעם לצורך תיקוני אבטחה ותכונות חדשות. אנחנו ממליצים לפחות לעדכן את שרת התיוג בכל מהדורה ראשית (למשל, שדרוג מגרסה 1.x.x ל-2.x.x).

כדי לעדכן את קובץ האימג' ב-Docker:

  1. אחזור של גרסת התמונה הנוכחית בכתובת gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable.
  2. פריסת השרת עם אותן ההגדרות בפריסה הקודמת.
  3. עדכון שרת תצוגה מקדימה יחידה וכל שרתי התיוג באשכול.
  4. משביתים שרתים ישנים.

כדי לוודא שהעדכון בוצע בהצלחה:

  1. במאגר התגים בצד השרת, לוחצים על הלחצן Preview כדי להתחיל סשן חדש של ניפוי באגים ולשלוח בקשה בכרטיסייה נפרדת.
  2. בסיכום, בוחרים בכרטיסייה Console (מסוף) ומוודאים שאין הודעות שבהן התבקשתם לעדכן את שרת התיוג.

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