בעזרת תמונות מרובות ארכיטקטורות, אתם יכולים לשדרג את מאגרי הצמתים של Windows Server ב-Google Kubernetes Engine (GKE) לגרסת Windows Server המועדפת עליכם בלי לבנות מחדש את התמונה ולשנות את מפרטי ה-Pod. לדוגמה:
- גרסה 1.15 של GKE תומכת ב-Windows Server 1809
- גרסה 1.16 של GKE תומכת ב-Windows Server 1909
כדי לשדרג מגרסת GKE אחת לגרסה מאוחרת יותר באופן אוטומטי, צריך ליצור תמונות מרובות ארכיטקטורות עבור עומסי העבודה של Windows. כדי ליצור קובץ אימג' מרובה ארכיטקטורות, צריך ליצור קובץ אימג' לכל גרסה של Windows Server, ואז ליצור מניפסט שמפנה לקובצי האימג' האלה לכל גרסה של Windows Server. אם אתם רוצים שליטה מלאה בתהליך היצירה ותהליך build של התמונות, אתם יכולים ליצור אותן ידנית. לחלופין, אפשר להשתמש ב-Cloud Build כדי ליצור באופן אוטומטי את תמונות המערכת של Windows Server מרובות הארכיטקטורות.
מטרות
במדריך הזה תלמדו איך ליצור תמונות מרובות ארכיטקטורות של Windows Server באופן ידני או באמצעות Cloud Build.יוצרים את התמונות באופן ידני:
- יוצרים 2 קובצי אימג' של Docker עם גרסאות או סוגים שונים של Windows Server, למשל Long-Term Servicing Channel (LTSC) 2019 ו-LTSC 2022.
- יוצרים מכונה וירטואלית של Windows Server.
- יוצרים קובץ מניפסט ומעבירים אותו בדחיפה למאגר.
יוצרים את קובצי האימג' באמצעות Cloud Build:
- מכינים את הסביבה על ידי יצירת פרויקט, הפעלת ממשקי API והענקת הרשאות.
- יוצרים אפליקציה, קובצי Dockerfile וקובצי build.
- מריצים פקודה כדי ליצור את התמונה.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אפשר להשתמש במחשבון התמחור.
כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:- מתקינים את Google Cloud CLI כדי להריץ פקודות
gcloud. - מתקינים את Docker כדי ליצור קונטיינרים.
- מתקינים את Go כדי ליצור קבצים בינאריים של Windows Server.
- במדריך הזה נעשה שימוש ב-Artifact Registry כמאגר. מוודאים שיצרתם את המאגר ב-Docker.
יצירת תמונות מרובות ארכיטקטורות באופן ידני
כשיוצרים קובצי אימג' מרובי-ארכיטקטורה באופן ידני, אפשר ליצור קובץ אימג' שכולל את כל הגרסאות של Windows Server שאתם צריכים. כדי ליצור תמונה עם כמה ארכיטקטורות באופן ידני:
- יצירת קובץ אימג' של Docker LTSC 2019 עם ארכיטקטורה יחידה. פרטים על יצירת תמונות Docker מופיעים במאמר פריסת אפליקציית Windows Server.
לדוגמה,
us-docker.pkg.dev/my-project/docker-repo/foo:1.0-2019. - יצירת קובץ אימג' של Docker LTSC 2022 עם ארכיטקטורה יחידה. לדוגמה,
us-docker.pkg.dev/my-project/docker-repo/foo:1.0-2022 - יוצרים מכונה וירטואלית של Windows Server, למשל גרסה 20H2. אפשר לעיין במדריך למתחילים לשימוש במכונה וירטואלית של Windows Server.
- משתמשים ב-RDP כדי להתחבר ל-VM.
- פותחים חלון PowerShell כדי להריץ את הפקודות בשלבים הבאים.
מפעילים את התכונה הניסיונית
docker manifest. מניפסט של Docker הוא רשימה של קובצי אימג' שצריך להעביר בדחיפה למרשם:PS C:\> $env:DOCKER_CLI_EXPERIMENTAL = 'enabled'יוצרים את מניפסט ה-multi-arch:
docker manifest create ` REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/foo:1.0 ` REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/foo:1.0-2019 ` REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/foo:1.0-2022 `מעבירים את מניפסט האימג' החדש עם כמה ארכיטקטורות למאגר ב-Artifact Registry:
docker manifest push ` REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/foo:1.0כדי לוודא שהתמונה מרובת הארכיטקטורות נוצרה והועלתה בהצלחה, עוברים אל
REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/fooולוחצים על התמונה. 3 התמונות יופיעו בתוך:foo:1.0-2019foo:1.0-2022foo:1.0-20h2foo:1.0
עכשיו אפשר להפנות לתמונה מרובת ארכיטקטורות REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/foo:1.0 במפרטי ה-Pod. כך תוכלו להשתמש בשדרוג אוטומטי של מאגרי צמתים של GKE Windows בצורה בטוחה.
יצירת קובצי אימג' מרובי-ארכיטקטורה באמצעות Cloud Build gke-windows-builder
כדי להקל על השלבים של בנייה ידנית, אפשר להשתמש ב-gke-windows-builder שמבוסס על gke-windows-builder של OSS. אפשר להשתמש ב-gke-windows-builder עם Cloud Build כדי ליצור באופן אוטומטי קובצי אימג' של Windows Server מרובי-ארכיטקטורה. מערכת GKE מעדכנת את כלי ה-builder כדי לכלול גרסאות חדשות נתמכות של Windows LTSC כשהן יוצאות. יתרון נוסף בשימוש בכלי הוא שלא צריך ליצור מכונה וירטואלית משלכם ב-Windows עם Powershell כדי לבנות את קובצי האימג'. מכונת ה-VM של Windows מוחלפת בקונטיינר Docker שמריץ את הפקודות בשבילכם ב-Cloud Build.
כדי להבין איך הכלי לבניית תמונות פועל, אפשר לעקוב אחרי הדוגמה הזו כדי לבנות תמונה מרובת ארכיטקטורות של 'שלום עולם'. אפשר לבצע את השלבים האלה בשרתי Linux או Windows.
הכנת הסביבה
כדי להכין את הסביבה, פועלים לפי השלבים הבאים:
- יוצרים ספרייה של סביבת עבודה במחשב שלכם, לדוגמה:
~/gke-windows-builder/hello-world. - יוצרים פרויקט או בוחרים פרויקט קיים לצורך המדריך הזה.
- מוודאים שהחיוב מופעל בפרויקט.
מפעילים בפרויקט את Compute Engine, Cloud Build ו-Artifact Registry APIs. הפעלת gke-windows-builder מתבצעת באמצעות Cloud Build, וקובצי האימג' של הקונטיינרים מרובי-הארכיטקטורה שנוצרים מועברים בדחיפה ל-Artifact Registry. הכלי לבנייה צריך את Compute Engine כדי ליצור ולנהל מכונות וירטואליות של Windows Server.
gcloud services enable compute.googleapis.com cloudbuild.googleapis.com \ artifactregistry.googleapis.com cloudbuild.googleapis.comצריך להקצות לחשבון השירות של Cloud Build את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM) באמצעות Google Cloud CLI:
הגדרת משתנים:
export PROJECT=$(gcloud info --format='value(config.project)') export MEMBER=$(gcloud projects describe $PROJECT --format 'value(projectNumber)')@cloudbuild.gserviceaccount.comלהקצות תפקידים. התפקידים האלה נדרשים כדי שהכלי ליצירת תמונות יוכל ליצור את המכונות הווירטואליות של Windows Server, להעתיק את סביבת העבודה לדלי ב-Cloud Storage, להגדיר את הרשתות כדי ליצור את קובץ האימג' של Docker ולהעביר בדחיפה את קובץ האימג' שנוצר ל-Artifact Registry:
gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/compute.instanceAdmin' gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/iam.serviceAccountUser' gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/compute.networkViewer' gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/storage.admin' gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/artifactregistry.writer' gcloud projects add-iam-policy-binding $PROJECT --member=serviceAccount:$MEMBER --role='roles/cloudbuild.builds.editor'
מוסיפים כלל חומת אש בשם
allow-winrm-ingressכדי לאפשר ל-WinRM להתחבר למכונות וירטואליות של Windows Server ולהריץ בניית Docker:gcloud compute firewall-rules create allow-winrm-ingress --allow=tcp:5986 --direction=INGRESSיוצרים מאגר Docker ב-Artifact Registry עבור הפרויקט. אם אף פעם לא השתמשתם במאגרי Docker ב-Artifact Registry, כדאי קודם לעיין במדריך למתחילים ל-Docker. מריצים את הפקודה הבאה כדי ליצור את המאגר:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker --location=REGISTRY_REGION \ --description="Docker repository"מחליפים את מה שכתוב בשדות הבאים:
-
REPOSITORY: שם כמוwindows-multi-arch-images. -
REGISTRY_REGION: מיקום Artifact Registry תקין.
-
יצירת הקובץ הבינארי hello.exe בסביבת העבודה
במדריך הזה, יוצרים אפליקציית hello world פשוטה שנכתבה ב-Go. הקוד של האפליקציה לדוגמה זמין ב-GitHub.
משכפלים את המאגר שמכיל את הקוד לדוגמה של המדריך הזה למכונה המקומית באמצעות הפקודות הבאות:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples cd kubernetes-engine-samples/windows/windows-multi-archהקובץ
hello.goמדפיס את המילים Hello World:יוצרים את הקובץ הבינארי
hello.exe:GOOS=windows go build hello.go
הקובץ הבינארי hello.exe יופיע בסביבת העבודה.
יצירת קובץ Dockerfile וקבצים לבנייה בסביבת העבודה
בקטע הזה משתמשים ב-Dockerfile כדי ליצור כל קובץ אימג' של Windows Server single-arch, ואז משתמשים בקובץ build כדי להפעיל את Cloud Build. ה-build משלב את התמונות של ארכיטקטורה יחידה לתמונה של ארכיטקטורות מרובות.
Dockerfileהוא מסמך טקסט שמכיל הוראות ל-Docker ליצירת תמונה. gke-windows-builder מחליף אתWINDOWS_VERSIONבגרסה ספציפית של Windows Server כדי לבנות את התמונה. לדוגמה, ה-builder יפעיל אתdocker build -t multi-arch-helloworld:latest_20h2 --build-arg WINDOWS_VERSION=20H2 .ב-Windows Server 20H2.באותה ספרייה שבה נמצא הקובץ
Dockerfile, הקובץcloudbuild.yamlהוא קובץ תצורה של ה-build. מחליפים את <REPOSITORY> ואת <REGISTRY_REGION> בשם ובאזור של מאגר Artifact Registry שיצרתם בשלב הקודם. בזמן ה-build, מערכת Cloud Build מחליפה באופן אוטומטי את$PROJECT_IDבמזהה הפרויקט.
יצירת התמונה
עכשיו אפשר ליצור את התמונה ולצפות ביומנים כדי לוודא שהיצירה הושלמה בהצלחה.
כדי ליצור את האימג', מריצים את הפקודה הבאה:
gcloud builds submit --config=cloudbuild.yaml .יוצגו יומנים כמו בדוגמה הבאה. השורה האחרונה ביומן מראה שהבנייה הצליחה:
Creating temporary tarball archive of 2 file(s) totalling 492 bytes before compression. Uploading tarball of [.] to [gs://PROJECT_ID_cloudbuild/source/1600082502.509759-b949721a922d462c94a75da9be9f1181.tgz] Created [https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/builds/ec333452-1301-47e8-90e2-716aeb2f5650]. Logs are available at [https://console.cloud.google.com/cloud-build/builds/ec333452-1301-47e8-90e2-716aeb2f5650?project=840737568665]. ------------------------ REMOTE BUILD OUTPUT--------------------------------------- ... ... Created manifest list REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/multiarch-helloworld:latest sha256:3ecbbc9f5144f358f81f7c7f1a7e28f069c98423d59c40eaff72bf184af0be02 2020/09/14 11:34:25 Instance: 35.184.178.49 shut down successfully PUSH DONE ----------------------------------------------------------------------------------- ID CREATE_TIME DURATION SOURCE IMAGES STATUS ec333452-1301-47e8-90e2-716aeb2f5650 2020-09-14T11:21:43+00:00 12M43S gs://PROJECT_ID_cloudbuild/source/1600082502.509759-b949721a922d462c94a75da9be9f1181.tgz - SUCCESS
הרגע יצרתם את קובץ האימג' באמצעות קובץ ההגדרות של ה-build והעברתם אותו בדחיפה ל-Artifact Registry בכתובת REGISTRY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/multiarch-helloworld:latest.
פריסת התמונה
כדי לפרוס את תמונת Windows מרובת הארכיטקטורות באשכול, אפשר לעיין במאמר פריסת אפליקציית Windows Server.
שימוש מתקדם ב-gke-windows-builder
כדי להתאים אישית את ההתנהגות של gke-windows-builder, מוסיפים פלאגים לקטע args בקובץ התצורה של ה-build cloudbuild.yaml. בקטע הזה מתוארים כמה דגלים להתנהגויות נפוצות, אבל זו לא רשימה מלאה. כדי לראות את הרשימה המלאה של הדגלים שנתמכים ב-gke-windows-builder, מריצים את הפקודה הבאה בשרת Linux או ב-Cloud Shell:
docker run -it us-docker.pkg.dev/gke-windows-tools/docker-repo/gke-windows-builder:latest --help
כדי להאיץ את תהליך ה-build, אפשר להשתמש בסוג מכונה גדול יותר עבור מופעי Windows:
- --machineType
- 'n1-standard-8'
במקום ליצור את קובץ האימג' לכל הגרסאות של Windows ש-GKE תומך בהן, אפשר לבחור גרסאות ספציפיות של Windows Server ליצירה באמצעות הדגל --versions:
- --versions
- '20H2,ltsc2019'
אם בסביבת העבודה יש הרבה קבצים, כדאי להגדיר את כלי ה-build להעתקת סביבת העבודה דרך Cloud Storage ולא דרך WinRM, כדי שה-build של התמונה יהיה אמין יותר.
יוצרים קטגוריה בפרויקט, למשל gs://{your project}_builder, ואז מגדירים את הדגל --workspace-bucket:
- --workspace-bucket
- '{your project}_builder'
כדי להריץ את מופעי ה-builder של Windows בפרויקט שירות של VPC משותף, משתמשים בפלגים הבאים ששולטים בהגדרת הרשת של המופע:
- --subnetwork-project
- 'shared-vpc-host-project'
- --subnetwork
- 'host-project-subnet-shared-with-service-project'
הסרת המשאבים
אחרי שמסיימים את המדריך, אפשר למחוק את המשאבים שנוצרו, כדי שהם יפסיקו להשתמש במכסה ולצבור חיובים. בסעיפים הבאים מוסבר איך למחוק או להשבית את המשאבים האלו.
מחיקת התמונה
כדי למחוק את תמונות multiarch-helloworld ב-Artifact Registry, אפשר לעיין במאמר בנושא מחיקת תמונות.
מחיקת הפרויקט
הדרך הקלה ביותר לבטל את החיוב היא למחוק את הפרויקט שיצרתם בשביל המדריך.
כדי למחוק את הפרויקט:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
המאמרים הבאים
אפשר לעיין במדריכים נוספים בנושא Kubernetes Engine.
כדאי להעמיק את הקריאה ולהכיר דוגמאות לארכיטקטורות, תרשימים ושיטות מומלצות בנושאי Google Cloud. כל אלה זמינים במרכז הארכיטקטורה של Cloud.