קובץ מניפסט של אפליקציה

מניפסטים של אפליקציות מאפשרים למפתחים לתעד את סביבת ההרצה של האפליקציה שלהם בצורה הצהרתית. הם מאפשרים פריסה עקבית וניתנת לשחזור של אפליקציות.

פורמט

קובצי המניפסט הם קובצי YAML שנמצאים בספריית השורש של האפליקציה. חובה לתת להם את השם manifest.yml או manifest.yaml.

מניפסטים של אפליקציות Kf יכולים לכלול אלמנט יחיד ברמה העליונה: applications. רכיב applications יכול להכיל רשומה אחת או יותר של אפליקציה.

שדות של אפליקציות

השדות הבאים חוקיים לאובייקטים בקטגוריה applications:

שדה סוג תיאור
name string שם האפליקציה. שם האפליקציה צריך לכלול תווים אלפאנומריים באותיות קטנות ומקפים. הוא לא יכול להתחיל במקף.
path string הנתיב למקור של האפליקציה. ברירת המחדל היא הספרייה של המניפסט.
buildpacks string[] רשימה של buildpacks להחלה על האפליקציה.
stack string תמונת הבסיס שבה ישתמשו לאפליקציות שנוצרו באמצעות buildpack.
docker object אובייקט Docker. מידע נוסף זמין בקטע בנושא שדות Docker.
env map צמדי מפתח/ערך לשימוש כמשתני סביבה לאפליקציה ול-build.
services string[] רשימה של שמות מופעי שירות שיוגדרו אוטומטית לאפליקציה.
disk_quota quantity כמות הדיסק שהאפליקציה צריכה לקבל. ברירת המחדל היא 1GiB.
memory quantity כמות ה-RAM שמוקצה לאפליקציה. ברירת המחדל היא 1GiB.
cpu * quantity כמות המעבד (CPU) שצריך לספק לאפליקציה. ברירת המחדל היא 0.1 (עשירית מעבד).
instances int מספר המופעים של האפליקציה להפעלה. ברירת המחדל היא 1.
routes object רשימה של מסלולים שהאפליקציה צריכה להאזין להם. מידע נוסף זמין בקטע בנושא שדות של מסלולים.
no-route boolean אם המדיניות מוגדרת כ-True, לא ניתן יהיה לנתב את האפליקציה.
random-route boolean אם המדיניות מוגדרת כ-True, לאפליקציה תוקצה נתיב אקראי.
timeout int מספר השניות להמתנה עד שהאפליקציה תהיה תקינה.
health-check-type string סוג בדיקת תקינות לשימוש port, process, none או http. ברירת מחדל: port
health-check-http-endpoint string נקודת הקצה לטירגוט כחלק מבדיקת התקינות. בתוקף רק אם health-check-type הוא http.
command string הפקודה שמפעילה את האפליקציה. אם היא מסופקת, היא תועבר לנקודת הכניסה של הקונטיינר.
entrypoint * string הגדרה שמשנה את נקודת הכניסה של מאגר האפליקציות.
args * string[] מחליף את הארגומנטים של מאגר האפליקציות.
ports * object רשימה של יציאות לחשיפה במאגר. אם מספקים ערך, המערכת משתמשת בערך הראשון ברשימה הזו כיציאת ברירת המחדל.

‫† ייחודי ל-Kf

שדות Docker

השדות הבאים חוקיים לאובייקטים מסוג application.docker:

שדה סוג תיאור
image string תמונת ה-Docker שבה רוצים להשתמש.

שדות של מסלולים

השדות הבאים חוקיים לאובייקטים מסוג application.routes:

שדה סוג תיאור
route string נתיב לאפליקציה, כולל שם המארח, הדומיין והנתיב.
appPort int (אופציונלי) יציאה מותאמת אישית באפליקציה שאליה התנועה תנותב.

שדות של ניוד

השדות הבאים חוקיים לאובייקטים מסוג application.ports:

שדה סוג תיאור
port int היציאה לחשיפה בקונטיינר של האפליקציה.
protocol string הפרוטוקול של היציאה לחשיפה. הערך חייב להיות tcp, ‏ http או http2. ברירת מחדל: tcp

