התחברות מ-Compute Engine

בדף הזה מוסבר איך להשתמש בלקוח sqlcmd, שמותקן במכונה של Compute Engine, כדי להתחבר ל-Cloud SQL.

אפשר להשתמש בכתובת IP פרטית, בכתובת IP ציבורית, בשרת proxy ל-Cloud SQL Auth או בקובץ אימג' של Docker של שרת proxy ל-Cloud SQL Auth.

הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה ב-Compute Engine שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מ-Compute Engine.

לפני שמתחילים

במשימה הזו לא מוסבר איך להגדיר את המכונה ב-Compute Engine. אם אתם צריכים עזרה ביצירה ובהגדרה של מכונה של Compute Engine, תוכלו לעיין במאמרי העזרה של Compute Engine.

כתובת IP פרטית

כדי להתחבר ל-Cloud SQL ממופע של Compute Engine באמצעות כתובת IP פרטית, צריך להגדיר גישה לשירותים פרטיים בסביבה שלכם, ולהגדיר את מופע Cloud SQL לשימוש בכתובת IP פרטית. המופע של Compute Engine צריך להיות באותו אזור כמו המופע של Cloud SQL, וברשת שהוגדרה לחיבור פרטי. מידע נוסף

1. הגדרת המכונה לשימוש בכתובת IP פרטית

פועלים לפי ההוראות שבמאמר הגדרת קישוריות של כתובת IP פרטית.

2. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.

צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:

אם מופעלת במכונה של Compute Engine תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במסמכי התיעוד של CentOS.

3. מתקינים את לקוח sqlcmd במכונה של Compute Engine, אם הוא עדיין לא מותקן.

4. מתחברים ללקוח sqlcmd.

sqlcmd -S CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

אפשר למצוא את כתובת ה-IP הפרטית בדף המכונות של Cloud SQL או באמצעות הפעלת הפקודה gcloud הבאה:

gcloud sql instances list

כתובת IP ציבורית

כדי להתחבר באמצעות כתובת IP ציבורית:

1. מוסיפים כתובת IP סטטית מסוג IPv4 למכונת Compute Engine, אם עדיין אין לה כתובת כזו.

אי אפשר להתחבר ל-Compute Engine באמצעות IPv6. מידע על הוספת כתובת IP סטטית זמין במאמר שמירת כתובת IP חיצונית סטטית חדשה במסמכי התיעוד של Compute Engine.

2. מאשרים את כתובת ה-IP הסטטית של מכונת Compute Engine כרשת שיכולה להתחבר למכונת Cloud SQL.

מידע נוסף זמין במאמר הגדרת גישה לחיבורי IP ציבוריים.

3. פותחים חיבור לטרמינל של Cloud Shell למכונת Compute Engine.

צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:

אם מופעלת במכונה של Compute Engine תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במסמכי התיעוד של CentOS.

4. מתקינים את לקוח sqlcmd במכונה של Compute Engine, אם הוא עדיין לא מותקן.

5. מתחברים ללקוח sqlcmd.

sqlcmd -S CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

אפשר למצוא את כתובת ה-IP הציבורית בדף המופעים של Cloud SQL או על ידי הפעלת הפקודה הבאה של gcloud:

gcloud sql instances list

דוגמה לחיבור באמצעות SSL מופיעה במאמר בנושא חיבור באמצעות SSL.

6. מופיעה הנחיה של sqlcmd.

שרת proxy ל-Cloud SQL Auth

כדי להתחבר באמצעות שרת proxy ל-Cloud SQL Auth מ-Compute Engine:

1. מפעילים את Cloud SQL Admin API.

תפקידים שנדרשים להפעלת ממשקי API

כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

להפעלת ה-API

