אחסון תרשימי Helm ב-Artifact Registry
Helm הוא מנהל החבילות של Kubernetes. ב-Artifact Registry אפשר לאחסן ולנהל תרשימי Helm במאגרי Docker כדי ליצור גרסאות של משאבי Kubernetes ולפרוס אותם. במדריך למתחילים הזה מוסבר איך ליצור מאגר פרטי, לארוז ולדחוף תרשים לדוגמה ולפרוס מהדורה לאשכול.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Google Kubernetes Engine APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Google Kubernetes Engine APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של תרשימי Helm במאגרי חבילות Docker ב-Artifact Registry, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM Artifact Registry Administrator (roles/artifactregistry.admin) בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בחירת מעטפת
כדי להשלים את המדריך למתחילים הזה, משתמשים ב-Cloud Shell או במעטפת המקומית.
- Cloud Shell
- Cloud Shell היא סביבת מעטפת לניהול משאבים שמתארחים ב- Google Cloud. הוא מגיע עם Docker, Helm ו-Google Cloud CLI, ממשק שורת הפקודה הראשי של Google Cloud.
- מעטפת מקומית
- אם אתם מעדיפים להשתמש במעטפת המקומית, עליכם להתקין את Docker ואת ה-CLI של gcloud בסביבה שלכם.
הפעלת Cloud Shell
כדי להפעיל את Cloud Shell:
עוברים אל Google Cloud המסוף.
לוחצים על הלחצן Activate Cloud Shell (הפעלת Cloud Shell):
.בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת. משתמשים בשורת הפקודה הזו כדי להריץ פקודות
gcloud.מתקינים את Helm 3.8.0 ואילך. בגרסאות קודמות של Helm, התמיכה בתרשימים בפורמט OCI היא תכונה ניסיונית.
מריצים את הפקודה
helm versionכדי לאמת את הגרסה.
הגדרת מעטפת מקומית
כדי להתקין את ה-CLI של gcloud ואת Helm:
מתקינים את ה-CLI של gcloud. כדי לעדכן התקנה קיימת, מריצים את הפקודה
gcloud components update.מתקינים את Helm 3.8.0 ואילך. בגרסאות קודמות של Helm, התמיכה בתרשימים בפורמט OCI היא תכונה ניסיונית.
מריצים את הפקודה
helm versionכדי לאמת את הגרסה.
יצירת מאגר
יוצרים מאגר Docker כדי לאחסן את תרשים הדוגמה למדריך למתחילים הזה.
המסוף
פותחים את הדף Repositories במסוף Google Cloud .
לוחצים על Create Repository (יצירת מאגר).
מציינים את
quickstart-helm-repoכשם המאגר.בוחרים ב-Docker כפורמט.
בקטע Location Type, בוחרים באפשרות Region ואז בוחרים את המיקום
us-west1.לוחצים על יצירה.
המאגר נוסף לרשימת המאגרים.
gcloud
מריצים את הפקודה הבאה כדי ליצור מאגר Docker חדש בשם
quickstart-helm-repoבמיקוםus-west1עם התיאור 'docker repository'.gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \ --location=us-west1 --description="Helm repository"מריצים את הפקודה הבאה כדי לוודא שהמאגר נוצר.
gcloud artifacts repositories list
כדי לקבל מידע נוסף על פקודות Artifact Registry, מריצים את הפקודה gcloud artifacts.
יצירת תרשים
במדריך למתחילים הזה, תיצרו תרשים לדוגמה בשם hello-chart.
- עוברים לספרייה שבה רוצים ליצור את התרשים.
מריצים את הפקודה הבאה כדי ליצור את התרשים:
helm create hello-chartHelm יוצר ספרייה בשם
hello-chartעם קבוצת ברירת מחדל של קובצי תרשימים. אחד הקבצים הוא Chart.yaml, שכולל מידע על התרשים.לארוז את התרשים בארכיון.
helm package hello-chart/Helm יוצר ארכיון בשם
hello-chart-0.1.0.tgzבאמצעות שם התרשים ומספר הגרסה ב-Chart.yaml.
אימות מול המאגר
כדי להעלות או להתקין תמונות, צריך לאמת את Helm ב-Artifact Registry.
Helm יכול להשתמש בהגדרות קיימות של מאגר בקובץ הגדרות של Docker. אם עדיין לא הגדרתם את Docker לשימוש עם Artifact Registry, תוכלו לבצע אימות באמצעות אסימון גישה במדריך למתחילים הזה.
למידע נוסף על אימות, ראו הגדרת אימות ל-Helm.
אימות באמצעות הגדרות Docker
כברירת מחדל, Helm תומך בהגדרות של מאגר בקובץ התצורה של Docker config.json. Helm מוצא את הגדרות המאגר במיקום ברירת המחדל או במיקום שצוין על ידי משתנה הסביבה DOCKER_CONFIG.
אם הגדרתם את Docker עם כלי עזר לפרטי כניסה כדי לבצע אימות ב-Artifact Registry, Helm משתמש בהגדרה הקיימת שלכם למאגרי Docker ב-Artifact Registry.
אימות באמצעות טוקן גישה
כדי לבצע אימות באמצעות טוקן גישה:
קבלת אסימון גישה כפרטי כניסה כשמבצעים אימות ל-Artifact Registry באמצעות Helm.
Linux / macOS
מריצים את הפקודה הבאה:
gcloud auth print-access-token | helm registry login -u oauth2accesstoken \ --password-stdin us-west1-docker.pkg.devWindows
מריצים את הפקודה הבאה:
gcloud auth print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ us-west1-docker.pkg.dev/PROJECT-ID/REPOSITORYכאשר:
-
oauth2accesstokenהוא שם המשתמש שבו צריך להשתמש כשמבצעים אימות באמצעות אסימון גישה. -
gcloud auth print-access-tokenהיא פקודת gcloud לקבלת אסימון הגישה. טוקן הגישה הוא הסיסמה לאימות.
-
האימות של Helm מול Artifact Registry הושלם. הכול מוכן, אפשר לדחוף את התרשים למאגר.
העלאת התרשים ל-Artifact Registry
אחרי שיוצרים את ארכיון התרשימים ומבצעים אימות למאגר Artifact Registry, אפשר להעביר את התרשים למאגר.
כדי לשלוח את התרשים, מריצים את הפקודה הבאה:
helm push hello-chart-0.1.0.tgz oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo
מחליפים את PROJECT במזהה הפרויקט. Google Cloud
Helm משתמש בערכים מ-Chart.yaml לתמונה:
- שם התרשים הוא שם התמונה:
hello-chart - גרסת התרשים היא תג התמונה:
0.1.0
Helm מחזיר פלט שדומה לדוגמה הבאה:
Login Succeeded
Pushed: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart:0.1.0
Digest: sha256:67a72...
מריצים את הפקודה הבאה כדי לוודא שהתרשים מאוחסן עכשיו במאגר:
gcloud artifacts docker images list us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo
הפלט של הפקודה אמור להיראות כך:
Listing items under project my-project, location us-west1, repository quickstart-helm-repo.
IMAGE: us-west1-docker.pkg.dev/my-project/quickstart-helm-repo/hello-chart
DIGEST: sha256:67a72...
CREATE_TIME: 2021-11-08T22:59:57
UPDATE_TIME: 2021-11-08T22:59:57
עכשיו אפשר לפרוס פריט תוכן באמצעות התרשים שמאוחסן ב-Artifact Registry.
פריסת התרשים
ב-Helm, מופע פרוס של האפליקציה נקרא release. אחרי שמוסיפים את המאגר להגדרת Helm, אפשר לפרוס מהדורה של התרשים.
יוצרים אשכול בשם
chart-clusterלפריסה באמצעות הפקודה:gcloud container clusters create --zone us-west1-a chart-clusterכשיוצרים את האשכול, הפקודה מחזירה סיכום שדומה לדוגמה הבאה:
kubeconfig entry generated for chart-cluster. NAME: chart-cluster LOCATION: us-west1-a MASTER_VERSION: 1.20.10-gke.1600 MASTER_IP: 34.66.36.211 MACHINE_TYPE: e2-medium NODE_VERSION: 1.20.10-gke.1600 NUM_NODES: 3 STATUS: RUNNINGמקבלים את פרטי הכניסה לאשכול כדי ש-
kubectlיוכל לגשת לאשכול:gcloud container clusters get-credentials --zone us-west1-a chart-clusterמריצים את הפקודה הבאה כדי לפרוס מהדורה של
hello-chartבאמצעות קובצי התרשים שחולצו באופן מקומי:helm install hello-chart oci://us-west1-docker.pkg.dev/PROJECT/quickstart-helm-repo/hello-chart --version 0.1.0הפקודה מחזירה סיכום של הפריסה:
NAME: hello-chart LAST DEPLOYED: Mon Nov 8 23:15:13 2021 NAMESPACE: default STATUS: deployed REVISION: 1
הצלחתם לפרוס פריט תוכן באמצעות התרשים שיצרתם והעברתם בדחיפה ל-Artifact Registry.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:
מוחקים את המאגר שיצרתם באמצעות הפקודה הבאה:
gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1מוחקים את האשכול שיצרתם:
gcloud container clusters delete --zone=us-west1-a chart-cluster
המאמרים הבאים
- מידע נוסף על עבודה עם תרשימים
- מידע נוסף על Helm
- אפשר גם לקרוא את המשאבים שלנו בנושא DevOps ולעיין בתוכנית המחקר שלנו.