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

Helm הוא מנהל החבילות של Kubernetes. הוא משתמש בתרשימים שמגדירים קבוצה של משאבי Kubernetes לפריסה.

במדריך למתחילים הזה נסביר איך:

  • יצירת מאגר פרטי ב-Artifact Registry
  • יצירת תרשים לדוגמה
  • אימות באמצעות המאגר
  • דחיפת התרשים למאגר
  • פריסת התרשים

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

  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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. 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
    

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