כדי להפעיל את Kf, צריך Kubernetes וכמה פרויקטים אחרים של OSS. חלק מהתלויות מסופקות על ידי שירותים שמנוהלים על ידי Google – לדוגמה, Google Kubernetes Engine (GKE) מספק Kubernetes.
תלויות
קבלת פרטים על CRD
Kf תומך בפקודת המשנה kubectl explain. היא מאפשרת לכם לראות את השדות ב-CRD של Kf כדי להבין איך ליצור אובייקטים של Kf באמצעות אוטומציה במקום באופן ידני באמצעות ה-CLI. הפקודה הזו מיועדת לשימוש עם Config Management כדי להפוך לאוטומטי את היצירה והניהול של משאבים כמו Spaces באשכולות רבים. אפשר להשתמש בה נגד כל רכיב kinds שמופיע בהמשך.
בדוגמה הזו, אנחנו בודקים את kind שנקרא space ב-CRD spaces:
kubectl explain space.specהפלט אמור להיראות כך:
$ kubectl explain space.spec
KIND: Space
VERSION: kf.dev/v1alpha1
RESOURCE: spec <Object>
DESCRIPTION:
SpaceSpec contains the specification for a space.
FIELDS:
buildConfig <Object>
BuildConfig contains config for the build pipelines.
networkConfig <Object>
NetworkConfig contains settings for the space's networking environment.
runtimeConfig <Object>
RuntimeConfig contains settings for the app runtime environment.
רכיבי Kf
Kf מתקין כמה משאבים מותאמים אישית ובקרי משלו של Kubernetes.
המשאבים המותאמים אישית משמשים למעשה כ-Kf API, והם משמשים את kf CLI כדי ליצור אינטראקציה עם המערכת. הבקרי Kf משתמשים ב-CRD כדי לתזמן את הרכיבים האחרים במערכת.
כדי לראות את ה-CRD שהותקנו ומשמשים את Kf, מריצים את הפקודה הבאה:
kubectl api-resources --api-group=kf.devהפלט של הפקודה הזו הוא:
NAME SHORTNAMES APIGROUP NAMESPACED KIND
apps kf.dev true App
builds kf.dev true Build
clusterservicebrokers kf.dev false ClusterServiceBroker
routes kf.dev true Route
servicebrokers kf.dev true ServiceBroker
serviceinstancebindings kf.dev true ServiceInstanceBinding
serviceinstances kf.dev true ServiceInstance
spaces kf.dev false Space
אפליקציות
אפליקציות מייצגות אפליקציה עם 12 גורמים שנפרסה ב-Kubernetes. הם כוללים את קוד המקור, ההגדרה והמצב הנוכחי של האפליקציה. האפליקציות אחראיות לביצוע התאמה בין:
- גרסאות Build של Kf
- מסלולים ב-Kf
- פריסות Kubernetes
- Kubernetes Services
- Kubernetes ServiceAccounts
- סודות של Kubernetes
אפשר לרשום אפליקציות באמצעות Kf או kubectl:
kf appskubectl get apps -n space-name
גרסאות Build
גרסאות build משלבות את קוד המקור ואת תצורת ה-build של האפליקציות. הם מספקים TaskRuns של Tekton עם השלבים הנכונים להפעלת Buildpack V2, Buildpack V3 או Dockerfile build.
אפשר להציג רשימה של Builds באמצעות Kf או kubectl:
kf buildskubectl get builds -n space-name
ClusterServiceBrokers
ClusterServiceBrokers מכילים את פרטי החיבור שנדרשים כדי להרחיב את Kf באמצעות מתווך שירותים. הם אחראים לאחזור קטלוג השירותים שהברוקר מספק ולהצגתם בפלט של kf marketplace.
אפשר להציג רשימה של ClusterServiceBrokers באמצעות הפקודה kubectl:
kubectl get clusterservicebrokersמסלולים
נתיבים הם מבנה ברמה גבוהה שמכיל כללי ניתוב של HTTP. הם אחראים לתיאום של Istio VirtualServices.
אפשר לקבל רשימה של מסלולים באמצעות Kf או kubectl:
kf routeskubectl get routes -n space-name
ServiceBrokers
ב-ServiceBrokers נשמרים פרטי החיבור שנדרשים כדי להרחיב את Kf באמצעות מתווך שירותים. הם אחראים לאחזור קטלוג השירותים שהברוקר מספק ולהצגתם בפלט של kf marketplace.
אפשר להציג רשימה של ServiceBrokers באמצעות kubectl:
kubectl get servicebrokers -n space-nameServiceInstanceBinding
ServiceInstanceBindings מכילים את הפרמטרים ליצירת קישור ב-service broker ואת פרטי הכניסה שהברוקר מחזיר לקישור. הם אחראים לקריאה ל-API של הקישור בברוקר כדי לקשר את השירות.
אפשר להציג רשימה של ServiceInstanceBindings באמצעות Kf או kubectl:
kf bindingskubectl get serviceinstancebindings -n space-name
ServiceInstance
ב-ServiceInstances מוגדרים הפרמטרים ליצירת שירות במתווך שירותים. הם אחראים לקריאה ל-API של הקצאת הרשאות בברוקר כדי ליצור את השירות.
אפשר להציג רשימה של ServiceInstances באמצעות Kf או kubectl:
kf serviceskubectl get serviceinstances -n space-name
Spaces
במרחבים מאוחסן מידע על ההגדרות, בדומה לארגונים ולמרחבים ב-Cloud Foundry. הם אחראים ל:
- יצירת מרחב השמות של Kubernetes שבו מוקצים משאבי Kf אחרים.
- יצירת כללי מדיניות של רשת Kubernetes כדי לאכוף את כללי המדיניות של חיבור לרשת.
- הגדרות ומדיניות לגבי Builds, Apps ו-Routes.
אפשר לראות את רשימת המרחבים באמצעות Kf או kubectl:
kf spaceskubectl get spaces
Kf RBAC / Permissions
בקטעים הבאים מפורטות ההרשאות שנדרשות ל-Kf ולרכיבים שלו כדי שתהיה להם גישה תקינה ברמת האשכול. ההרשאות האלה נדרשות ומופעלות כברירת מחדל ב-Kf. אל תנסו להשבית אותן.
| רכיבים | מרחב שמות | חשבון שירות |
|---|---|---|
controller |
kf | בקר |
subresource-apiserver |
kf | בקר |
webhook |
kf | בקר |
appdevexperience-operator |
appdevexperience | appdevexperience-operator |
שימו לב שלחשבון השירות appdevexperience-operator יש את אותן הרשאות כמו לחשבון controller. האופרטור הוא מה שפורס את כל רכיבי Kf, כולל הגדרות של משאבים מותאמים אישית ובקרי משאבים.
RBAC לחשבונות שירות של Kf
בהגדרות apiGroup הבאות מפורטים רכיבי הרשאות בקרת הגישה ב-Kf, וקבוצות המשאבים וממשקי ה-API שאליהם הם מתייחסים, עבור חשבונות השירות controller ו-appdevexperience-operator.
- apiGroups:
- "authentication.k8s.io"
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- "authorization.k8s.io"
resources:
- subjectaccessreviews
verbs:
- create
- apiGroups:
- ""
resources:
- pods
- services
- persistentvolumeclaims
- persistentvolumes
- endpoints
- events
- configmaps
- secrets
verbs: *
- apiGroups:
- ""
resources:
- services
- services/status
verbs:
- create
- delete
- get
- list
- watch
- apiGroups:
- "apps"
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
verbs: *
- apiGroups:
- "apps"
resources:
- deployments/finalizers
verbs:
- get
- list
- create
- update
- delete
- patch
- watch
- apiGroups:
- "rbac.authorization.k8s.io"
resources:
- clusterroles
- roles
- clusterrolebindings
- rolebindings
verbs:
- create
- delete
- update
- patch
- escalate
- get
- list
- deletecollection
- bind
- apiGroups:
- "apiregistration.k8s.io"
resources:
- apiservices
verbs:
- update
- patch
- create
- delete
- get
- list
- apiGroups:
- "pubsub.cloud.google.com"
resources:
- topics
- topics/status
verbs: *
- apiGroups:
- ""
resources:
- namespaces
- namespaces/finalizers
- serviceaccounts
verbs:
- get
- list
- create
- update
- watch
- delete
- patch
- watch
- apiGroups:
- "autoscaling"
resources:
- horizontalpodautoscalers
verbs:
- create
- delete
- get
- list
- update
- patch
- watch
- apiGroups:
- "coordination.k8s.io"
resources:
- leases
verbs: *
- apiGroups:
- "batch"
resources:
- jobs
- cronjobs
verbs:
- get
- list
- create
- update
- patch
- delete
- deletecollection
- watch
- apiGroups:
- "messaging.cloud.google.com"
resources:
- channels
verbs:
- delete
- apiGroups:
- "pubsub.cloud.google.com"
resources:
- pullsubscriptions
verbs:
- delete
- get
- list
- watch
- create
- update
- patch
- apiGroups:
- "pubsub.cloud.google.com"
resources:
- [pullsubscriptions/status
verbs:
- get
- update
- patch
- apiGroups:
- "events.cloud.google.com"
resources: *
verbs: *
- apiGroups:
- "keda.k8s.io"
resources: *
verbs: *
- apiGroups:
- "admissionregistration.k8s.io"
resources:
- mutatingwebhookconfigurations
- validatingwebhookconfigurations
verbs:
- get
- list
- create
- update
- patch
- delete
- watch
- apiGroups:
- "extensions"
resources:
- ingresses
- ingresses/status
verbs: *
- apiGroups:
- ""
resources:
- endpoints/restricted
verbs:
- create
- apiGroups:
- "certificates.k8s.io"
resources:
- certificatesigningrequests
- certificatesigningrequests/approval
- certificatesigningrequests/status
verbs:
- update
- create
- get
- delete
- apiGroups:
- "apiextensions.k8s.io"
resources:
- customresourcedefinitions
verbs:
- get
- list
- create
- update
- patch
- delete
- watch
- apiGroups:
- "networking.k8s.io"
resources:
- networkpolicies
verbs:
- get
- list
- create
- update
- patch
- delete
- deletecollection
- watch
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- update
- patch
- apiGroups:
- ""
resources:
- nodes/status
verbs:
- patch
בטבלה הבאה מפורט אופן השימוש בהרשאות RBAC ב-Kf, כאשר:
- ההרשאה view כוללת את הפעלים: get, list, watch
- שינוי כולל את הפעלים: יצירה, עדכון, מחיקה, תיקון
| הרשאות | סיבות |
|---|---|
יכול/ה לראות את כל secrets |
כדי להשתמש בפונקציות כמו יצירת מרחב וקישור מופע שירות, כלי הגישור של Kf צריכים לקרוא סודות. |
אפשר לשנות את pods |
כדי להשתמש בפונקציות כמו בנייה או שליחה של אפליקציות ומשימות, כלי הגישור של Kf צריכים לשנות את ה-pods. |
אפשר לשנות את secrets |
כדי להשתמש בפונקציות כמו יצירה או העלאה של אפליקציות ומשימות וקישור של מופעי שירות, כלי ה-reconciler של Kf צריכים לשנות סודות. |
אפשר לשנות את configmaps |
רכיבי Kf reconciler צריכים לשנות את configmap כדי להשתמש בפונקציות כמו יצירה ושליחה של אפליקציות ומשימות. |
אפשר לשנות את endpoints |
כדי להשתמש בפונקציות כמו בנייה/דחיפה של אפליקציות וקישור מסלולים, כלי ה-reconciler של Kf צריכים לשנות את נקודות הקצה. |
אפשר לשנות את services |
כדי להשתמש בפונקציות כמו בנייה/דחיפה של אפליקציות וקישור מסלולים, כלי הגישור של Kf צריכים לשנות את ה-Pods. |
אפשר לשנות את events |
בקר Kf יוצר ומשדר אירועים למשאבים שמנוהלים על ידי Kf. |
אפשר לשנות את serviceaccounts |
Kf צריך לשנות חשבונות שירות לצורך פריסת אפליקציות. |
אפשר לשנות את endpoints/restricted |
Kf צריך לשנות נקודות קצה לפריסות של אפליקציות. |
אפשר לשנות את deployments |
Kf צריך לשנות פריסות כדי להשתמש בפונקציות כמו שליחת אפליקציות. |
אפשר לשנות את mutatingwebhookconfiguration |
Cloud Service Mesh, תלות ב-Kf, צריך את Mutatingwebhookconfiguration בשביל webhooks של הרשאות גישה. |
אפשר לשנות
customresourcedefinitions customresourcedefinitions/status |
Kf מנהל משאבים באמצעות משאבים בהתאמה אישית, כמו אפליקציות, מרחבים וגרסאות Build. |
אפשר לשנות את horizontalpodautoscalers |
Kf תומך בהתאמה אוטומטית של קבוצות Pod לעומס (autoscaling) שמבוססת על Horizontal Pod Autoscalers (HPA). |
אפשר לשנות את namespace/finalizer |
צריך להגדיר ב-Kf הפניה לבעלים של ה-webhook. |
ספריות של צד שלישי
קוד המקור והרישיונות של ספריות צד שלישי נמצאים בספרייה /third_partyשל כל קובץ אימג' של קונטיינר של Kf.
אפשר גם להריץ את הפקודה kf third-party-licenses כדי לראות את הרישיונות של צד שלישי לגרסה של Kf CLI שהורדתם.