רשימת חסימה של שירותים בהתאמה אישית
כברירת מחדל, הכלי Migrate to Containers משבית שירותים לא נחוצים במכונה וירטואלית כשמעבירים אותה לקונטיינר. לפעמים השירותים האלה גורמים לבעיות במאגר התגים שהועבר, או שלא צריך אותם בהקשר של מאגר תגים.
אפשר גם להגדיר רשימה מותאמת אישית של שירותים להשבתה במאגר תגים שהועבר באמצעות רשימת חסימה בהתאמה אישית. באמצעות רשימת חסימה, אתם יכולים לציין שירות אחד או יותר שיושבתו במאגר שהועבר.
הגדרת רשימת החסימות
מגדירים את רשימת החסימה המותאמת אישית בקובץ .yaml, בפורמט הבא:
service_list:
- name: <var>group-name-1</var>
services:
- <var>service-name</var>
- name: <var>group-name-2</var>
services:
- <var>service-name</var>
- <var>ervice-name</var>
כאשר:
- קבוצות הן אוסף לוגי של שירותים, כך שאפשר לאסוף שירותים דומים בקבוצה אחת. מציינים ערך מחרוזת כלשהו לשם הקבוצה.
- שם השירות מציין את השירות שצריך להשבית במאגר התגים שהועבר.
לדוגמה, מגדירים את הקובץ my-blocklist.yaml כך:
service_list:
- name: lvm-related
services:
- lvm2-lvmetad
- name: hardware-related
services:
- microcode
- microcode.ctl
החלת רשימת חסימה בהתאמה אישית
כדי להחיל רשימת חסימה מותאמת אישית על מאגר תגים:
יצירת Kubernetes
configmapשמכיל את רשימת החסימה והוספתו למפרט הפריסה של הקונטיינר.בשיטה הזו אתם יכולים להוסיף את רשימת החסימה בלי לבנות מחדש את מאגר התגים. עם זאת, צריך ליצור מחדש את
configmapבכל אשכול שמשמש לאירוח מאגר התגים.עורכים את קובץ Dockerfile של הקונטיינר ויוצרים מחדש את קובץ האימג' של הקונטיינר.
כדי להוסיף את רשימת החסימה, צריך לבנות מחדש את קובץ האימג' של הקונטיינר. מאחר שהרשימה החסומה כלולה עכשיו במאגר התגים, אין צורך לבצע הגדרות נוספות באשכול לפני הפריסה.
שימוש ב-configmap
כדי ליצור רשימת חסימה באמצעות configmap:
מעבירים את ה-VM של המקור לקונטיינר.
יוצרים קובץ blocklist .yaml כמו שמוצג למעלה, שבו מפורט השירות שרוצים להשבית. בדוגמה הזו, נותנים לקובץ את השם
my-blocklist.yaml.יוצרים
configmapמקובץ ה-YAML של רשימת החסימה:kubectl create configmap configmap-name --from-file=path-to-yaml
בדוגמה הזו, ה-configmap נקרא
blocklistcm:kubectl create configmap blocklistcm --from-file=./my-blocklist.yaml
צפייה ב-configmap:
kubectl describe configmaps
עורכים את
deployment_spec.yamlשנוצר כשמעבירים את מאגר התגים:vi deployment_spec.yaml
במפרט הפריסה, מוסיפים את הפרטים הבאים:
מוסיפים נפח חדש ל-
configmapבקטעvolumes:volumes: - configMap: name: blocklistcm # Name of the config map you created above. name: blocklistvol # Name of the configmap volume.מוסיפים את ה-configmap כנפח:
spec: containers: volumeMounts: - mountPath: /etc/bl # Mount path for the configmap volume. name: blocklistvol # Name of the configmap volume.מוסיפים משתנה סביבה חדש בשם
HC_CUSTOM_SERVICE_BLOCKLISTומציינים את הנתיב לקובץ ה-yaml של רשימת החסימה. שם משתנה הסביבה צריך להיותHC_CUSTOM_SERVICE_BLOCKLIST:containers: - image: container-image-location env: - name: HC_CUSTOM_SERVICE_BLOCKLIST value: "/etc/bl/my-blocklist.yaml"הנתיב שמוגדר על ידי הערך הוא שרשור של mountPath של ה-configmap ושם קובץ ה-yaml של רשימת החסימה,
my-blocklist.yaml.שומרים את הקובץ.
פורסים את הקונטיינר:
kubectl apply -f deployment_spec.yaml
אחרי פריסת מאגר התגים, אפשר לבדוק אותו כדי לוודא שהשירותים לא פועלים. לדוגמה:
# Get pod name. $ kubectl get pod # Connect to pod. $ kubectl exec -it POD_NAME -- /bin/bash # View running services. This step is OS dependent. For example: $ service --status-all```
עריכת קובץ Dockerfile
בקטע הזה מוסבר איך ליצור רשימת חסימה בהתאמה אישית על ידי עריכת קובץ ה-Dockerfile שנוצר במהלך ההעברה.
מעבירים את ה-VM של המקור לקונטיינר.
פותחים את קובץ ה-Dockerfile בכלי לעריכה.
מוסיפים את הפקודה
COPYהבאה כדי להוסיף את קובץ ה-YAML של רשימת החסימה למערכת הקבצים של הקונטיינר:COPY src dest
לדוגמה:
COPY my-blocklist.yaml /etc/mybl/my-blocklist.yaml
נתיב היעד יכול להיות כל נתיב בתוך מאגר התגים.
מוסיפים משתנה סביבה חדש בשם
HC_CUSTOM_SERVICE_BLOCKLISTומציינים את הנתיב לקובץ ה-YAML של רשימת החסימה, על סמך יעד הקובץ שצוין בפקודהCOPY. שם משתנה הסביבה צריך להיותHC_CUSTOM_SERVICE_BLOCKLIST:ENV HC_CUSTOM_SERVICE_BLOCKLIST /file-path
לדוגמה:
ENV HC_CUSTOM_SERVICE_BLOCKLIST /etc/mybl/my-blocklist.yaml
מעדכנים את קובץ האימג' של קונטיינר.
אופן העדכון של קובץ אימג' של קונטיינר תלוי בסביבת ה-build שלכם. אפשר להשתמש:
gcloudכדי ליצור את קובץ האימג' ולהעלות אותו ל-Container Registry כמו שמתואר במאמר מדריך למתחילים: יצירת גרסת build.docker buildכמו שמתואר במאמר Build and run your image .
אחרי שיוצרים את התמונה החדשה, פותחים את קובץ
deployment_spec.yamlבעורך כדי לעדכן את מיקום התמונה:spec: containers: - image: new-image-location
לדוגמה, new-image-location יכול להיות
gcr.io/my-project/my-new-image:v1.0אם השתמשתם ב-gcloudכדי ליצור את קובץ האימג' והעליתם אותו ל-Container Registry.פורסים את הקונטיינר:
kubectl apply -f deployment_spec.yaml
אחרי פריסת מאגר התגים, אפשר לבדוק אותו כדי לוודא שהשירותים לא פועלים. לדוגמה:
# Get pod name. $ kubectl get pod # Connect to pod. $ kubectl exec -it POD_NAME -- /bin/bash # View running services. This step is OS dependent. For example: $ service --status-all