בדף הזה מוסבר איך להגדיר שרת רישום קונטיינרים קיים ל-Google Distributed Cloud (תוכנה בלבד) ל-VMware.
הדף הזה מיועד לאדמינים, לארכיטקטים ולמפעילים שמגדירים, מנטרים ומנהלים את התשתית הטכנולוגית. מידע נוסף על תפקידים נפוצים ומשימות לדוגמה שאנחנו מתייחסים אליהם בתוכן זמין במאמר תפקידים נפוצים של משתמשי GKE ומשימות. Google Cloud
סקירה כללית
כברירת מחדל, במהלך יצירה או שדרוג של אשכול, Google Distributed Cloud מושך תמונות מערכת מ-gcr.io/gke-on-prem-release באמצעות חשבון השירות של רכיב הגישה.
אופציונלי: אתם יכולים לספק שרת רישום קונטיינרים משלכם, כדי שתמונות המערכת יימשכו משרת הרישום הפרטי שלכם במקום זאת.
Google Distributed Cloud לא תומך במאגרי תמונות של קונטיינרים לא מאובטחים. כשמפעילים את שרת רישום המאגרים, צריך לספק אישור ומפתח. האישור יכול להיות חתום על ידי רשות אישורים (CA) ציבורית, או שהוא יכול להיות חתום על ידי עצמו.
יצירת שרת של מאגר תגים
במאמר הפעלת מאגר נתונים שנגיש מבחוץ במסמכי התיעוד של Docker מוסבר איך ליצור שרת של מאגר נתונים.
הגדרת ה-Registry
כדי להשתמש במאגר פרטי של קונטיינרים, אפשר להשתמש בכלי gkectlלשליטה בשורת הפקודה או ב-Terraform.
gkectl
מוסיפים את הקטע
privateRegistryלקובץ ההגדרות של אשכול הניהול לפני שיוצרים את האשכול.כשממלאים את הקטע הזה:
כשמריצים את הפקודה
gkectl prepareלפני יצירה או שדרוג של אשכול, הפקודה מחלצת את התמונות מקובץ ה-tar שצוין בשדהbundlePathבקובץ ההגדרות של אשכול האדמין, ומעבירה את התמונות לשרת הרישום הפרטי.במהלך יצירת האשכול או השדרוג שלו, תמונות המערכת נשלפות משרת הרישום הפרטי שלכם.
אם הרשת שלכם מוגנת על ידי שרת proxy, צריך למלא את הקטע
proxy.
Terraform
- פועלים לפי השלבים בכרטיסייה Terraform במאמר יצירת אשכול אדמין כדי למלא את קובץ ההגדרות של אשכול האדמין.
מוסיפים את השורות הבאות לקובץ התצורה של אשכול הניהול:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }מחליפים את מה שכתוב בשדות הבאים:
ADDRESS: כתובת ה-IP או שם הדומיין המוגדר במלואו (FQDN) של המכונה שמריצה את המאגר הפרטי.
CA_CERT: נתוני אישור ה-CA של המפתח הציבורי, אבל כל השורות החדשות מוחלפות במחרוזת\n.
מריצים את הפקודה הבאה כדי להחליף את השורות החדשות ב-
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHמחליפים את הערך ב-
PUBLIC_KEY_PATHבנתיב למפתח הציבורי.מעתיקים את הפלט של הפקודה הקודמת ומדביקים אותו במשתנה
CA_CERTשל placeholder.
אם הרשת שלכם נמצאת מאחורי שרת proxy, צריך להוסיף את הדברים הבאים:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }מחליפים את מה שכתוב בשדות הבאים:
PROXY_SERVER_ADDRESS: כתובת ה-HTTP של שרת ה-Proxy. צריך לכלול את מספר היציאה גם אם הוא זהה ליציאת ברירת המחדל של הסכימה.
BYPASS_LIST: רשימה מופרדת בפסיקים של כתובות IP, טווחי כתובות IP, שמות מארחים ושמות דומיינים שלא אמורים לעבור דרך שרת ה-Proxy.
דוגמה:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"כש-Google Distributed Cloud שולח בקשה לאחת מהכתובות, המארחים או הדומיינים האלה, הבקשה עוקפת את שרת ה-proxy ונשלחת ישירות ליעד.
ממשיכים עם השלבים בכרטיסייה Terraform במאמר יצירת אשכול אדמין כדי לאמת את קובץ התצורה והתוכנית של Terraform, ואז יוצרים את אשכול האתחול.
כשמריצים את הפקודה
gkectl register bootstrap,gkectlמבקש להזין את שם המשתמש ואז את הסיסמה של הרישום הפרטי.
במהלך יצירת האשכול, תמונות המערכת נמשכות משרת הרישום הפרטי שלכם.
מגבלות בשימוש באשכולות מתקדמים ובחבילה המלאה
יש שני חבילות של Google Distributed Cloud: מלאה ורגילה. כדי לדעת איזו חבילה מותקנת בתחנת העבודה של האדמין, בודקים את השדה bundlePath בקובץ ההגדרות של אשכול האדמין. אם שם הקובץ מסתיים ב--full, החבילה המלאה נמצאת בתחנת העבודה של האדמין. אם שם הקובץ לא מסתיים ב--full, חבילת ההתקנה הרגילה נמצאת בתחנת העבודה של האדמין.
אם יצרתם את תחנת העבודה לאדמין באמצעות הפקודה gkeadm, הפקודה יוצרת את מכונת ה-VM של תחנת העבודה לאדמין עם החבילה המלאה, ומגדירה את השדה bundlePath בקובץ ההגדרות של אשכול האדמין.
אם האפשרות advanced cluster מופעלת, יש מגבלות על השימוש בחבילה המלאה עם רישום פרטי, באופן הבא:
גרסה 1.31: החבילה המלאה לא נתמכת ברישום פרטי. כדי להשתמש במרשם פרטי באשכול מתקדם:
- מורידים את חבילת הגודל הרגיל לתחנת העבודה של האדמין.
- מעדכנים את שם הקובץ בשדה
bundlePathבקובץ התצורה של אשכול הניהול.
גרסה 1.32: השימוש בחבילה המלאה נתמך, אבל הפקודה
gkectl prepareשולפת תמונות מ-gcr.io/gke-on-prem-releaseבמקום מקובץ ה-tar. עם זאת, הפקודה דוחפת את התמונות למאגר הפרטי שלכם, כך שתמונות המערכת נמשכות מהמאגר הפרטי במהלך יצירה או שדרוג של אשכול.
ההבדלים בין אשכולות רגילים לאשכולות מתקדמים
יש כמה הבדלים מרכזיים בין אשכול מתקדם לבין אשכול רגיל:
- כשמשתמשים במאגר פרטי, נראה שהתמונות נמשכות מ-
gcr.io, ולא משם המארח של המאגר הפרטי. השינוי הזה צפוי, למרות שהתמונות נמשכות בפועל משרת הרישום הפרטי שלכם. - שליפות של תמונות משתמשות בפרטי כניסה מקובץ
/etc/containerd/config.tomlבכל מכונה שמתחברת למאגר הפרטי, במקום בסודprivate-registry-credsבתוך האשכול. - לכל התמונות
gcr.io, האשכול מנסה קודם לשלוף ממאגר פרטי. אם התמונה לא נמצאת במאגר הפרטי, המערכת שולפת אותה מ-gcr.ioדרך האינטרנט. כדי למנוע את המעבר הזה לגיבוי, צריך להגדיר אתnoProxyאו להשתמש בכללים של חומת האש כדי לחסום את התעבורה שלgcr.io.
כדי לוודא שהתמונות נמשכות מהמקור הנכון, אפשר לעיין במאמר בנושא אימות התמונות שנמשכות משרת הרישום.
אימות התמונות שנשלפות משרת הרישום
הדרך שבה בודקים שהתמונות נמשכות משרת הרישום תלויה בהגדרה של אשכול מתקדם.
אם לא הפעלתם את האפשרות 'אשכול מתקדם', מריצים את הפקודה הבאה:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \ --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"מחליפים את
ADMIN_CLUSTER_KUBECONFIGבנתיב של קובץ ה-kubeconfig של אשכול האדמין.הפלט של הפקודה הזו מציג את כל התמונות באשכול. אתם יכולים לוודא שכל התמונות ב-Google Distributed Cloud מגיעות משרת הרישום שלכם.
אם האפשרות 'אשכול מתקדם' מופעלת, מבצעים את השלבים הבאים:
כדי לבדוק אם
containerdשולף תמונות מהמאגר המקומי, בודקים את התוכן של קובץ בשםconfig.toml, כמו שמוצג בשלבים הבאים:- מתחברים לצומת ובודקים את התוכן של הקובץ
/etc/containerd/config.toml. בודקים את השדה
plugins."io.containerd.grpc.v1.cri".registry.mirrorsבקובץconfig.tomlכדי לראות אם שרת הרישום מופיע בשדהendpoint.הקטע הבא הוא קטע מתוך קובץ
config.tomlלדוגמה.version = 2 root = "/var/lib/containerd" state = "/run/containerd" ... [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"] [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls] ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt' [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"] endpoint = ["http://privateregistry.io", "http://privateregistry2.io"] ...אם מראה הרישום מופיעה בשדה
endpoint, המשמעות היא שהצומת שולף תמונות ממראה הרישום ולא מ-Artifact Registry.
- מתחברים לצומת ובודקים את התוכן של הקובץ