Kf 依赖项和架构

Kf 需要 Kubernetes 和其他几个 OSS 项目才能运行。其中一些依赖项与 Google 托管式服务兼容。例如,Google Kubernetes Engine (GKE) 提供 Kubernetes。

依赖项

Kf 组件

Kf 会安装一些自己的 Kubernetes 自定义资源控制器。自定义资源实际上用作 Kf API,并由 kf CLI 用于与系统进行交互。控制器使用 Kf 的 CRD 来编排系统中的其他组件。

Kf CRD

您可以使用以下命令查看 Kf 安装和使用的 CRD:

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

应用

应用表示部署到 Kubernetes 的十二要素应用。它包含应用的源代码、配置和当前状态。应用负责协调:

  • Kf Builds
  • Kf Routes
  • Kubernetes 部署
  • Kubernetes Service
  • Kubernetes ServiceAccounts
  • Kubernetes Secret

您可以使用 Kf 或 kubectl 列出应用:

kf apps
kubectl get apps -n space-name

构建作业

构建作业结合了应用的源代码和构建配置。它们为 Tekton TaskRun 预配了正确步骤,以便使 Buildpack V2、Buildpack V3 或 Dockerfile 构建生效。

您可以使用 Kf 或 kubectl 列出构建作业:

kf builds
kubectl get builds -n space-name

ClusterServiceBrokers

ClusterServiceBrokers 包含使用 Service Broker 扩展 Kf 所需的连接信息。它们负责获取代理提供的服务目录并将其显示在 kf marketplace 的输出中。

您可以使用 kubectl 列出 ClusterServiceBrokers:

kubectl get clusterservicebrokers

路由

路由是包含 HTTP 路由规则的高级结构。它们负责协调 Istio VirtualService。

您可以使用 Kf 或 kubectl 列出路线:

kf routes
kubectl get routes -n space-name

ServiceBrokers

ServiceBrokers 包含使用 Service Broker 扩展 Kf 所需的连接信息。它们负责获取代理提供的服务目录并将其显示在 kf marketplace 的输出中。

您可以使用 kubectl 列出 ServiceBrokers:

kubectl get servicebrokers -n space-name

ServiceInstanceBinding

ServiceInstanceBinding 包含用来在 Service Broker 上创建绑定的参数以及该代理为绑定返回的凭据。它们负责对代理调用 Bind API 来绑定服务。

您可以使用 Kf 或 kubectl 列出 ServiceInstanceBindings:

kf bindings
kubectl get serviceinstancebindings -n space-name

ServiceInstance

ServiceInstances 包含用来在 Service Broker 上创建服务的参数。它们负责在代理上调用 Provision API 以创建服务。

您可以使用 Kf 或 kubectl 列出 ServiceInstances:

kf services
kubectl get serviceinstances -n space-name

Spaces

Spaces 包含与 Cloud Foundry 组织和空间类似的配置信息。他们负责:

  • 创建要在其中预配其他 Kf 资源的 Kubernetes 命名空间。
  • 创建 Kubernetes NetworkPolicies 以强制执行网络连接政策。
  • 保留构建作业、应用和路由的配置和政策。

您可以使用 Kf 或 kubectl 列出空间:

kf spaces
kubectl get spaces

服务账号

Kf 要求运行它的 Kubernetes 集群具有服务账号。Tekton 使用该服务账号向 Container Registry 进行身份验证以拉取和推送映像。如果您使用 CloudBuild 模板安装 Kf,它将创建一个具有 roles/storage.admin 权限的 Identity and Access Management 服务账号

第三方库

如需查看第三方库源代码和许可,请参阅任何 Kf 容器映像的 /third_party 目录。

您还可以运行 kf third-party-licenses,以查看已下载的 Kf CLI 版本的第三方许可。