Dev Services for Kubernetes

Kubernetes 的 Dev 服务会在 dev 模式和运行测试时自动启动 Kubernetes API 服务器。因此您不必手动启动 Kubernetes 集群。应用程序会自动配置。

Enabling / Disabling Dev Services for Kubernetes

除非出现以下情况,否则 Kubernetes 的 Dev 服务将自动启用:

  • quarkus.kubernetes-client.devservices.enabled`设为 `false

  • the api-server-url is configured

  • 找到了有效的 Kube 配置文件且 quarkus.kubernetes-client.devservices.override-kubeconfig`未设为 `true

  • 您包含了 `quarkus-test-kubernetes-client`依赖

Kubernetes 的 Dev 服务依靠 Docker 来启动 API 服务器。如果您的环境不支持 Docker,您将需要手动启动 Kubernetes 集群,或连接到已在运行的 Kubernetes 集群。您可以使用 Kube 配置文件或 KubernetesClientBuildConfig类中提供的各种属性来配置 Kubernetes 集群访问。

Shared cluster

大多数时候,您需要在应用程序之间共享集群。Kubernetes 的 Dev 服务实现了 _service discovery_机制,能让您运行在 dev 模式的多个 Quarkus 应用程序共享单个集群。

Kubernetes 的 Dev 服务会启动带有 `quarkus-dev-service-kubernetes`标签的容器,该标签用于识别容器。

如果您需要多个(共享)集群,您可以配置 quarkus.kubernetes-client.devservices.service-name`配置属性并指示集群名称。它会查找带有已定义名称的容器,或在找不到任何容器时启动新的容器。默认服务名称为 `kubernetes

共享在 dev 模式下默认启用,但在测试模式下禁用。您可以使用 `quarkus.kubernetes-client.devservices.shared=false`禁用共享。

Configuring the cluster

Kubernetes 的 Dev 服务提供三种不同类型的 Kubernetes 集群。每种类型都支持不同的 Kubernetes API 版本。您可以使用 `quarkus.kubernetes-client.devservices.flavor`和 `quarkus.kubernetes-client.devservices.api-version`属性配置类型和版本:

quarkus.kubernetes-client.devservices.flavor=api-only # k3s or kind
quarkus.kubernetes-client.devservices.api-version=1.22

api-only`只会启动 Kubernetes API 服务器。如果您需要一个可以启动 Pod 的功能齐全的 Kubernetes 集群,可以使用 `k3s`或 `kind。请注意,它们都需要在 Docker 特权模式下运行。

如果未设置 api-version,将使用给定类型的最新版本。否则,版本必须与 version supported by the given flavor相匹配。