יצירת אפליקציה ממשאבים קיימים
במדריך למתחילים הזה נסביר איך לארגן משאבים קיימים Google Cloud באפליקציית מרכז האפליקציות על ידי רישום שלהם כשירותים. קודם פורסים רכיבי דוגמה, ואז משתמשים בהם כדי להגדיר אפליקציית אינטרנט גלובלית ב-מרכז האפליקציות.
המדריך למתחילים הזה מיועד למשתמשים שרוצים להשתמש בתשתית הקיימת שלהם כדי לקבל תצוגה של המשאבים ושליטה תפעולית עליהם, על ידי קיבוץ Google Cloud המשאבים לאפליקציות לוגיות.
לפני שמתחילים
לפני שמתחילים במדריך למתחילים הזה, צריך לבצע את הפעולות הבאות:
בוחרים את מודל הגדרת האפליקציה. במדריך למתחילים הזה אנחנו מניחים שהגדרתם גבול לניהול אפליקציות, ויוצרים אפליקציה באמצעות פרויקט הניהול. מידע נוסף על הגדרת המשאב הזה זמין במאמר מודל המשאבים של מרכז האפליקציות.
חשוב לזכור את מזהה הפרויקט של פרויקט הניהול כדי להשתמש בו לאורך המסמך הזה. מידע נוסף זמין במאמר איך מוצאים את השם, המספר והמזהה של הפרויקט.
מוודאים שממשקי ה-API הבאים מופעלים בפרויקט הניהול. כשמגדירים פרויקט ניהול, רוב ממשקי ה-API שצריך כדי להשתמש במדריך הזה מופעלים באופן אוטומטי.
- Compute Engine API (
compute.googleapis.com) - Infrastructure Manager API (
config.googleapis.com)
- Compute Engine API (
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להפעלת ממשקי API נדרשים וליצירת אפליקציה לדוגמה ממשאבים קיימים, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט הניהול:
-
כדי להפעיל את ממשקי ה-API הנדרשים:
אדמין של שימוש בשירות (
roles/serviceusage.serviceUsageAdmin) -
כדי לקבל גישה מלאה לשירותים הנדרשים:
- אדמין במרכז האפליקציות (
roles/apphub.admin) - אדמין ב-Cloud Run (
roles/run.admin) - אדמין ב-Compute (
roles/compute.admin) - אדמין של Cloud Infrastructure Manager (
roles/config.admin)
- אדמין במרכז האפליקציות (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
פריסת רכיבים לדוגמה לאפליקציה
קודם צריך לפרוס קבוצה של משאבי Google Cloud דוגמה שבהם תשתמשו בהמשך כדי להגדיר אפליקציה גלובלית ב-App Hub, על ידי רישום שלהם כרכיבי אפליקציה:
- שירות Cloud Run שפועל כשירות קצה עורפי של האפליקציה.
- מאזן עומסים גלובלי חיצוני של אפליקציות (ALB) שפועל כשירות קצה חזיתי של האפליקציה על ידי הפניית תעבורה לשירות Cloud Run ככלל העברה.
כדי לפרוס את המשאבים האלה:
gcloud
מגדירים את משתני הסביבה הנדרשים:
export PROJECT_ID="PROJECT_ID" export REGION="REGION"מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של פרויקט הניהול. -
REGION: האזור שבחרתם למשאבים, לדוגמה,us-central1.
-
פורסים שירות לדוגמה ב-Cloud Run בשם
hello-run:gcloud run deploy hello-run \ --image=us-docker.pkg.dev/cloudrun/container/hello \ --allow-unauthenticated \ --region=${REGION} \ --project=${PROJECT_ID}יוצרים מאזן עומסים גלובלי חיצוני של אפליקציות. התהליך הזה כולל את השלבים הבאים:
יוצרים קבוצה של נקודות קצה ברשת (NEG) ללא שרת בשם
hello-run-neg:gcloud compute network-endpoint-groups create hello-run-neg \ --region=${REGION} \ --network-endpoint-type=serverless \ --cloud-run-service=hello-run \ --project=${PROJECT_ID}ה-NEG משמש כקצה עורפי למאזן העומסים, ומפנה לשירות
hello-run.יוצרים שירות קצה עורפי כדי לנהל את אופן חלוקת התנועה ל-NEG:
gcloud compute backend-services create hello-backend-service \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --project=${PROJECT_ID}מוסיפים את ה-NEG בלי שרת (serverless) לשירות לקצה העורפי:
gcloud compute backend-services add-backend hello-backend-service \ --global \ --network-endpoint-group=hello-run-neg \ --network-endpoint-group-region=${REGION} \ --project=${PROJECT_ID}יוצרים מפת URL כדי לנתב בקשות נכנסות לשירות הקצה העורפי:
gcloud compute url-maps create hello-url-map \ --default-service=hello-backend-service \ --project=${PROJECT_ID}יוצרים proxy מסוג HTTP כדי לקבל בקשות ולנתב אותן באמצעות מפת URL:
gcloud compute target-http-proxies create hello-http-proxy \ --url-map=hello-url-map \ --project=${PROJECT_ID}יוצרים כלל העברה גלובלי:
gcloud compute forwarding-rules create hello-forwarding-rule \ --global \ --load-balancing-scheme=EXTERNAL_MANAGED \ --target-http-proxy=hello-http-proxy \ --ports=80 \ --project=${PROJECT_ID}כלל ההעברה הזה מספק כתובת IP ציבורית ויציאה לטיפול בבקשות משתמשים נכנסות ומפנה אותן לשרת ה-proxy.
Terraform
יוצרים קובץ
main.tfומוסיפים את הקוד הבא:# Provider configuration provider "google" { project = "PROJECT_ID" } # Cloud Run service resource "google_cloud_run_v2_service" "default" { name = "hello-run" location = "REGION" template { containers { image = "us-docker.pkg.dev/cloudrun/container/hello" } } } # Allow unauthenticated access to the Cloud Run service resource "google_cloud_run_v2_service_iam_member" "noauth" { project = google_cloud_run_v2_service.default.project location = google_cloud_run_v2_service.default.location name = google_cloud_run_v2_service.default.name role = "roles/run.invoker" member = "allUsers" }מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של פרויקט הניהול. -
REGION: האזור שבחרתם למשאבים, לדוגמה,us-central1.
הבלוק הזה מגדיר את הספק Google Cloud ומגדיר שירות Cloud Run שפונה לציבור באמצעות קובץ אימג' לדוגמה של קונטיינר
hello-world. היא כוללת גם קשירת מדיניות IAM כדי לאפשר הפעלות לא מאומתות, וכך השירות נגיש לציבור.-
מוסיפים את הקוד הבא לקובץ
main.tfכדי ליצור את מאזן העומסים של אפליקציות (ALB) החיצוני הגלובלי:# Serverless NEG for the Cloud Run service resource "google_compute_region_network_endpoint_group" "serverless_neg" { name = "hello-run-neg" network_endpoint_type = "SERVERLESS" region = "REGION" cloud_run { service = google_cloud_run_v2_service.default.name } } # Global external backend service resource "google_compute_backend_service" "default" { name = "hello-backend-service" protocol = "HTTP" load_balancing_scheme = "EXTERNAL_MANAGED" backend { group = google_compute_region_network_endpoint_group.serverless_neg.id } } # URL map to route requests to the backend service resource "google_compute_url_map" "default" { name = "hello-url-map" default_service = google_compute_backend_service.default.id } # HTTP proxy to route requests to the URL map resource "google_compute_target_http_proxy" "default" { name = "hello-http-proxy" url_map = google_compute_url_map.default.id } # Global forwarding rule to handle incoming requests resource "google_compute_global_forwarding_rule" "default" { name = "hello-forwarding-rule" target = google_compute_target_http_proxy.default.id port_range = "80" }הבלוק הזה מגדיר את הרכיבים הבאים:
- קבוצה של נקודות קצה ברשת (NEG) בלי שרת (serverless), שמשמשת כבק-אנד למאזן העומסים (LB) ומפנה לשירות Cloud Run.
- שירות קצה עורפי שמפנה תנועה ל-NEG ללא שרת.
- מפת URL לניתוב בקשות נכנסות לשירות הקצה העורפי.
- שרת proxy של HTTP לקבלת בקשות ולהפניה שלהן באמצעות מיפוי כתובות ה-URL.
- כלל העברה גלובלי, שמספק כתובת IP ציבורית ויציאה לטיפול בבקשות משתמשים נכנסות ומפנה אותן לשרת ה-proxy.
מפעילים את Terraform ומחילים את ההגדרות:
terraform init terraform applyTerraform פורס את המשאבים בפרויקט.
הגדרת האפליקציה במרכז האפליקציות
אחרי פריסת המשאבים ככלל העברה וכשירות Cloud Run, פועלים לפי השלבים הבאים כדי לקבץ אותם באפליקציית מרכז האפליקציות על ידי רישומם כשירותים של האפליקציה:
המסוף
עוברים לדף אפליקציות ממרכז האפליקציות:
לוחצים על Create application (יצירת אפליקציה).
בכרטיסייה Application details (פרטי האפליקציה), בוחרים באפשרות Global (גלובלי) בתור מיקום האפליקציה.
מזינים
my-global-appבשדה שם האפליקציה.אפשר גם להוסיף שם מוצג ותיאור לאפליקציה.
לוחצים על Continue.
בכרטיסייה Application resources, מעיינים במשאבי התשתית ומסמנים את תיבות הסימון של כלל ההעברה ושירות Cloud Run.
לוחצים על Continue.
בכרטיסייה מאפיינים ובעלים אפשר להוסיף מאפיינים לאפליקציה, כמו רמת קריטיות, סביבה ובעלי האפליקציה.
אתם יכולים להשתמש באותם מאפיינים ובעלים עבור המשאבים שאתם רושמים באפליקציה, או להגדיר אותם מאוחר יותר.
לוחצים על יצירה.
אחרי שיוצרים את האפליקציה, הפרטים שלה מוצגים בדף Applications, כולל המשאבים שרשמתם כשירותים.
gcloud
יוצרים את האפליקציה:
gcloud apphub applications create my-global-app \ --location=global \ --display-name="My Global Application" \ --project=${PROJECT_ID}מאתרים את המזהים של כלל ההעברה ושל שירות Cloud Run באזור המתאים:
gcloud apphub discovered-services list \ --location=global \ --project=${PROJECT_ID} gcloud apphub discovered-services list \ --location=${REGION} \ --project=${PROJECT_ID}שימו לב למזהה של כלל ההעברה ולשירות Cloud Run.
רושמים את כלל ההעברה באפליקציה הגלובלית:
gcloud apphub applications services create frontend-service \ --application=my-global-app \ --discovered-service=projects/${PROJECT_ID}/locations/global/discoveredServices/FRONTEND_ID \ --display-name="Frontend Service" \ --location=global \ --project=${PROJECT_ID}מחליפים את
FRONTEND_IDבמזהה של כלל ההעברה.רישום שירות Cloud Run באפליקציה הגלובלית:
gcloud apphub applications services create backend-service \ --application=my-global-app \ --discovered-service=projects/${PROJECT_ID}/locations/${REGION}/discoveredServices/BACKEND_ID \ --display-name="Backend Service" \ --location=global \ --project=${PROJECT_ID}מחליפים את
BACKEND_IDבמזהה של שירות Cloud Run.
Terraform
יוצרים קובץ
application.tfומוסיפים את הקוד הבא:# Application resource "google_apphub_application" "my_global_app" { project = "PROJECT_ID" location = "global" application_id = "my-global-app" display_name = "My Global Web App" description = "A sample global web application." scope { type = "GLOBAL" } attributes { criticality { type = "MEDIUM" } environment { type = "DEVELOPMENT" } business_owners { display_name = "Example Business Owner" email = "business-owner@example.com" } developer_owners { display_name = "Example Developer" email = "dev-owner@example.com" } operator_owners { display_name = "Example Operator" email = "operator-owner@example.com" } } }הבלוק הזה משתמש במשאב
google_apphub_applicationכדי ליצור קיבוץ לוגי של רכיבי האפליקציה.בדוגמה הזו נוצרת אפליקציה גלובלית ומוגדרים מאפיינים לניהול ולגילוי, כמו חשיבות, סביבה ובעלים. אתם יכולים לשנות את הערכים האלה בהגדרת הדוגמה.
כדי לגלות את המשאבים שפרסתם, מוסיפים את הקוד הבא ל-
application.tf:# Discover the forwarding rule data "google_apphub_discovered_service" "frontend_service" { location = "global" service_uri = "//compute.googleapis.com/${google_compute_global_forwarding_rule.default.id}" } # Discover the Cloud Run service data "google_apphub_discovered_service" "backend_service" { location = "REGION" service_uri = "//run.googleapis.com/${google_cloud_run_v2_service.default.id}" }google_apphub_discovered_serviceמקורות הנתונים מוצאים את שמות המשאבים של התשתית הקיימת על סמך כתובות ה-URI שלהם. בשלב הזה, מרכז האפליקציות מזהה את המשאבים הספציפיים שרוצים לרשום כשירותים.מוסיפים את הקוד הבא אל
application.tfכדי לרשום את המשאבים שנמצאו:# Register the forwarding rule as a service in the application resource "google_apphub_service" "frontend" { project = "PROJECT_ID" location = "global" application_id = google_apphub_application.my_global_app.application_id service_id = "frontend-service" display_name = "Frontend Service (LB)" discovered_service = data.google_apphub_discovered_service.frontend_service.name } # Register the Cloud Run service as a service in the application resource "google_apphub_service" "backend" { project = "PROJECT_ID" location = "global" application_id = google_apphub_application.my_global_app.application_id service_id = "backend-service" display_name = "Backend Service (Cloud Run)" discovered_service = data.google_apphub_discovered_service.backend_service.name }המשאבים של
google_apphub_serviceרושמים באופן רשמי את המשאבים שזוהו באפליקציה כשירותים. בשלב הזה מקשרים את התשתית לאפליקציה שהגדרתם במרכז האפליקציות.מפעילים את Terraform ומחילים את ההגדרות:
terraform init terraform applyTerraform רושם את המשאבים באפליקציית
my-global-appבמרכז האפליקציות.
אופציונלי: מעקב אחרי האפליקציה החדשה
אחרי שמגדירים את האפליקציה ב-App Hub, אפשר להשתמש במוצרים משולבים שלGoogle Cloud כדי לעקוב אחרי התקינות והביצועים שלה:
הצגת נתונים תפעוליים ב-Cloud Hub:
נכנסים לדף Home ב-Cloud Hub במסוף Google Cloud .
בבורר האפליקציות, בוחרים באפליקציה
my-global-app. בדף מוצג סיכום של תקינות האפליקציה. מידע נוסף מופיע בסקירה הכללית על Cloud Hub.
צפייה בלוחות בקרה מפורטים ב'מעקב אחרי אפליקציות':
-
נכנסים לדף Application monitoring במסוף Google Cloud :
אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שבה הכותרת המשנית היא Monitoring.
במסוף Google Cloud , בוחרים את פרויקט הניהול בכלי לבחירת פרויקטים.
בדף Application Monitoring מוצגים מרכזי בקרה מוגדרים מראש עבור האפליקציה שלכם. מידע נוסף זמין במאמר בנושא מעקב אחרי תקינות האפליקציה והביצועים שלה.
הוראות מפורטות לשימוש בלוחות הבקרה המוגדרים מראש ולניתוח נתוני הטלמטריה מופיעות במאמר הצגת טלמטריה של אפליקציות.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
- ביטול הרישום של השירותים.
- מחיקת האפליקציה הגלובלית.
- אם השתמשתם ב-Terraform כדי לפרוס את האפליקציה, מריצים את הפקודה
terraform destroyבספרייה שמכילה את קובצי Terraform כדי לבטל את ההקצאה של כל המשאבים שיצרתם. - אופציונלי: אם יצרתם פרויקט חדש בשביל המדריך הזה למתחילים, מוחקים את הפרויקט.