Dev Services for Kubernetes
Kubernetes 的 Dev 服务会在 dev 模式和运行测试时自动启动 Kubernetes API 服务器。因此您不必手动启动 Kubernetes 集群。应用程序会自动配置。
Dev Services for Kubernetes automatically starts a Kubernetes API server in dev mode and when running tests. So you don’t have to start a Kubernetes cluster manually. The application is configured automatically.
Enabling / Disabling Dev Services for Kubernetes
除非出现以下情况,否则 Kubernetes 的 Dev 服务将自动启用:
Dev Services for Kubernetes is automatically enabled unless:
-
quarkus.kubernetes-client.devservices.enabled
is set tofalse
-
the
api-server-url
is configured -
a valid Kube config file is found and
quarkus.kubernetes-client.devservices.override-kubeconfig
is not set totrue
-
you include the
quarkus-test-kubernetes-client
dependency
Kubernetes 的 Dev 服务依靠 Docker 来启动 API 服务器。如果您的环境不支持 Docker,您将需要手动启动 Kubernetes 集群,或连接到已在运行的 Kubernetes 集群。您可以使用 Kube 配置文件或 KubernetesClientBuildConfig类中提供的各种属性来配置 Kubernetes 集群访问。
Dev Services for Kubernetes relies on Docker to start the API server. If your environment does not support Docker, you will need to start the Kubernetes cluster manually, or connect to an already running Kubernetes cluster. You can configure the Kubernetes cluster access using either a Kube config file or the various properties available in the KubernetesClientBuildConfig class.
Shared cluster
大多数时候,您需要在应用程序之间共享集群。Kubernetes 的 Dev 服务实现了 _service discovery_机制,能让您运行在 dev 模式的多个 Quarkus 应用程序共享单个集群。
Most of the time you need to share the cluster between applications. Dev Services for Kubernetes implements a service discovery mechanism for your multiple Quarkus applications running in dev mode to share a single cluster.
Kubernetes 的 Dev 服务会启动带有 `quarkus-dev-service-kubernetes`标签的容器,该标签用于识别容器。 |
Dev Services for Kubernetes starts the container with the |
如果您需要多个(共享)集群,您可以配置 quarkus.kubernetes-client.devservices.service-name`配置属性并指示集群名称。它会查找带有已定义名称的容器,或在找不到任何容器时启动新的容器。默认服务名称为 `kubernetes
。
If you need multiple (shared) clusters, you can configure the quarkus.kubernetes-client.devservices.service-name
configuration property and indicate the cluster name.
It looks for a container with the name defined, or starts a new one if none can be found.
The default service name is kubernetes
.
共享在 dev 模式下默认启用,但在测试模式下禁用。您可以使用 `quarkus.kubernetes-client.devservices.shared=false`禁用共享。
Sharing is enabled by default in dev mode, but disabled in test mode.
You can disable the sharing with 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`属性配置类型和版本:
Dev Services for Kubernetes provides three different flavors of Kubernetes cluster. Each flavor supports different Kubernetes API versions.
You can configure the flavor and version using the quarkus.kubernetes-client.devservices.flavor
and quarkus.kubernetes-client.devservices.api-version
properties:
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-only
only starts a Kubernetes API Server. If you need a fully-featured Kubernetes cluster that can spin up Pods, you can use k3s
or kind
. Note that they both requires to run in Docker privileged mode.
如果未设置 api-version
,将使用给定类型的最新版本。否则,版本必须与 version supported by the given flavor相匹配。
If api-version
is not set, the latest version for the given flavor will be used. Otherwise, the version must match a version supported by the given flavor.