דוגמאות

אפליקציה מינימלית

זוהי הגדרת manifest בסיסית שתבנה אפליקציה על ידי זיהוי אוטומטי של חבילת ה-buildpack על סמך המקור שהועלה, ותפרוס מופע אחד שלה.

---
applications:
- name: my-minimal-application

אפליקציה פשוטה

זהו מניפסט מלא של אפליקציית Java מסורתית יותר.

---
applications:
- name: account-manager
  # only upload src/ on push
  path: src
  # use the Java buildpack
  buildpacks:
  - java
  env:
    # manually configure the buildpack's Java version
    BP_JAVA_VERSION: 8
    ENVIRONMENT: PRODUCTION
  # use less disk and memory than default
  disk_quota: 512M
  memory: 512M
  # bump up the CPU
  cpu: 0.2
  instances: 3
  # make the app listen on three routes
  routes:
  - route: accounts.mycompany.com
  - route: accounts.datacenter.mycompany.internal
  - route: mycompany.com/accounts
  # set up a longer timeout and custom endpoint to validate
  # when the app comes up
  timeout: 300
  health-check-type: http
  health-check-http-endpoint: /healthz
  # attach two services by name
  services:
  - customer-database
  - web-cache

Docker App

‫Kf יכולה לפרוס קובצי Docker וגם אפליקציות שפריסתן מוגדרת בקובץ מניפסט. אפליקציות Docker האלה חייבות להאזין למשתנה הסביבה PORT.

---
applications:
- name: white-label-app
  # use a pre-built docker image (must listen on $PORT)
  docker:
    image: gcr.io/my-company/white-label-app:123
  env:
    # add additional environment variables
    ENVIRONMENT: PRODUCTION
  disk_quota: 1G
  memory: 1G
  cpu: 2
  instances: 1
  routes:
  - route: white-label-app.mycompany.com

אפליקציה עם כמה יציאות

לאפליקציה הזו יש כמה יציאות לחשיפה של מסוף Admin, אתר ושרת SMTP.

---
applications:
- name: b2b-server
  ports:
  - port: 8080
    protocol: http
  - port: 9090
    protocol: http
  - port: 2525
    protocol: tcp
  routes:
  - route: b2b-admin.mycompany.com
    appPort: 9090
  - route: b2b.mycompany.com
    # gets the default (first) port

סוגים של בדיקות תקינות

‫Kf תומך בשלושה סוגים שונים של בדיקות תקינות:

  1. port (ברירת מחדל)
  2. http
  3. process (או none)

port ו-http מגדירים בדיקת מוכנות ומצב פעילות של Kubernetes כדי לוודא שהאפליקציה מוכנה לפני שליחת תנועה אליה.

בדיקת התקינות port תוודא שהיציאה שנמצאה ב-$PORT נמצאת בהאזנה. ב-Kf נעשה שימוש בבדיקת TCP.

במסגרת http בדיקת תקינות המערכת ייעשה שימוש בערך שהוגדר ב-health-check-http-endpoint כדי לבדוק את תקינות האפליקציה. מתחת לפני השטח ‫Kf משתמש בבדיקת HTTP.

בprocess בדיקת תקינות נבדק רק אם התהליך שפועל בקונטיינר פעיל. היא לא מגדירה בקשה לבדיקת תקינות מוכנות או בקשה לבדיקת תקינות מצב פעילות של Kubernetes.

הבדלים ידועים

אלה ההבדלים הידועים בין מניפסטים של Kf לבין מניפסטים של CF:

  • ‫Kf לא תומך בשדות מניפסט של CF שהוצאו משימוש. הנתונים האלה כוללים את כל השדות ברמת הבסיס של המניפסט (חוץ מהשדות של האפליקציות) ואת שדות הניתוב.
  • ב-Kf אין תמיכה בשדות הבאים במניפסט v2:
    • docker.username
  • ‫Kf לא תומך בזיהוי אוטומטי של יציאות עבור קונטיינרים של Docker.