בדף הזה מתואר תהליך ההעלאה של קובץ אימג' של קונטיינר אל Harbor, ופריסת קובץ האימג' הזה במופע של GDC Sandbox.
הכנה
פועלים לפי ההוראות במאמר חיבור למכונה כדי להתחבר למכונה עם גישה לשורת הפקודה של Linux. אפשר להתחבר לשער באמצעות Remote Desktop, או להריץ את הפקודה
sshuttleבמחשב Linux.צריך לבקש מאדמין ה-IAM בארגון להקצות לכם את התפקידים הבאים ברמת הפרויקט:
- אדמין של סודות (
secret-admin): נדרש כדי להפעיל במסוף GDC. - אדמין במרחב שמות (
namepspace-admin): נדרש לפריסת עומסי עבודה של קונטיינרים בפרויקט. - אדמין PNP גלובלי (
global-project-networkpolicy-admin): נדרש כדי ליצור ולנהל מדיניות רשת של פרויקטים באזורים שונים. - תפקיד הצפייה בפרויקט (
project-viewer): נדרש כדי לגשת למסוף GDC ול-CLI של Distributed Cloud. - Harbor Instance Viewer (
harbor-instance-viewer): נדרש כדי להציג ולבחור מופע של Harbor. - יצירת פרויקטים ב-Harbor (
harbor-project-creator): נדרשת כדי לגשת לפרויקט ב-Harbor ולנהל אותו.
- אדמין של סודות (
מגדירים משתני סביבה שישמשו בהוראות הבאות:
export TENANT_PROJECT=TENANT_PROJECT # Intended deployment project for the container workflow. export HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME # Harbor Container Registry instance name. export HARBOR_PROJECT=HARBOR_PROJECT # Container registry project name for your images. export AO_USER=AO_USER # Your user name in the instance, e.g.: fop-my-user@example.com. export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test. export DOCKER_CONFIG_PATH=DOCKER_CONFIG_PATH # Path to docker config file e.g.: /root/.docker/config.json.כדי ליצור מופע של מאגר Harbor, פועלים לפי ההוראות במאמר יצירת מופע של מאגר Harbor. לחלופין, אפשר להשתמש במופע Harbor של ארגז החול שנוצר מראש: מופע Harbor שמוגדר כברירת מחדל,
user-project, כבר פרוס בארגז החול של GDC,user-haas-instance, ואפשר להשתמש בו לפיתוח.export HARBOR_INSTANCE_NAME=user-haas-instance export TENANT_PROJECT=user-project export INSTANCE_URL=${HARBOR_INSTANCE_NAME}-${TENANT_PROJECT}.org-1.zone1.google.gdch.test
העלאת תמונה ל-Harbor
יוצרים פרויקט ב-Harbor לפי ההוראות במאמר יצירת פרויקט ב-Harbor.
דוגמה:
gdcloud harbor harbor-projects create HARBOR_PROJECT \ --project=TENANT_PROJECT \ --instance=HARBOR_INSTANCE_NAMEנכנסים ל-Docker. מתחילים בכניסה ל-Docker או ל-Helm באמצעות סודות של CLI.
מורידים או יוצרים את קובץ האימג' של הקונטיינר ופועלים לפי ההוראות של Google Distributed Cloud במודל Air-gapped כדי לדחוף קובץ אימג' ולדחוף אותו ל-Harbor.
לדוגמה, הנה תהליך עבודה לשליפה מ-Gitlab ולדחיפה אל Harbor:
נכנסים ומושכים ממאגר הקונטיינרים של Gitlab.
export GITLAB_ID=GITLAB_ID export GITLAB_PROJECT_NAME=GITLAB_PROJECT_NAME export GITLAB_IMAGE_PATH=registry.gitlab.com/GITLAB_ID/GITLAB_PROJECT_NAME docker login registry.gitlab.com docker pull ${GITLAB_IMAGE_PATH}מעבירים את תמונת Gitlab אל Harbor:
export TAG=demo-image docker tag ${TAG} ${GITLAB_IMAGE_PATH} docker push ${INSTANCE_URL}/${HARBOR_PROJECT}/${TAG}
פריסת אפליקציית קונטיינר
כדי ליצור סוד ולפרוס את האפליקציה, ממשיכים אל יצירת סוד למשיכת תמונות ב-Kubernetes.
יצירת מדיניות רשת
יוצרים מדיניות רשת כדי לאפשר את כל תעבורת הנתונים ברשת לפרויקט הדייר:
kubectl --kubeconfig GLOBAL_API_KUBECONFIG -n TENANT_PROJECT \ create -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: annotations: name: allow-all spec: ingress: - from: - ipBlock: cidr: 0.0.0.0/0 podSelector: {} policyTypes: - Ingress EOF
התחברות לאפליקציה
מייצאים את כתובת ה-IP של השירות:
export IP=`kubectl --kubeconfig=${KUBECONFIG} get service ${SERVICE_NAME} \ -n TENANT_PROJECT -o jsonpath='{.status.loadBalancer.ingress[*].ip}'`כדי להתחבר מהמכונה המקומית באמצעות
sshuttle, מריצים את הפקודה הבאה כדי ליצור מנהרת SSH. אם יש לכם סשן קיים שלsshuttleשיצרתם כשחיברתם את המופע, אתם צריכים לסיים את הסשן הזה לפני שתריצו את הפקודה הבאה:sshuttle -r zone1-org-1-data@GDC_SANDBOX_INSTANCE_NAME --no-latency-control \ --ssh-cmd 'gcloud compute ssh --project PROJECT_NAME --zone ZONE --tunnel-through-iap' \ 10.200.0.0/16 --dnsבודקים את השירות על ידי שליחת בקשת HTTP http://${IP}`:
curl http://${IP}