Kf richiede l'esecuzione di Kubernetes e di diversi altri progetti OSS. Alcune delle dipendenze sono soddisfacenti per i servizi gestiti da Google, ad esempio Google Kubernetes Engine (GKE) fornisce Kubernetes.
Dipendenze
Ottieni dettagli CRD
Kf supporta il sottocomando kubectl
explain
. Consente di elencare i campi nei CRD Kf per capire come creare oggetti Kf tramite automazione, anziché manualmente tramite l'interfaccia a riga di comando. Questo comando è progettato per essere utilizzato con Config Management per automatizzare la creazione e la gestione di risorse come Spazi in molti cluster. Puoi utilizzarla su uno qualsiasi dei componenti kinds
riportati di seguito.
In questo esempio, esaminiamo l'elemento kind
chiamato space
nel CRD spaces
:
kubectl explain space.spec
L'output è simile a questo:
$ 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.
Componenti Kf
Kf installa diverse delle proprie
risorse personalizzate
e controller Kubernetes.
Le risorse personalizzate fungono effettivamente da API Kf e sono utilizzate dall'interfaccia a riga di comando kf
per interagire con il sistema. I controller usano i CRD di Kf per orchestrare gli altri componenti del sistema.
Puoi visualizzare i CRD installati e utilizzati da Kf eseguendo questo comando:
kubectl api-resources --api-group=kf.dev
L'output di quel comando è il seguente:
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
App
Le app rappresentano un'applicazione a dodici fattori di cui è stato eseguito il deployment in Kubernetes. Comprendono il codice sorgente, la configurazione e lo stato attuale dell'applicazione. Le app sono responsabili della riconciliazione:
- Build Kf
- Percorsi Kf
- Deployment Kubernetes
- Servizi Kubernetes
- Account di servizio Kubernetes
- Secret di Kubernetes
Puoi elencare le app utilizzando Kf o kubectl
:
kf apps
kubectl get apps -n space-name
Build
Le build combinano il codice sorgente e la configurazione della build per le app. Esegue il provisioning di Teekton TaskRuns con i passaggi corretti per attivare una build Buildpack V2, Buildpack V3 o Dockerfile.
Puoi elencare le build utilizzando Kf o kubectl
:
kf builds
kubectl get builds -n space-name
ClusterServiceBrokers
ClusterServiceBrokers contiene le informazioni di connessione necessarie per estendere Kf con un service broker. È responsabile del recupero del catalogo dei servizi forniti dal broker e della sua visualizzazione nell'output di kf marketplace
.
Puoi elencare ClusterServiceBrokers utilizzando kubectl
:
kubectl get clusterservicebrokers
Route
Le route sono una struttura di alto livello che contiene regole di routing HTTP. Sono responsabili della riconciliazione dei servizi virtuali Istio.
Puoi elencare i percorsi utilizzando Kf o kubectl
:
kf routes
kubectl get routes -n space-name
ServiceBrokers
ServiceBrokers contiene le informazioni di connessione necessarie per estendere
Kf con un service broker. È responsabile del recupero del catalogo dei servizi forniti dal broker e della sua visualizzazione nell'output di kf marketplace
.
Puoi elencare i ServiceBroker utilizzando kubectl
:
kubectl get servicebrokers -n space-name
ServiceInstanceBinding
ServiceInstanceBindings contiene i parametri per creare un'associazione su un broker di servizi e le credenziali che restituisce per l'associazione. Sono responsabili di chiamare l'API di bind sul broker per vincolare il servizio.
Puoi elencare le associazioni ServiceInstanceBinding utilizzando Kf o kubectl
:
kf bindings
kubectl get serviceinstancebindings -n space-name
ServiceInstance
ServiceInstances contiene i parametri per creare un servizio su un service broker. Deve chiamare l'API di provisioning sul broker per creare il servizio.
Puoi elencare le istanze di servizio utilizzando Kf o kubectl
:
kf services
kubectl get serviceinstances -n space-name
Spazi
Gli spazi contengono informazioni di configurazione simili a quelle delle organizzazioni e degli spazi di Cloud Foundry. Questi ultimi sono responsabili di:
- Creazione dello spazio dei nomi Kubernetes in cui viene eseguito il provisioning di altre risorse Kf.
- Creazione di criteri di rete Kubernetes per applicare i criteri di connessione di rete.
- Blocco della configurazione e dei criteri per build, app e route.
Puoi elencare gli spazi utilizzando Kf o kubectl
:
kf spaces
kubectl get spaces
Kf RBAC / Autorizzazioni
Le sezioni seguenti elencano le autorizzazioni per Kf e i relativi componenti per disporre dell'accesso corretto a livello di cluster. Queste autorizzazioni sono obbligatorie e abilitate per impostazione predefinita in Kf; non tentare di disabilitarle.
Componenti | Spazio dei nomi | Account di servizio |
---|---|---|
controller |
kf | controller |
subresource-apiserver |
kf | controller |
webhook |
kf | controller |
appdevexperience-operator |
esperienzasviluppo-app | operatore-appdevesperienza |
Tieni presente che l'account di servizio appdevexperience-operator
ha lo stesso insieme di autorizzazioni di controller
. È l'operatore che esegue il deployment di tutti
i componenti Kf, inclusi controller e definizioni di risorse personalizzate.
RBAC per gli account di servizio Kf
Le seguenti definizioni di apiGroup
descrivono in dettaglio quali componenti delle autorizzazioni di controllo dell'accesso in Kf hanno su quali gruppi API e risorse per gli account di servizio controller
e 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
La seguente tabella elenca le modalità di utilizzo delle autorizzazioni RBAC in Kf, dove:
- view include i verbi: get, list, watch
- modify include i verbi: crea, aggiorna, elimina, patch
Autorizzazioni | Motivi |
---|---|
Può visualizzare tutti: secrets |
I riconciliatori Kf devono leggere i secret per funzionalità come la creazione di spazi e l'associazione di istanze di servizio. |
È possibile modificare pods |
I riconciliatori Kf devono modificare i pod per funzionalità come la creazione/il push di app e attività. |
È possibile modificare secrets |
I riconciliatori Kf devono modificare i secret per funzionalità come la creazione/il push di app e attività e l'associazione delle istanze di servizio. |
È possibile modificare configmaps |
I riconciliatori Kf devono modificare le mappe di configurazione per funzionalità come la creazione/il push di app e attività. |
È possibile modificare endpoints |
I riconciliatori Kf devono modificare gli endpoint per funzionalità come la creazione/il push di app e l'associazione di percorsi. |
È possibile modificare services |
I riconciliatori Kf devono modificare i pod per funzionalità come la creazione/il push di app e l'associazione di percorsi. |
È possibile modificare events |
Il controller Kf crea ed emette eventi per le risorse gestite da Kf. |
È possibile modificare serviceaccounts |
Kf deve modificare gli account di servizio per i deployment delle app. |
È possibile modificare endpoints/restricted |
Kf deve modificare gli endpoint per i deployment delle app. |
È possibile modificare deployments |
Kf deve modificare le implementazioni per funzionalità come il push delle app. |
È possibile modificare mutatingwebhookconfiguration |
La configurazione del webhook di mutazione è necessaria per Cloud Service Mesh, una dipendenza Kf, per i webhook di ammissione. |
Può modificare
customresourcedefinitions customresourcedefinitions/status |
Kf gestisce le risorse attraverso risorse personalizzate come app, spazi e build. |
È possibile modificare horizontalpodautoscalers |
Kf supporta la scalabilità automatica basata su Horizontal Pod Autoscaler. |
È possibile modificare namespace/finalizer |
Kf deve impostare il riferimento del proprietario dei webhook. |
Librerie di terze parti
Il codice sorgente e le licenze delle librerie di terze parti sono disponibili nella directory /third_party
di qualsiasi immagine contenitore Kf.
Puoi anche eseguire kf third-party-licenses
per visualizzare le licenze di terze parti per la versione dell'interfaccia a riga di comando Kf che hai scaricato.