Table of Contents
Containerization יש בצורת יסודית כיצד ארגונים בונים, ספינה, ויישומים לרוץ.Docker ביסס את תקן עבור תוכנת אריזה לתוך קל משקל, מיכלים ניידים, בעוד OpenShift, Red Hat's Enterprise Kubernetes פלטפורמה, מספק את התזמורת, אבטחה וכלי מפתח הדרושים כדי להפעיל את המכולות האלה בקנה מידה.
הבנה של Docker and Containerization
Docker הוא יותר מסתם כלי - הוא פלטפורמה לפיתוח, משלוח, ויישומים בתוך מיכלים. Containers לארוז יישום עם התלויות שלו (ספריות, קבצים תצורה, בינאריות) ליחידה סטנדרטית אחת.זה מבטיח כי היישום פועל באופן עקבי על פני התפתחות, ממריצים, וסביבות ייצור, חיסול "זה עובד על המכונה שלי" הבעיה.
במרכזו של דוקר הוא ה-Docker Engine, זמן ריצה שמנהל מכולות על מערכת הפעלה מארחת.Docker משתמש בארכיטקטורה של שירות לקוחות-server שבו הלקוח Docker מתקשר עם ה- Docker daemon כדי לבנות, לרוץ, ולנהל מכולות.תמונות, המוגדרת על ידי Dockerfiles, לשמש כתבניות לקריאה בלבד כי הם שכבה עבור יעילות. כאשר מיכל מתחיל שכבת מצעים, הוא פתח שכבה מצורף, מאפשר שליטה מהירה.
עבור ארגונים, דוקר מספק מספר יכולות קריטיות:
- (ב) ⁇ :0) ⁇ : כל מיכל פועל במרחב המשתמש המבודד שלו, שיפור בקרת האבטחה והמשאבים.
- (FLT:0)Portability: VisFLT:1 Containers לרוץ על כל מערכת הפעלה התומכת Docker, כולל לינוקס, Windows ו- MacOS, ובכל סביבה (על-ידי-premises, Cloud, היברידית).
- (ב) [15] , ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) ,Rapid Iteration:FLT:1 Developers יכול לבנות, לבדוק ולהפיץ יישומים מקוטבים במהירות, תמיכה באינטגרציה רציפה ומשלוח מתמשך (CI/CD).
עם זאת, דוקר לבדו אינו מספיק לניהול מאות או אלפי מכולות על פני אשכול מכונות.זה המקום שבו תזדורות מגיעה, ו OpenShift מציעה פתרון ברמה ארגונית שנבנה על Kubernetes.
OpenShift: Enterprise Kubernetes Platform
OpenShift היא הפצתו של רד האט של Kubernetes, המוגברת עם תכונות נוספות שמטפלים בצרכים של פעולות IT, מפתחי מפתח וצוותי אבטחה.בעוד Kubernetes מספקת את שכבת התזמורת הבסיסית - מכולות מכווצות, פריסות מדרגות, ניהול רשתות ואחסון - Open עוטפות אותה עם כלים ידידותיים למפתחים, קונסולה, יכולות בנויות /CD, ואבטחה קשה.
מרכיבים מרכזיים של OpenShift כוללים:
- (בתמונה:0) מקור-ל-תצלום (S2I): אנדרל 1) כלי אשר בונה באופן אוטומטי תמונות מכולה קוד מקור מבלי לדרוש דוקרפטה, אם כי הוא תומך באופן מלא בדוגמת דוקרטים מותאמים אישית.
- (FLT:0) Integrated Register:BuildFLT:1 , OpenShift כולל רישום תמונות של מיכל פנימי לאחסון וניהול תמונות, צמצום ההסתמכות על רשם חיצוני.
- (FLT:0)Routing and Network:FLT:1 OpenShift מנהלת תנועה תוקפנית עם נתב מובנה-in HAProxy ומספק גילוי DNS פנימי ושירות.
- (FLT:0) מגבלות ההקשר (SCCs): ⁇ 1 אלה מחליפים את מדיניות האבטחה של Kubernetes Pod Security, המציעים שליטה גריפיתית על מה שיכול לעשות (למשל, לרוץ כשורש, גישה למשאבי חשמל).
- (ב) קונסולת ה-FLT:0) קונסולת ה-Developer: A Web UI שמפשטת פריסה, ניטור וניהול יישומים.
- (ב) ,0)OperatorHub:FLT:1 A קטלוג של מפעילי עבור ניהול מחזור חיים מורכב של יישומים.
OpenShift מיועד לארגונים הדורשים ריבוי, עמידה וזמינות גבוהה.זה משלב עם LDAP, Active Directory, וספקי זהות אחרים.זה גם מספק ניטור מובנה ומיקום באמצעות Prometheus, Grafana, ו-Allastsearch / Fluentd / Kibana ערימות.
עקבו אחרי OpenShift
באמצעות Docker with OpenShift הוא פשוט כי OpenShift בנוי על Kubernetes ו- Natively מבין תמונות מכולות.השילוב מתרחש במספר רמות: בניית תמונות, אחסון תמונות, פריסת עומסי עבודה.
תמונות
למפתחים יש שתי דרכים עיקריות ליצור תמונות מכולות עבור OpenShift:
- (FLT:0)Dockerfile בונה: FLT:1ir לכתוב דוקרפטה, ולאחר מכן להשתמש במערכת OpenShift או Docker CLI כדי לבנות תמונה. OpenShift יכול לרוץ Docker לבנות בתוך הקובע באמצעות תצורה של בנייה המתייחסת ל-Dockerfile. שיטה זו מעניקה שליטה מלאה על שכבות התמונה.
- (FLT:0) מקור-to-תצלום (S2I): ההרחבה 1 (S2I) היא מסגרת שלוקחת קוד מקור יישום וזריקת אותו לתוך תמונה בסיסית המכילה את זמן הריצה.לדוגמה, אפליקציית Node.js ניתן לבנות על ידי הצבעה OpenShift ל- Git repository; OpenShift תמשוך את תמונת S2I בונה, ליצור קוד, אם כי הוא לא נדרש באופן אוטומטי.
שתי הגישות יוצרות תמונות שנשמרות במרשם פנימי או חיצוני.הרישום המובנה של OpenShift מבוסס על פרוטוקול הרישום Docker V2, כך שהוא תואם לחלוטין ללקוחות דוקר.
תמונות
לאחר בנייה, תמונות נדחקות למרשם נגיש על ידי אשכול OpenShift.הרישום הפנימי הוא האפשרות הפשוטה ביותר עבור פריסות משולבות הדוקות. Alternatively, הצוותים עשויים להשתמש ברשומות חיצוניות כגון Docker Hub, Quay.io, Amazon ECR, או Google Container הרישום. OpenShift יכול למשוך תמונות מכל רישום התומך בפרוטוקול התמונה הסטנדרטית.
המונחים: workloads
ברגע שהתמונה זמינה, פריסת זה על OpenShift היא עניין של יצירת משאב Kubernetes כגון Deployment, DeploymentConfig (OpenShift-specific), או Pod. קונסולת האינטרנט הפתוחה או CLI (SIRLT:0) מפשטת תהליך זה.מפתחים יכולים להשתמש ב"דפוס תמונה" כדי לבחור תמונה מרישום, מפרט הסביבה, ולחשוף את המשאבים באמצעות נתיבים.
שלב-בי-Step: ניתוק דוקר על OpenShift
בואו נלך דרך מחזור פריסה שלם, מכתיבה דוקרפטה כדי לחשוף את היישום באופן חיצוני.
שלב 1: יצירת תמונה Docker
כתוב דוקרפטה עבור היישום שלך.דוגמה עבור יישום אינטרנט פשוט Python:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 8080
CMD ["python", "app.py"]
לבנות את התמונה באופן מקומי באמצעות (FLT:2)
שלב 2: לדחוף לרישום
היכנסו ודחפו את התמונה למרשם הפנימי של OpenShift. First, היכנסו לרישום של לקוח דוקר שלכם:
docker login -u $(oc whoami) -p $(oc whoami -t) default-route-openshift-image-registry.<cluster-domain>
ואז תייג ודחוף:
docker tag my-python-app:1.0 default-route-openshift-image-registry.<cluster-domain>/<project-name>/my-python-app:1.0
docker push default-route-openshift-image-registry.<cluster-domain>/<project-name>/my-python-app:1.0
שלב 3: ⁇ על OpenShift
שימוש ב-CLI:
oc new-app my-python-app:1.0 --name=my-app --as-deployment-config
או ליצור עומק באופן ידני באמצעות YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- image: default-route-openshift-image-registry.<cluster-domain>/<project>/my-python-app:1.0
name: my-app
ports:
- containerPort: 8080
ויקרא י"ד ויקרא יט" (בראשית י"ד)
שלב 4: חשיפת הבקשה
צור שירות וכביש כדי להפוך את האפליקציה לנגישה חיצונית:
oc expose deployment my-app --port=8080
oc expose service my-app
המסלול מספק כתובת אתר ציבורי. OpenShift's נתב מטפל בהפסקת TLS ובמאזן עומס.
שלב 5: ניהול סקר
קנה מידה מספר ההעתק באופן דינמי:
oc scale deployment my-app --replicas=5
או להגדיר רכב חסכוני באמצעות HorizontalPodAutoscaler.
היתרונות של שימוש ב-OpenShift
יציבות ושקיפות
תמונות דוקר הן חפצים בלתי-מחושים המבודדים את הסביבה בזמן הריצה.כאשר הם פרוסים על OpenShift, התמונות האלה פועלות זהה אם במחשב הנייד של מפתח, אשכול מבחן, או מרכז נתונים ייצור.
ניהול מחזור חיים אוטומטי
OpenShift Automates משימות תפעוליות רבות אשר עוללו בעדכונים של דוקר גולמי, פריסות צניחות, בדיקות בריאות, ו- self-healing נבנות-in. לדוגמה, אם מכולה, OpenShift מחדש באופן אוטומטי את זה.אם צומת נכשל, לוח הזמנים מפיץ מחדש מיכלים לנקודות בריאות.
ביטחון ארגוני
אבטחה היא רבת ערך בסביבות ארגוניות. OpenShift לאכוף כי מכולות לרוץ תחת מגבלות ביטחוניות מוגבלות כברירת מחדל.זה אומר כי מכולות לא יכולות לרוץ כשורש, להשתמש במיקומים שמות מארחים, או במדריכים רגישים, אלא אם כן מותר במפורש. OpenShift גם משלבת עם כלים סריקה פגיעים כדי לבדוק תמונות עבור CVEs ידועים לפני פריסה.
סקלאה
OpenShift ממנפיק את ה-CPU האופקי של Kubernetes ו-Ccaling Auto-scaling.You יכול להגדיר CPU או סף זיכרון אשר מעוררים קשקשים אוטומטיים או בקנה מידה, בשילוב עם מיכלים קלים של Docker, הגדלה מתרחשת תוך שניות ולא דקות כמו עם VMs.
פיתוח Productivity
OpenShift's Source-to- Image תכונה מאיצה את הפיתוח על ידי ומאפשרת למפתחים לדחוף קוד ישירות אל המקבץ ללא כתיבת Dockerfiles.מערכת הבנייה המשולבת יכולה לגרום לדימוי אוטומטי בונה ופריסה מ- Git להתחייב, המאפשרת לולאה משוב הדוק.בנוסף, ה-מפתח מספק תצוגות טופולוגיות, יומניות, ומסופים.
Best Practices for Enterprise Deployment
צילום: Tagging
תמיד להשתמש תגים ספציפיים, גרסאות לתמונות Docker שלך.הימנעות מהתג של ה-FLT:10 כי זה שובר את האפשרות. השתמש בגרסה סמנטית או לבצע ישים.
מדיניות אבטחה
Define Security Context Constraints (SCC) שמתאים את היציבה שלך.התחל עם ה-SCC המוגבל ורק להסלים זכויות כאשר יש צורך. integrate עם סורקי תמונות של מכולות כמו Clair או Red Hat Advanced Cluster Security כדי לסרוק תמונות לפני הפריסה.
שילוב CI/CD
Automate בונה, בדיקות ופריסה באמצעות OpenShift Pipelines (הנבנה על TEK) או ג'נקינס. A צינורות טיפוסי: (1) מפתח דוחף קוד לג'יט, (2) OpenShift מפעיל S2I או Docker לבנות, (3) התמונה החדשה נדחקת באופן אוטומטי לרישום הפנימי, (4) פריסה היא מעודכנת, ו (5) בדיקות בריאות מאמתות את ה-Rulout.
דוגמה של משאב צינור טקטון אשר נבנה מ Dockerfile:
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: build-docker-image
spec:
workspaces:
- name: source
steps:
- name: build
image: gcr.io/kaniko-project/executor:latest
args:
- --context=$(workspaces.source.path)
- --destination=image-registry.openshift-image-registry.svc:5000/<project>/my-app:$(params.tag)
עקבו אחרי and Logging
ערימה ניטור של OpenShift (Prometheus ו Grafana) לאסוף מדדים על CPU, זיכרון, דיסק I / O, ושימוש ברשת. להגדיר התראות עבור צריכת משאבים לא נורמלית. עבור יומני, לפרוס את מפעיל המחקר הפתוחShift או ליטומים קדימה כדי חיצוני SIEM. Correlate ⁇ s עם מדדים עבור ניתוח שורש מהיר יותר.
ניהול משאבים
הגדר בקשות משאבים ומגבלות לכל מיכל. OpenShift משתמשת אלה כדי לקבוע את הפודונים באופן אינטליגנטי ולמנוע רעב במשאב.ללא גבולות, מיכל אחד יכול לצרוך את כל המשאבים ללא צומת, המשפיע על עומסי עבודה אחרים.דוגמה YAML snippet:
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
אחסון רשת ו- Persistent Storage
עבור יישומים הדורשים אחסון מצבני, השתמש ב- OpenShift’s PersistentVolumeClaims (PVCs) המגובה על ידי מעמד אחסון (למשל, NFS, Ceph, AWS EBS) אחסון מסווגות באופן הולם.עבור רשתות, מנף את OpenShiftways עבור HTTP /S תנועה ושירותים חיצוניים עבור איזון פנימי.
גיבוי ואסון התאוששות
באופן קבוע לגבות תצורה פתוחה של OpenShift (צילומים מצופה), נתונים PVC ותוכן רישום תמונות. ליישם תשתית כגישה קוד באמצעות כלים GitOps כמו ארגוCD כדי לשחזר סביבות במהירות.
מקרים אמיתיים לשימוש
Microservices Decomposition
ארגונים מודרניים יישומים מונוליטיים לעתים קרובות לשבור אותם microservices. Docker מכולות מארחים כל שירות באופן עצמאי, ו OpenShift מארגן את המערכת כולה, ניהול גילוי שירות, איזון עומס ותקשורת בין שירות.
סודיות ענן היברידית
OpenShift פועל על ספקי ענן מרכזיים (AWS, Azure, GCP) ועל תמונות Docker ניתן לפרוס בכל מקום פתוח שft פועל, המאפשר חוויה עקבית על פני סביבות היברידיות.זה קריטי לארגונים עם דרישות ריבונות נתונים או אסטרטגיות מרובות עננים.
CI/CD for Machine Learning
צוותי מדעי נתונים יכולים להטמיע מודלים של ML באמצעות Docker ולהפיץ אותם ב- OpenShift כפונקציות ללא שרת (באמצעות OpenShift Serverless/Knative) זה מאפשר מודל בקנה מידה עם קנה מידה אוטומטי ל-אפס כאשר לא בשימוש.
מסקנה
Docker ו-OpenShift מספקים פלטפורמה רבת עוצמה, ייצור-התזמנת המכנית שעומדת בדרישות של IT ארגוני.Docker מספקת תמונות מחשביות קלות לבנות וגרסה, בעוד OpenShift מוסיף את התזמורת, האבטחה, וחוויית המפתח הדרושה כדי להפעיל את התמונות בקנה מידה עם ביטחון.על ידי מעקב אחר השלבים המשולבים ושיטות הטובות ביותר המפורטות במאמר זה, ארגונים יכולים להאיץ את המסירה, ניצול משאבים, ניצול, וחוויית פיתוח אבטחה חזקה או יציבה.
(ב) למידע מעמיק יותר, מתייחס לתיעוד הרשמי:0 (Docker DocscioFLT:1, 2 פתח:2 OpenShift DocsofLT 3:, and FLT:4 Red Hat OpenShift Product Pageeur PageirFLT:5).