2. יוצרים חשבון שירות.

  1. נכנסים לדף Service accounts במסוף Google Cloud .

    כניסה לדף Service accounts

  2. בוחרים את הפרויקט שמכיל את מופע Cloud SQL.
  3. לוחצים על יצירת חשבון שירות.
  4. בשדה Service account name, מזינים שם תיאורי לחשבון השירות.
  5. משנים את מזהה חשבון השירות לערך ייחודי וקל לזיהוי, ואז לוחצים על יצירה והמשך.
  6. לוחצים על השדה Select a role (בחירת תפקיד) ובוחרים באחד מהתפקידים הבאים:
    • Cloud SQL > Cloud SQL Client
    • Cloud SQL > Cloud SQL Editor
    • Cloud SQL > Cloud SQL Admin
  7. לוחצים על Done כדי לסיים ליצור את חשבון השירות.
  8. לוחצים על תפריט הפעולות של חשבון השירות החדש ובוחרים באפשרות ניהול מפתחות.
  9. לוחצים על התפריט הנפתח Add key ואז על Create new key.
  10. מוודאים שסוג המפתח הוא JSON ולוחצים על Create.

    קובץ המפתח הפרטי יורד למחשב שלכם. אפשר להעביר אותו למיקום אחר. חשוב לשמור על אבטחת קובץ המפתח.

אם מכונת Compute Engine נמצאת בפרויקט אחר ממכונת Cloud SQL, צריך לוודא שלחשבון השירות שלה יש את ההרשאות המתאימות בפרויקט שמכיל את מכונת Cloud SQL:

  1. נכנסים לרשימת המכונות של Compute Engine במסוף Google Cloud .

    כניסה לרשימת המכונות של Compute Engine

  2. אם צריך, בוחרים את הפרויקט שמשויך למופע של Compute Engine.
  3. בוחרים את מופע Compute Engine כדי להציג את המאפיינים שלו.
  4. במאפיינים של מכונת Compute Engine, מעתיקים את השם של חשבון השירות.
  5. נכנסים לדף IAM & Admin Projects במסוף Google Cloud .

    כניסה לדף Projects ב-IAM & Admin

  6. בוחרים את הפרויקט שמכיל את מופע Cloud SQL.
  7. מחפשים את השם של חשבון השירות.
  8. אם חשבון השירות כבר קיים ויש לו תפקיד שכולל את ההרשאה cloudsql.instances.connect, אפשר להמשיך לשלב 4.

    התפקידים Cloud SQL Client, Cloud SQL Editor ו-Cloud SQL Admin מספקים את ההרשאה הנדרשת, וכך גם תפקידי הפרויקט מדור קודם Editor ו-Owner.

  9. אחרת, לוחצים על הוספה כדי להוסיף את חשבון השירות.
  10. בתיבת הדו-שיח Add principals (הוספת חשבונות), מציינים את השם של חשבון השירות ובוחרים תפקיד שכולל את ההרשאה cloudsql.instances.connect (כל תפקיד מוגדר מראש של Cloud SQL מלבד Viewer יתאים).

    אפשר גם להשתמש בתפקיד הבסיסי 'עריכה' על ידי בחירה באפשרות פרויקט > עריכה, אבל התפקיד הזה כולל הרשאות בכל Google Cloud.

    אם אתם לא רואים את התפקידים האלה, יכול להיות שלמשתמש Google Cloud אין את ההרשאהresourcemanager.projects.setIamPolicy. כדי לבדוק את ההרשאות שלכם, נכנסים לדף IAM במסוף Google Cloud ומחפשים את מזהה המשתמש שלכם.

  11. לוחצים על הוספה.

    חשבון השירות יופיע ברשימה עם התפקיד שצוין.

3. פותחים חיבור לטרמינל למכונה של Compute Engine.

צריך לפעול לפי ההוראות המתאימות, בהתאם למערכת ההפעלה של המופע:

אם מופעלת במכונה של Compute Engine תמונה ציבורית של RHEL או CentOS, יכול להיות ש-SELinux יחסום את חיבור ה-Proxy. במקרה כזה, צריך להגדיר את התכונה SELinux כדי לאפשר את החיבור.

מידע נוסף על SELinux ל-RHEL זמין במאמרי העזרה של RHEL. מידע נוסף על SELinux ל-CentOS מופיע במסמכי התיעוד של CentOS.

4. מתקינים את לקוח sqlcmd במכונה של Compute Engine, אם הוא עדיין לא מותקן.

5. מתקינים את Cloud SQL Auth Proxy במכונה של Compute Engine.

לפני שמתחילים, צריך לקבוע את הארכיטקטורה של המכונה.

