אחסון תרשימי Helm ב-Artifact Registry

‫Helm הוא מנהל החבילות של Kubernetes. ב-Artifact Registry אפשר לאחסן ולנהל תרשימי Helm במאגרי Docker כדי ליצור גרסאות של משאבי Kubernetes ולפרוס אותם. במדריך למתחילים הזה מוסבר איך ליצור מאגר פרטי, לארוז ולדחוף תרשים לדוגמה ולפרוס מהדורה לאשכול.

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

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. 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.

  4. Verify that billing is enabled for your Google Cloud project.

  5. 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.enable permission. 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.

    Enable the APIs

  6. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. 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.

  8. Verify that billing is enabled for your Google Cloud project.

  9. 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.enable permission. 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.

    Enable the APIs

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות ליצירה ולניהול של תרשימי 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:

  1. עוברים אל Google Cloud המסוף.

    ‫Google Cloud console

  2. לוחצים על הלחצן Activate Cloud Shell (הפעלת Cloud Shell):  .

    בחלק התחתון של המסוף ייפתח סשן של Cloud Shell בתוך מסגרת. משתמשים בשורת הפקודה הזו כדי להריץ פקודות gcloud.

  3. מתקינים את Helm 3.8.0 ואילך. בגרסאות קודמות של Helm, התמיכה בתרשימים בפורמט OCI היא תכונה ניסיונית.

    מריצים את הפקודה helm version כדי לאמת את הגרסה.

הגדרת מעטפת מקומית

כדי להתקין את ה-CLI של gcloud ואת Helm:

  1. מתקינים את ה-CLI של gcloud. כדי לעדכן התקנה קיימת, מריצים את הפקודה gcloud components update.

  2. מתקינים את Helm 3.8.0 ואילך. בגרסאות קודמות של Helm, התמיכה בתרשימים בפורמט OCI היא תכונה ניסיונית.

    מריצים את הפקודה helm version כדי לאמת את הגרסה.

יצירת מאגר

יוצרים מאגר Docker כדי לאחסן את תרשים הדוגמה למדריך למתחילים הזה.

המסוף

  1. פותחים את הדף Repositories במסוף Google Cloud .

    פתיחת הדף Repositories

  2. לוחצים על Create Repository (יצירת מאגר).

  3. מציינים את quickstart-helm-repo כשם המאגר.

  4. בוחרים ב-Docker כפורמט.

  5. בקטע Location Type, בוחרים באפשרות Region ואז בוחרים את המיקום us-west1.

  6. לוחצים על יצירה.

המאגר נוסף לרשימת המאגרים.

gcloud

  1. מריצים את הפקודה הבאה כדי ליצור מאגר Docker חדש בשם quickstart-helm-repo במיקום us-west1 עם התיאור 'docker repository'.

    gcloud artifacts repositories create quickstart-helm-repo --repository-format=docker \
    --location=us-west1 --description="Helm repository"
    
  2. מריצים את הפקודה הבאה כדי לוודא שהמאגר נוצר.

    gcloud artifacts repositories list
    

כדי לקבל מידע נוסף על פקודות Artifact Registry, מריצים את הפקודה gcloud artifacts.

יצירת תרשים

במדריך למתחילים הזה, תיצרו תרשים לדוגמה בשם hello-chart.

  1. עוברים לספרייה שבה רוצים ליצור את התרשים.
  2. מריצים את הפקודה הבאה כדי ליצור את התרשים:

    helm create hello-chart
    

    ‫Helm יוצר ספרייה בשם hello-chart עם קבוצת ברירת מחדל של קובצי תרשימים. אחד הקבצים הוא Chart.yaml, שכולל מידע על התרשים.

  3. לארוז את התרשים בארכיון.

    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.

אימות באמצעות טוקן גישה

כדי לבצע אימות באמצעות טוקן גישה:

  1. קבלת אסימון גישה כפרטי כניסה כשמבצעים אימות ל-Artifact Registry באמצעות Helm.

    ‫Linux / macOS

    מריצים את הפקודה הבאה:

    gcloud auth print-access-token | helm registry login -u oauth2accesstoken \
    --password-stdin us-west1-docker.pkg.dev
    

    Windows

    מריצים את הפקודה הבאה:

    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, אפשר לפרוס מהדורה של התרשים.

  1. יוצרים אשכול בשם 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
    
  2. מקבלים את פרטי הכניסה לאשכול כדי ש-kubectl יוכל לגשת לאשכול:

    gcloud container clusters get-credentials --zone us-west1-a chart-cluster
    
  3. מריצים את הפקודה הבאה כדי לפרוס מהדורה של 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 על המשאבים שבהם השתמשתם בדף הזה:

  1. מוחקים את המאגר שיצרתם באמצעות הפקודה הבאה:

    gcloud artifacts repositories delete quickstart-helm-repo --location=us-west1
    
  2. מוחקים את האשכול שיצרתם:

    gcloud container clusters delete --zone=us-west1-a chart-cluster
    

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