
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Enable the Cloud Scheduler API
/ 10
Create two static IP addresses
/ 20
Create an instance with static IP address created earlier.
/ 20
Deploy cloud function
/ 20
Create App Engine Application
/ 10
Run a cloud schedular job
/ 10
Confirm the deletion of unused IP address
/ 10
בשיעור ה-Lab הזה תשתמשו ב-Cloud Functions וב-Cloud Scheduler כדי לזהות ולנקות את משאבי הענן שלא נוצלו. ב-Google Cloud, כתובות IP סטטיות הן משאב פנוי כשהן מחוברות למאזן עומסים או למכונה וירטואלית (VM). כשכתובת IP סטטית קבועה-מראש אבל לא נעשה בה שימוש, נצבר עבורה חיוב לפי שעה. באפליקציות שבהן נעשה שימוש רב בכתובות IP סטטיות ובניהול הקצאות דינמי נרחב, אי הניצול יכול להפוך למשמעותי במשך הזמן.
יצירת מכונה וירטואלית של Compute Engine עם כתובת IP חיצונית סטטית וכתובת IP חיצונית סטטית נפרדת שאינה בשימוש
פריסת פונקציה ב-Cloud Functions כדי לזהות כתובות שאינן בשימוש
יצירת משימה של Cloud Scheduler כדי לתזמן את הפעלת הפונקציה באמצעות HTTP שמשמש כטריגר
בתרשים הבא מתוארת הארכיטקטורה שבה תשתמשו בקטע הראשון של שיעור ה-Lab הזה, כשתתזמנו פונקציה ב-Cloud Functions כדי לזהות ולנקות כתובות IP שאינן בשימוש.
בקטע הזה תגדירו את התשתית ואת הזהויות הנדרשות להשלמת שיעור ה-Lab.
עליכם לקרוא את ההוראות האלו. המעבדות מוגבלות בזמן ואי אפשר להשהות אותן. הטיימר מתחיל כשלוחצים על Start Lab ומראה את משך הזמן שבו תוכלו להשתמש במשאבים ב-Google Cloud.
במעבדה המעשית הזו של Qwiklabs, תוכלו לבצע את פעילויות המעבדה בעצמכם בסביבת ענן אמיתית, ולא בהדמיה או בסביבה להדגמה. לשם כך, יינתנו לכם פרטי כניסה זמניים שאיתם תיכנסו ותיגשו אל Google Cloud במשך הפעילות של המעבדה.
כדי להשלים את המעבדה, תצטרכו:
הערה: אם כבר יש לכם פרויקט או חשבון Google Cloud אישי משלכם, אין להשתמש בו במעבדה הזו.
הערה: אם משתמשים במכשיר עם Chrome OS, צריך לפתוח חלון אנונימי כדי להריץ את המעבדה הזו.
לוחצים על הלחצן Start Lab (התחלת השיעור המעשי). אם זה שיעור בתשלום, יקפוץ חלון שבו בוחרים אמצעי תשלום. מימין יש חלונית עם פרטי כניסה זמניים שמולאו מראש. צריך להשתמש בפרטים האלו בשיעור המעשי הזה.
מעתיקים את שם המשתמש ואז לוחצים על Open Google Console (פתיחת Google Console). יופעלו משאבים במעבדה, ואז ייפתח הדף Sign in (כניסה) בכרטיסייה נפרדת.
טיפ: כדאי לפתוח את הכרטיסיות בחלונות נפרדים, אחד לצד השני.
בדף Sign in (כניסה), מדביקים את שם המשתמש שהעתקתם מהחלונית Connection Details (פרטי התחברות). אחר כך מעתיקים ומדביקים את הסיסמה.
חשוב: צריך להשתמש בפרטי הכניסה מהחלונית Connection Details. אין להשתמש בפרטי הכניסה של Qwiklabs. אם יש לכם חשבון Google Cloud משלכם, אל תשתמשו בו בשיעור המעשי הזה (כך תימנעו מחיוב בתשלום).
לוחצים כדי לעבור את הדפים הבאים:
לאחר כמה דקות, Cloud Console ייפתח בכרטיסייה הזו.
סביבת Cloud Shell היא מכונה וירטואלית שמותקנים בה כלים למפתחים. יש בה ספריית בית בנפח עקבי של 5GB והיא פועלת ב-Google Cloud. ב-Cloud Shell יש גישה לשורת הפקודה למשאבים שלכם ב-Google Cloud.
ב-Cloud Console, בסרגל הכלים שבפינה הימנית העליונה, לוחצים על הלחצן Activate Cloud Shell (הפעלת Cloud Shell).
לוחצים על Continue (המשך).
יחלפו כמה רגעים עד שההקצאה והחיבור לסביבת העבודה יושלמו. עם החיבור יתבצע גם אימות, ואז הפרויקט יוגדר לפי PROJECT_ID. לדוגמה:
gcloud
הוא כלי שורת הפקודה של Google Cloud. הוא מותקן מראש ב-Cloud Shell ותומך בהשלמת פקודות.
תוכלו לרשום את שם החשבון הפעיל באמצעות הפקודה הבאה:
gcloud auth list
(פלט)
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
(פלט לדוגמה)
Credentialed accounts:
- google1623327_student@qwiklabs.net
תוכלו לרשום את מזהה הפרויקט באמצעות הפקודה הבאה:
gcloud config list project
(פלט)
[core]
project = <project_ID>
(פלט לדוגמה)
[core]
project = qwiklabs-gcp-44776a13dea667a6
ב-Cloud Shell, מפעילים את Cloud Scheduler API:
gcloud services enable cloudscheduler.googleapis.com
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
שכפול המאגר:
git clone https://github.com/GoogleCloudPlatform/gcf-automated-resource-cleanup.git && cd gcf-automated-resource-cleanup/
מגדירים משתני סביבה והופכים את תיקיית המאגר ל-$WORKDIR שבה תריצו את כל הפקודות הקשורות לשיעור ה-Lab הזה:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null)
export region=us-central1
WORKDIR=$(pwd)
ב-Cloud Shell, נכנסים לספרייה unused-ip:
cd $WORKDIR/unused-ip
מייצאים את השמות של כתובות ה-IP כמשתנים:
export USED_IP=used-ip-address
export UNUSED_IP=unused-ip-address
יוצרים שתי כתובות IP סטטיות:
gcloud compute addresses create $USED_IP --project=$PROJECT_ID --region=us-central1
gcloud compute addresses create $UNUSED_IP --project=$PROJECT_ID --region=us-central1
במעבדה הזו נעשה שימוש באזור us-central1, אבל אתם יכולים לבחור אזור אחר ולהתייחס אליו בעקביות עד לסיום המעבדה.
מאשרים שנוצרו שתי כתובות:
gcloud compute addresses list --filter="region:(us-central1)"
בפלט, משמעותו של הסטטוס RESERVED היא שכתובות ה-IP אינן בשימוש:
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
unused-ip-address 35.232.144.85 EXTERNAL us-central1 RESERVED
used-ip-address 104.197.56.87 EXTERNAL us-central1 RESERVED
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
מגדירים את כתובת ה-IP שמשתמשים בה כמשתנה סביבה:
export USED_IP_ADDRESS=$(gcloud compute addresses describe $USED_IP --region=us-central1 --format=json | jq -r '.address')
ב-Cloud Shell, יוצרים מכונה:
gcloud compute instances create static-ip-instance \
--zone=us-central1-a \
--machine-type=n1-standard-1 \
--subnet=default \
--address=$USED_IP_ADDRESS
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
מאשרים שאחת מכתובות ה-IP נמצאת עכשיו בשימוש:
gcloud compute addresses list --filter="region:(us-central1)"
הפלט דומה לפלט הבא:
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
unused-ip-address 35.232.144.85 EXTERNAL us-central1 RESERVED
used-ip-address 104.197.56.87 EXTERNAL us-central1 IN_USE
ב-Cloud Shell, יוצרים פלט של הקטע הראשי של הקוד:
cat $WORKDIR/unused-ip/function.js | grep "const compute" -A 31
הפלט שיתקבל זהה לפלט הבא:
const compute = new Compute();
compute.getAddresses(function(err, addresses){ // gets all addresses across regions
if(err){
console.log("there was an error: " + err);
}
if (addresses == null) {
console.log("no addresses found");
return;
}
console.log("there are " + addresses.length + " addresses");
// iterate through addresses
for (let item of addresses){
// get metadata for each address
item.getMetadata(function(err, metadata, apiResponse) {
// if the address is not used:
if (metadata.status=='RESERVED'){
// compute age by convering ISO 8601 timestamps to Date
var creationDate = new Date(metadata.creationTimestamp);
var currDate = new Date();
var addressAge = Math.floor((currDate - creationDate)/86400e3);;
// delete address
item.delete(function(err, operation, apiResponse2){
if (err) {
console.log("could not delete address: " + err);
}
})
}
בדוגמת הקוד שצוינה למעלה, אלו הפרטים החשובים:
בקטע compute.getAddresses(function(err, addresses)
נעשה שימוש ב-method מסוג getAddresses כדי לאחזר כתובות IP בכל האזורים בפרויקט.
בקטע item.getMetadata(function(err, metadata, apiResponse)
מתקבלים המטא-נתונים לכל כתובת IP ונבדק שדה ה-STATUS שלה.
בקטעif ((metadata.status=='RESERVED') & (calculateAge(metadata.creationTimestamp) >= ageToDelete)){
נבדק אם כתובת ה-IP נמצאת בשימוש. הגיל שלה מחושב באמצעות פונקציית עזר והוא מושווה לקבוע (המוגדר כ-0 למטרות שיעור ה-Lab).
בקטע item.delete(function(err, operation, apiResponse2){
נמחקת כתובת ה-IP.
ב-Cloud Shell, פורסים את הפונקציה ב-Cloud Functions:
gcloud functions deploy unused_ip_function --trigger-http --runtime=nodejs8
אם מתבקשים לעשות זאת, מזינים Y כדי לאפשר הפעלות לא מאומתות.
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
מגדירים את כתובת ה-URL שמשמשת כטריגר כמשתנה סביבה:
export FUNCTION_URL=$(gcloud functions describe unused_ip_function --format=json | jq -r '.httpsTrigger.url')
ב-Cloud Shell, יוצרים משימה של Cloud Scheduler להרצת הפונקציה ב-Cloud Functions בשעה 2:00 מדי לילה:
gcloud scheduler jobs create http unused-ip-job \
--schedule="* 2 * * *" \
--uri=$FUNCTION_URL
כשתוצג הבקשה, מזינים Y כדי ליצור את האפליקציה ב-App Engine בתוך הפרויקט, מזינים את הבחירה המספרית המתאימה לפריסת האפלקיציה ב-us-central1
, ומקישים על Enter.
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
כדי לבדוק את המשימה, מפעילים את הטריגר באופן ידני:
gcloud scheduler jobs run unused-ip-job
אם תקבלו הודעה הדומה להודעה הבאה:
There is no App Engine app in project [qwiklabs-gcp-00-6384ad453ae0].
Would you like to create one (Y/n)?
מקישים על CTRL+Z, ממתינים רגע ואז מנסים להריץ שוב את הפקודה (לא אמור להתקבל פלט).
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
מוודאים שכתובת ה-IP שאינה בשימוש נמחקה:
gcloud compute addresses list --filter="region:(us-central1)"
הפלט דומה לפלט הבא:
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
used-ip-address 104.197.56.87 EXTERNAL us-central1 IN_USE
כדי לוודא שהמטרה הושגה, לוחצים על Check my progress.
במעבדה הזו השלמתם את המשימות הבאות:
שיעור ה-Lab ללימוד עצמי זה הוא חלק מיחידת הלימוד Optimizing your Google Cloud Costs ב-Qwiklabs. יחידת לימוד היא סדרה של שיעורי Lab קשורים שיוצרים מסלול לימוד. השלמת יחידת הלימוד הזו מזכה אתכם בתג שמופיע למעלה, לציון ההישג שלכם. אתם יכולים להציג את התג או התגים באופן גלוי לכול ולקשר אותם לקורות החיים שלכם באינטרנט או לחשבון במדיה חברתית. רוצים לקבל קרדיט מיידי על ביצוע שיעור ה-Lab הזה? הירשמו ליחידת הלימוד הזו.
לצפייה ביחידות לימוד של Qwiklabs נוספות.
המשיכו את יחידת הלימוד עם שיעור ה-LabOptimizing Costs with Cloud Storage או עם האפשרויות הבאות:
יעזרו לכם להפיק את המרב מהאמצעים הטכנולוגיים של Google Cloud. השיעורים שלנו מכילים מיומנויות טכניות ושיטות מומלצות כדי שתוכלו להתחיל לעבוד מהר ולהמשיך ללמוד ולהתפתח. נציג את העקרונות הבסיסיים להכשרה ברמה מתקדמת, עם אפשרויות וירטואליות, שידורים חיים או על פי דרישה, בהתאם ללוח הזמנים העמוס שלכם. בעזרת ההסמכות תוכלו לאשר ולאמת את המיומנות והמומחיות שלכם באמצעים הטכנולוגיים של Google Cloud.
זכויות יוצרים 2025 Google LLC. כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. שמות של חברות ומוצרים אחרים עשויים להיות סימנים מסחריים של החברות, בהתאמה, שאליהן הם משויכים.
This content is not currently available
We will notify you via email when it becomes available
Great!
We will contact you via email if it becomes available
One lab at a time
Confirm to end all existing labs and start this one