אם מריצים את הפקודה ב-Linux או ב-Mac, אפשר למצוא את המידע הזה באמצעות הפקודה הבאה:

  uname -a
  

‏Linux‏ 64 סיביות

  1. מורידים את שרת ה-proxy ל-Cloud SQL Auth:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.22.1/cloud-sql-proxy.linux.amd64
  2. הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
    chmod +x cloud-sql-proxy

‏Linux‏ 32 סיביות

  1. מורידים את שרת ה-proxy ל-Cloud SQL Auth:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.22.1/cloud-sql-proxy.linux.386
  2. אם הפקודה curl לא נמצאה, מריצים את הפקודה sudo apt install curl וחוזרים על פקודת ההורדה.
  3. הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
    chmod +x cloud-sql-proxy

‏Windows‏ 64 סיביות

לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.22.1/cloud-sql-proxy.x64.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.

‏Windows‏ 32 סיביות

לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.22.1/cloud-sql-proxy.x86.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.

קובץ אימג' של Docker לשרת proxy ל-Cloud SQL Auth

לשרת ה-proxy ל-Cloud SQL Auth יש תמונות קונטיינר שונות, כמו distroless, alpine ו-buster. קובץ האימג' של קונטיינר ברירת המחדל של שרת proxy ל-Cloud SQL Auth משתמש ב-distroless, שלא מכיל מעטפת. אם אתם צריכים מעטפת או כלים קשורים, אתם יכולים להוריד תמונה שמבוססת על alpine או על buster. מידע נוסף זמין במאמר תמונות קונטיינר של Cloud SQL Auth Proxy.

אפשר למשוך את התמונה העדכנית ביותר למחשב המקומי באמצעות Docker באמצעות הפקודה הבאה:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.22.1

מערכת הפעלה אחרת

במערכות הפעלה אחרות שלא נכללות כאן, אפשר לקמפל את Cloud SQL Auth Proxy מהמקור.

6. מפעילים את שרת ה-proxy ל-Cloud SQL Auth.

אפשר להפעיל את שרת ה-proxy ל-Cloud SQL Auth באמצעות שקעי TCP או קובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth. קובץ הבינארי של שרת proxy ל-Cloud SQL Auth מתחבר למכונה אחת או יותר של Cloud SQL שצוינו בשורת הפקודה, ופותח חיבור מקומי כסוקט TCP. אפליקציות ושירותים אחרים, כמו קוד האפליקציה או כלי לקוח לניהול מסדי נתונים, יכולים להתחבר למופעים של Cloud SQL דרך חיבור שקע TCP.

שקעי TCP

בחיבורי TCP, שרת ה-proxy ל-Cloud SQL Auth מאזין ל-localhost(127.0.0.1) כברירת מחדל. לכן, כשמציינים --port PORT_NUMBER למופע, החיבור המקומי הוא בכתובת 127.0.0.1:PORT_NUMBER.

אפשר גם לציין כתובת אחרת לחיבור המקומי. לדוגמה, כך מגדירים את שרת ה-proxy ל-Cloud SQL Auth להאזין בכתובת 0.0.0.0:1234 לחיבור המקומי:

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. מעתיקים את INSTANCE_CONNECTION_NAME. אפשר למצוא את כתובת ה-IP בדף Overview של המופע במסוףGoogle Cloud או על ידי הפעלת הפקודה הבאה:

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    לדוגמה: myproject:myregion:myinstance.

  2. אם למכונה מוגדרות כתובות IP ציבוריות ופרטיות, ואתם רוצים ששרת proxy ל-Cloud SQL Auth ישתמש בכתובת IP פרטית, אתם צריכים לספק את האפשרות הבאה כשמפעילים את שרת proxy ל-Cloud SQL Auth:
    --private-ip
  3. אם אתם משתמשים בחשבון שירות כדי לאמת את שרת ה-proxy ל-Cloud SQL Auth, שימו לב למיקום במכונת הלקוח של קובץ המפתח הפרטי שנוצר כשנוצר חשבון השירות.
  4. מפעילים את שרת ה-proxy ל-Cloud SQL Auth.

    מחרוזות אפשריות להפעלת שרת proxy ל-Cloud SQL Auth:

    • שימוש באימות Cloud SDK:
      ./cloud-sql-proxy --port 1433 INSTANCE_CONNECTION_NAME
      היציאה שצוינה לא יכולה להיות בשימוש, למשל על ידי שרת מסד נתונים מקומי.
    • שימוש בחשבון שירות וציון מפורש של שם החיבור של המופע (מומלץ לסביבות ייצור):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    מידע נוסף על האפשרויות של שרת proxy ל-Cloud SQL Auth זמין במאמר אפשרויות לאימות שרת proxy ל-Cloud SQL Auth.

