מניפסטים של אפליקציות מאפשרים למפתחים לתעד את סביבת ההרצה של האפליקציה שלהם בצורה הצהרתית. הם מאפשרים פריסה עקבית וניתנת לשחזור של אפליקציות.
פורמט
קובצי המניפסט הם קובצי 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 תומך בשלושה סוגים שונים של בדיקות תקינות:
port(ברירת מחדל)httpprocess(או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.