Kf memerlukan Kubernetes dan beberapa project OSS lainnya agar dapat dijalankan. Beberapa dependensi terpenuhi dengan layanan yang dikelola Google. Misalnya, Google Kubernetes Engine (GKE) yang menyediakan Kubernetes.
Dependensi
Dapatkan detail CRD
Kf mendukung subperintah kubectl
explain
. Hal ini memungkinkan Anda mencantumkan kolom di Kf CRD untuk memahami cara membuat objek Kf melalui otomatisasi, bukan secara manual melalui CLI. Perintah ini dirancang untuk digunakan dengan Config Management untuk mengotomatiskan pembuatan dan pengelolaan resource seperti Ruang di banyak cluster. Anda dapat menggunakan ini terhadap komponen kinds
di bawah.
Dalam contoh ini, kita memeriksa kind
yang disebut space
di spaces
CRD:
kubectl explain space.spec
Output-nya terlihat mirip dengan ini:
$ 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.
Komponen Kf
Kf menginstal beberapa resource kustom dan pengontrol Kubernetes miliknya sendiri.
Resource kustom secara efektif berfungsi sebagai Kf API dan
digunakan oleh CLI kf
untuk berinteraksi dengan sistem. Pengontrol menggunakan
CRD Kf untuk mengorkestrasi komponen lain dalam
sistem.
Anda dapat melihat CRD yang diinstal dan digunakan oleh Kf dengan menjalankan perintah berikut:
kubectl api-resources --api-group=kf.dev
Output perintah tersebut adalah sebagai berikut:
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
Aplikasi
Aplikasi merepresentasikan aplikasi dua belas faktor yang di-deploy ke Kubernetes. Hal ini mencakup kode sumber, konfigurasi, dan status aplikasi saat ini. Aplikasi bertanggung jawab untuk merekonsiliasi:
- Build Kf
- Rute Kf
- Deployment Kubernetes
- Layanan Kubernetes
- Akun Layanan Kubernetes
- Secret Kubernetes
Anda dapat mencantumkan Aplikasi menggunakan Kf atau kubectl
:
kf apps
kubectl get apps -n space-name
Build
Build menggabungkan kode sumber dan konfigurasi build untuk Aplikasi. Alat ini menyediakan TaskRun Tekton dengan langkah-langkah yang benar untuk menjalankan build Buildpack V2, Buildpack V3, atau Dockerfile.
Anda dapat mencantumkan Build menggunakan Kf atau kubectl
:
kf builds
kubectl get builds -n space-name
ClusterServiceBrokers
ClusterServiceBrokers menyimpan informasi koneksi yang diperlukan untuk memperluas Kf dengan broker layanan. Mereka bertanggung jawab untuk mengambil katalog layanan yang disediakan oleh broker dan menampilkannya dalam output kf marketplace
.
Anda dapat mencantumkan ClusterServiceBrokers menggunakan kubectl
:
kubectl get clusterservicebrokers
Rute
Rute adalah struktur tingkat tinggi yang berisi aturan perutean HTTP. Mereka bertanggung jawab untuk merekonsiliasi Istio VirtualServices.
Anda dapat membuat daftar Rute menggunakan Kf atau kubectl
:
kf routes
kubectl get routes -n space-name
ServiceBrokers
ServiceBrokers menyimpan informasi koneksi yang diperlukan untuk memperluas Kf dengan broker layanan. Mereka bertanggung jawab untuk mengambil katalog layanan yang disediakan oleh broker dan menampilkannya dalam output kf marketplace
.
Anda dapat mencantumkan ServiceBroker menggunakan kubectl
:
kubectl get servicebrokers -n space-name
ServiceInstanceBinding
ServiceInstanceBindings menyimpan parameter untuk membuat binding pada broker layanan dan kredensial yang ditampilkan broker untuk binding. Mereka bertanggung jawab memanggil API bind pada broker untuk mengikat layanan.
Anda dapat mencantumkan ServiceInstanceBinding menggunakan Kf atau kubectl
:
kf bindings
kubectl get serviceinstancebindings -n space-name
ServiceInstance
ServiceInstances menyimpan parameter untuk membuat layanan pada broker layanan. Mereka bertanggung jawab memanggil API penyediaan pada broker untuk membuat layanan.
Anda dapat mencantumkan ServiceInstances menggunakan Kf atau kubectl
:
kf services
kubectl get serviceinstances -n space-name
Ruang
Ruang menyimpan informasi konfigurasi yang mirip dengan ruang dan organisasi Cloud Foundry. Mereka bertanggung jawab untuk:
- Membuat Namespace Kubernetes tempat resource Kf lain disediakan.
- Membuat NetworkPolicy Kubernetes untuk menerapkan kebijakan koneksi jaringan.
- Menyimpan konfigurasi dan kebijakan untuk Build, Aplikasi, dan Rute.
Anda dapat mencantumkan Ruang menggunakan Kf atau kubectl
:
kf spaces
kubectl get spaces
Kf RBAC / Izin
Bagian berikut mencantumkan izin agar Kf dan komponennya memiliki akses yang benar di level cluster. Izin ini diperlukan dan diaktifkan secara default di Kf; jangan mencoba menonaktifkannya.
Komponen | Namespace | Akun Layanan |
---|---|---|
controller |
kf | pengontrol |
subresource-apiserver |
kf | pengontrol |
webhook |
kf | pengontrol |
appdevexperience-operator |
appdevexperience | operator appdevexperience |
Perlu diperhatikan bahwa akun layanan appdevexperience-operator
memiliki kumpulan izin yang sama seperti controller
. Operator adalah yang men-deploy semua komponen
Kf, termasuk pengontrol dan definisi resource kustom.
RBAC untuk akun layanan Kf
Definisi apiGroup
berikut menjelaskan komponen izin kontrol akses di Kf yang dimiliki grup dan resource API untuk akun layanan controller
dan 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
Tabel berikut mencantumkan cara izin RBAC digunakan di Kf, dengan:
- tampilan mencakup kata kerja: get, list, watch
- modify mencakup kata kerja: membuat, mengupdate, menghapus, patch
Izin | Alasan |
---|---|
Dapat melihat semua secrets |
Rekonsiler Kf perlu membaca secret untuk fungsi seperti pembuatan ruang dan binding instance layanan. |
Dapat mengubah pods |
Rekonsiler Kf perlu mengubah pod untuk fungsi seperti membuat/mendorong Aplikasi dan Tasks. |
Dapat mengubah secrets |
Rekonsiler Kf perlu mengubah secret untuk fungsi seperti membuat/mendorong Aplikasi dan Tasks serta binding instance layanan. |
Dapat mengubah configmaps |
Rekonsiler Kf perlu mengubah configmap untuk fungsi seperti membuat/mendorong Aplikasi dan Tasks. |
Dapat mengubah endpoints |
Rekonsiler Kf perlu mengubah endpoint untuk fungsi seperti membuat/mendorong Aplikasi dan binding rute. |
Dapat mengubah services |
Rekonsiler Kf perlu mengubah pod untuk fungsi seperti membuat/mendorong Aplikasi dan binding rute. |
Dapat mengubah events |
Pengontrol Kf membuat dan memunculkan peristiwa untuk resource yang dikelola oleh Kf. |
Dapat mengubah serviceaccounts |
Kf perlu mengubah akun layanan untuk Deployment aplikasi. |
Dapat mengubah endpoints/restricted |
Kf perlu mengubah endpoint untuk deployment Aplikasi. |
Dapat mengubah deployments |
Kf perlu memodifikasi deployment untuk fungsionalitas seperti mendorong Aplikasi. |
Dapat mengubah mutatingwebhookconfiguration |
Konfigurasi webhook bermutasi diperlukan oleh Anthos Service Mesh, dependensi Kf, untuk webhook masuk. |
Dapat mengubah
customresourcedefinitions customresourcedefinitions/status |
Kf mengelola resource melalui Resource Kustom seperti Aplikasi, Ruang, dan Build. |
Dapat mengubah horizontalpodautoscalers |
Kf mendukung penskalaan otomatis berdasarkan Autoscaler Pod Horizontal. |
Dapat mengubah namespace/finalizer |
Kf perlu menetapkan referensi pemilik webhook. |
Library pihak ketiga
Kode sumber dan lisensi library pihak ketiga dapat ditemukan di direktori /third_party
dari image container Kf mana pun.
Anda juga dapat menjalankan kf third-party-licenses
untuk melihat lisensi pihak ketiga untuk versi Kf CLI yang Anda download.