Kf nécessite Kubernetes et plusieurs autres projets OSS pour s'exécuter. Certaines dépendances sont assurées par les services gérés par Google. Par exemple, Google Kubernetes Engine (GKE) fournit Kubernetes.
Dépendances
Obtenir les détails de CRD
Kf accepte la sous-commande kubectl
explain
. Elle vous permet de répertorier les champs des CRD Kf afin de comprendre comment créer des objets Kf de façon automatisée plutôt que manuellement via la CLI. Cette commande est conçue pour être utilisée avec Config Management afin d'automatiser la création et la gestion de ressources telles que les espaces sur de nombreux clusters. Vous pouvez l'utiliser sur n'importe quel composant kinds
ci-dessous.
Dans cet exemple, nous examinons l'objet kind
appelé space
dans l'objet CRD spaces
:
kubectl explain space.spec
Le résultat ressemble à ceci :
$ 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.
Composants Kf
Kf installe plusieurs de ses propres ressources personnalisées et contrôleurs Kubernetes.
Les ressources personnalisées servent d'API Kf et sont utilisées par la CLI kf
pour interagir avec le système. Les contrôleurs utilisent les CRD de Kf pour orchestrer les autres composants du système.
Vous pouvez afficher les CRD installés et utilisés par Kf en exécutant la commande suivante :
kubectl api-resources --api-group=kf.dev
Le résultat de cette commande se présente comme suit :
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
Applications
Les applications représentent des applications douze facteurs déployées sur Kubernetes. Elles englobent le code source, la configuration et l'état actuel de l'application. Les applications sont chargées du rapprochement des éléments suivants :
- Builds Kf
- Routes Kf
- Déploiements Kubernetes
- Services Kubernetes
- Comptes de service Kubernetes
- Secrets Kubernetes
Vous pouvez répertorier les applications à l'aide de Kf ou de kubectl
:
kf apps
kubectl get apps -n space-name
Builds
Les builds combinent le code source et la configuration de compilation des applications. Ils indiquent aux exécutions de tâche Tekton la procédure appropriée pour activer un build Buildpack V2, Buildpack V3 ou Dockerfile.
Vous pouvez répertorier les compilations à l'aide de Kf ou de kubectl
:
kf builds
kubectl get builds -n space-name
ClusterServiceBrokers
Les agents de service des clusters contiennent les informations de connexion nécessaires pour étendre l'utilisation de Kf avec un agent de service. Ils sont chargés d'extraire le catalogue de services fourni par l'agent et de l'afficher dans le résultat de la commande kf marketplace
.
Vous pouvez répertorier les agents de service des clusters à l'aide de kubectl
:
kubectl get clusterservicebrokers
Routes
Les routes représentent une structure de haut niveau contenant les règles de routage HTTP. Elles sont chargées du rapprochement des services virtuels Istio.
Vous pouvez répertorier les routes à l'aide de Kf ou de kubectl
:
kf routes
kubectl get routes -n space-name
ServiceBrokers
Les agents de service contiennent les informations de connexion nécessaires pour étendre l'utilisation de Kf avec un agent de service. Ils sont chargés d'extraire le catalogue de services fourni par l'agent et de l'afficher dans le résultat de la commande kf marketplace
.
Vous pouvez répertorier les agents de service à l'aide de kubectl
:
kubectl get servicebrokers -n space-name
ServiceInstanceBinding
Les liaisons d'instances de service contiennent les paramètres permettant de créer une liaison sur un agent de service et les identifiants renvoyés par celui-ci pour la liaison. Elles sont chargées d'appeler l'API de liaison sur l'agent pour lier le service.
Vous pouvez répertorier les liaisons d'instances de service à l'aide de Kf ou de kubectl
:
kf bindings
kubectl get serviceinstancebindings -n space-name
ServiceInstance
Les instances de service contiennent les paramètres permettant de créer un service sur un agent de service. Elles sont chargées d'appeler l'API de provisionnement sur l'agent pour lier le service.
Vous pouvez répertorier les instances de service à l'aide de Kf ou de kubectl
:
kf services
kubectl get serviceinstances -n space-name
Espaces
Les espaces contiennent des informations de configuration semblables à celles des organisations et des espaces Cloud Foundry. Ils sont chargés des opérations suivantes :
- Créer l'espace de noms Kubernetes dans lequel d'autres ressources Kf sont provisionnées
- Créer des règles de réseau Kubernetes pour appliquer les règles de connexion réseau
- Conserver la configuration et les règles des builds, des applications et des routes
Vous pouvez répertorier les espaces à l'aide de Kf ou de kubectl
:
kf spaces
kubectl get spaces
RBAC/Autorisations pour Kf
Les sections suivantes listent les autorisations pour Kf et ses composants afin de disposer d'un accès correct au niveau du cluster. Ces autorisations sont requises et activées par défaut dans Kf. N'essayez pas de les désactiver.
Composants | Namespace | Compte de service |
---|---|---|
controller |
kf | controller |
subresource-apiserver |
kf | controller |
webhook |
kf | controller |
appdevexperience-operator |
appdevexperience | appdevexperience-operator |
Notez que le compte de service appdevexperience-operator
dispose du même ensemble d'autorisations que controller
. L'opérateur permet de déployer tous les composants Kf, y compris les définitions de ressources personnalisées et les contrôleurs.
RBAC pour les comptes de service Kf
Les définitions apiGroup
suivantes détaillent les autorisations de contrôle d'accès que les composants détiennent dans Kf sur certains groupes d'API et de ressources pour les comptes de service controller
et 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
Le tableau suivant répertorie la façon dont les autorisations RBAC sont utilisées dans Kf, où :
- view (afficher) inclut les verbes : get, list et watch (obtenir, lister et regarder).
- modify (modifier) inclut les verbes : create, update, delete et patch (créer, mettre à jour, supprimer et corriger)
Autorisations | Motifs |
---|---|
Peut afficher tous les secrets |
Les rapprochements Kf doivent lire les secrets pour des fonctionnalités comme la création d'espace et les liaisons d'instances de service. |
Peut modifier pods |
Les rapprochements Kf doivent modifier les pods pour des fonctionnalités comme la création/le transfert d'applications et de tâches. |
Peut modifier secrets |
Les rapprochements Kf doivent modifier les secrets pour des fonctionnalités comme la création/le transfert d'applications et de tâches, et les liaisons d'instances de service. |
Peut modifier configmaps |
Les rapprochements Kf doivent modifier les configmaps pour des fonctionnalités comme la création et le transfert d'applications et de tâches. |
Peut modifier endpoints |
Les rapprochements Kf doivent modifier les points de terminaison pour des fonctionnalités comme la création/le transfert d'applications et la liaison de route. |
Peut modifier services |
Les rapprochements Kf doivent modifier les pods pour des fonctionnalités comme la création/le transfert d'applications et les liaisons de routes. |
Peut modifier events |
Le contrôleur Kf crée et émet des événements pour les ressources gérées par Kf. |
Peut modifier serviceaccounts |
Kf doit modifier les comptes de service pour les déploiements d'applications. |
Peut modifier endpoints/restricted |
Kf doit modifier les points de terminaison pour les déploiements d'applications. |
Peut modifier deployments |
Kf doit modifier les déploiements pour des fonctionnalités comme le transfert d'applications. |
Peut modifier mutatingwebhookconfiguration |
Mutatingwebhookconfiguration est nécessaire pour Cloud Service Mesh, une dépendance Kf, pour des webhooks d'admission. |
Peut modifier customresourcedefinitions customresourcedefinitions/status |
Kf gère les ressources via des ressources personnalisées comme des applications, des espaces et des builds. |
Peut modifier horizontalpodautoscalers |
Kf accepte l'autoscaling basé sur les autoscalers horizontaux de pods. |
Peut modifier namespace/finalizer |
Kf doit définir la référence du propriétaire des webhooks. |
Bibliothèques tierces
Le code source et les licences des bibliothèques tierces se trouvent dans le répertoire /third_party
de chaque image de conteneur Kf.
Vous pouvez également exécuter la commande kf third-party-licenses
pour afficher les licences tierces correspondant à la version de la CLI Kf que vous avez téléchargée.