Docker

כדי להריץ את שרת ה-proxy ל-Cloud SQL Auth במאגר Docker, משתמשים בקובץ האימג' של Docker של שרת ה-proxy ל-Cloud SQL Auth שזמין ב-Google Container Registry.

אפשר להפעיל את Cloud SQL Auth Proxy באמצעות שקעי TCP או שקעי Unix, עם הפקודות שמוצגות בהמשך. האפשרויות משתמשות ב-INSTANCE_CONNECTION_NAME כמחרוזת החיבור כדי לזהות מכונה של Cloud SQL. אפשר למצוא את INSTANCE_CONNECTION_NAME בדף Overview של המופע במסוףGoogle Cloud , או על ידי הפעלת הפקודה הבאה:

gcloud sql instances describe INSTANCE_NAME
.

לדוגמה: myproject:myregion:myinstance.

בהתאם לשפה ולסביבה שלכם, אתם יכולים להפעיל את שרת ה-proxy ל-Cloud SQL Auth באמצעות שקעי TCP או שקעי Unix. אין תמיכה בשקעי Unix באפליקציות שנכתבו בשפת התכנות Java או בסביבת Windows.

שימוש בשקעי TCP

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:1433:1433 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.22.1 \\
  --address 0.0.0.0 --port 1433 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

אם אתם משתמשים בפרטי הכניסה שסופקו על ידי מכונת Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

תמיד מציינים את הקידומת 127.0.0.1 ב-‎-p כדי ששרת ה-proxy ל-Cloud SQL Auth לא ייחשף מחוץ למארח המקומי. הערך '0.0.0.0' בפרמטר instances נדרש כדי לאפשר גישה ליציאה מחוץ למאגר Docker.

שימוש בסוקטים של Unix

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.22.1 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

אם אתם משתמשים בפרטי הכניסה שסופקו על ידי מכונת Compute Engine, אל תכללו את הפרמטר --credentials-file ואת השורה -v PATH_TO_KEY_FILE:/path/to/service-account-key.json.

אם אתם משתמשים באימג' שעבר אופטימיזציה לקונטיינר, השתמשו בספרייה שאפשר לכתוב בה במקום /cloudsql, לדוגמה:

-v /mnt/stateful_partition/cloudsql:/cloudsql

אפשר לציין יותר ממופע אחד, ולהפריד ביניהם באמצעות פסיקים. אפשר גם להשתמש במטא-נתונים של Compute Engine כדי לקבוע באופן דינמי את המכונות להתחברות. מידע נוסף על הפרמטרים של Cloud SQL Auth Proxy

7. מפעילים את סשן sqlcmd.

מחרוזת החיבור שבה משתמשים תלויה בשיטה שבה הפעלתם את שרת ה-proxy ל-Cloud SQL Auth: באמצעות שקע TCP או Docker.

שקעי TCP

  1. מפעילים את לקוח sqlcmd:
    sqlcmd -S tcp:127.0.0.1,1433 -U USERNAME -P PASSWORD

    כשמתחברים באמצעות שקעי TCP, מתבצעת גישה לשרת ה-proxy ל-Cloud SQL Auth דרך 127.0.0.1.

  2. אם מופיעה בקשה, מזינים את הסיסמה.
  3. מופיעה הנחיה של sqlcmd.

דרושה לך עזרה? לקבלת עזרה בפתרון בעיות בשרת ה-proxy, אפשר לעיין במאמר בנושא פתרון בעיות בחיבורים של שרת proxy ל-Cloud SQL Auth או בדף תמיכה ב-Cloud SQL.

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