Kubernetes 扩展
Quarkus 能够使用 dekorate 根据合理的默认设置和用户提供的配置自动生成 Kubernetes 资源。它目前支持为原始 Kubernetes、OpenShift 和 Knative 生成资源。此外,Quarkus 可以通过将生成的清单应用到目标集群的 API 服务器来将应用程序部署到目标 Kubernetes 集群。最后,当存在任何一个容器镜像扩展时(有关更多详细信息,请参阅容器镜像指南),Quarkus 能够在将应用程序部署到目标平台之前创建容器镜像并将其推送到注册表。
先决条件
要完成本指南,您需要
-
大约 15 分钟
-
一个 IDE
-
已安装 JDK 17+ 并正确配置了
JAVA_HOME
-
Apache Maven 3.9.9
-
如果您想使用它,可以选择 Quarkus CLI
-
访问 Kubernetes 集群(Minikube 是一个可行的选择)
Kubernetes
让我们创建一个包含 Kubernetes 和 Jib 扩展的新项目
对于 Windows 用户
-
如果使用 cmd,(不要使用反斜杠
\
并将所有内容放在同一行上) -
如果使用 Powershell,请将
-D
参数用双引号括起来,例如"-DprojectArtifactId=kubernetes-quickstart"
这会将以下依赖项添加到构建文件中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-rest</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-container-image-jib</artifactId>
</dependency>
implementation("io.quarkus:quarkus-rest")
implementation("io.quarkus:quarkus-kubernetes")
implementation("io.quarkus:quarkus-container-image-jib")
通过添加这些依赖项,我们可以在每次执行构建时启用 Kubernetes 清单的生成,同时还可以使用 Jib 启用容器镜像的构建。例如,在执行以下命令后
quarkus build
./mvnw install
./gradlew build
您会注意到在创建的其他文件中,target/kubernetes/
目录中有两个名为 kubernetes.json
和 kubernetes.yml
的文件。
如果您查看任一文件,您会看到它包含 Kubernetes Deployment
和 Service
。
kubernetes.json
文件的完整源代码如下所示
{
{
"apiVersion" : "apps/v1",
"kind" : "Deployment",
"metadata" : {
"annotations": {
"app.quarkus.io/vcs-uri" : "<some url>",
"app.quarkus.io/commit-id" : "<some git SHA>",
},
"labels" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT",
},
"name" : "test-quarkus-app"
},
"spec" : {
"replicas" : 1,
"selector" : {
"matchLabels" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT",
}
},
"template" : {
"metadata" : {
"labels" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT"
}
},
"spec" : {
"containers" : [ {
"env" : [ {
"name" : "KUBERNETES_NAMESPACE",
"valueFrom" : {
"fieldRef" : {
"fieldPath" : "metadata.namespace"
}
}
} ],
"image" : "yourDockerUsername/test-quarkus-app:1.0.0-SNAPSHOT",
"imagePullPolicy" : "Always",
"name" : "test-quarkus-app"
} ]
}
}
}
},
{
"apiVersion" : "v1",
"kind" : "Service",
"metadata" : {
"annotations": {
"app.quarkus.io/vcs-uri" : "<some url>",
"app.quarkus.io/commit-id" : "<some git SHA>",
},
"labels" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT",
},
"name" : "test-quarkus-app"
},
"spec" : {
"ports" : [ {
"name" : "http",
"port" : 8080,
"targetPort" : 8080
} ],
"selector" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT"
},
"type" : "ClusterIP"
}
}
}
可以使用 kubectl
从项目根目录将生成的清单应用到集群
kubectl apply -f target/kubernetes/kubernetes.json
关于 Deployment
(或 StatefulSet
)需要注意的重要一点是,它使用 yourDockerUsername/test-quarkus-app:1.0.0-SNAPSHOT
作为 Pod
的容器镜像。镜像的名称由 Jib 扩展控制,可以使用常用的 application.properties
进行自定义。
例如,使用如下配置
quarkus.container-image.group=quarkus #optional, default to the system username
quarkus.container-image.name=demo-app #optional, defaults to the application name
quarkus.container-image.tag=1.0 #optional, defaults to the application version
将在生成的清单中使用的镜像将是 quarkus/demo-app:1.0
生成幂等资源
在生成 Kubernetes 清单时,Quarkus 会自动添加一些标签和注解,以提供有关生成日期或版本的额外信息。例如
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
app.quarkus.io/commit-id: 0f8b87788bc446a9347a7961bea8a60889fe1494
app.quarkus.io/build-timestamp: 2023-02-10 - 13:07:51 +0000
labels:
app.kubernetes.io/managed-by: quarkus
app.kubernetes.io/version: 0.0.1-SNAPSHOT
app.kubernetes.io/name: example
name: example
spec:
...
app.quarkus.io/commit-id
、app.quarkus.io/build-timestamp
标签和 app.kubernetes.io/version
注解可能会在我们每次重新构建 Kubernetes 清单时发生变化,这在我们想要使用 Git-Ops 工具部署这些资源时可能会出现问题(因为这些工具会检测到差异,因此会执行重新部署)。
为了使生成的资源对 Git-Ops 友好,并且仅生成幂等资源(每次构建源代码时不会更改的资源),我们需要添加以下属性
quarkus.kubernetes.idempotent=true
此外,默认情况下,生成资源的目录是 target/kubernetes
,要更改它,我们需要使用
quarkus.kubernetes.output-directory=target/kubernetes-with-idempotent
请注意,属性 |
更改生成的 deployment 资源
除了生成 Deployment
资源之外,您还可以通过 application.properties
选择生成 StatefulSet
、Job
或 CronJob
资源
quarkus.kubernetes.deployment-kind=StatefulSet
生成 Job 资源
如果要生成 Job 资源,您需要在 application.properties
中添加以下属性
quarkus.kubernetes.deployment-kind=Job
如果使用 Picocli 扩展,默认情况下将生成 Job 资源。 |
您可以通过属性 quarkus.kubernetes.arguments
提供 Kubernetes Job 将使用的参数。例如,通过添加属性 quarkus.kubernetes.arguments=A,B
。
最后,Kubernetes Job 将在每次安装到 Kubernetes 时启动。您可以在这个链接中了解更多关于如何运行 Kubernetes Job 的信息。
您可以使用 quarkus.kubernetes.job.xxx
下的属性配置 Kubernetes Job 配置的其余部分(请参阅链接)。
生成 CronJob 资源
如果要生成 CronJob 资源,您需要通过 application.properties
添加以下属性
quarkus.kubernetes.deployment-kind=CronJob
# Cron expression to run the job every hour
quarkus.kubernetes.cron-job.schedule=0 * * * *
CronJob 资源需要 Cron 表达式来指定何时通过属性 quarkus.kubernetes.cron-job.schedule 启动 Job。如果不提供,构建将失败。 |
您可以使用 quarkus.kubernetes.cron-job.xxx
下的属性配置 Kubernetes CronJob 配置的其余部分(请参阅链接)。
命名空间
默认情况下,Quarkus 会在生成的清单中省略命名空间,而不是强制使用 default
命名空间。这意味着在使用 kubectl
时,您可以将清单应用到您选择的命名空间,在下面的示例中为 test
kubectl apply -f target/kubernetes/kubernetes.json -n=test
要在清单中指定命名空间,请在 application.properties
中使用以下属性进行自定义
quarkus.kubernetes.namespace=mynamespace
定义 Docker 注册表
可以使用以下属性指定 Docker 注册表
quarkus.container-image.registry=my.docker-registry.net
通过添加此属性以及上一节的其余容器镜像属性,生成的清单将使用镜像 my.docker-registry.net/quarkus/demo-app:1.0
。镜像不是生成的清单中唯一可以自定义的内容,正如以下各节中将要看到的那样。
自动生成拉取密钥
当使用 docker 注册表时,用户通常会提供凭据,以便在构建期间构建镜像并将其推送到指定的注册表。
quarkus.container-image.username=myusername
quarkus.container-image.password=mypassword
Kubernetes 在从注册表中拉取镜像时也需要这些凭据。这就是镜像拉取密钥的用途。镜像拉取密钥是一种特殊的密钥,其中包含所需的凭据。Quarkus 可以在以下情况下自动生成和配置
quarkus.kubernetes.generate-image-pull-secret=true
更具体地说,将生成如下所示的 Secret
apiVersion: v1
kind: Secret
metadata:
name: test-quarkus-app-pull-secret
data:
".dockerconfigjson": ewogCSJhdXRocyI6IHsKCQkibXkucmVnaXN0eS5vcmciOiB7CiAJCQkiYXV0aCI6ImJYbDFjMlZ5Ym1GdFpUcHRlWEJoYzNOM2IzSmsiCgkJfQoJfQp9
type: kubernetes.io/dockerconfigjson
并且还将 test-quarkus-app-pull-secret
添加到 imagePullSecrets
列表中。
标签和注解
标签
生成的清单使用 Kubernetes 推荐标签。可以使用 quarkus.kubernetes.name
、quarkus.kubernetes.version
和 quarkus.kubernetes.part-of
自定义这些标签。例如,通过将以下配置添加到您的 application.properties
quarkus.kubernetes.part-of=todo-app
quarkus.kubernetes.name=todo-rest
quarkus.kubernetes.version=1.0-rc.1
正如在OpenShift部分中详细描述的那样,自定义 OpenShift(或 Knative)属性的方式相同,但要将
|
生成的资源中的标签将如下所示
"labels" : {
"app.kubernetes.io/part-of" : "todo-app",
"app.kubernetes.io/name" : "todo-rest",
"app.kubernetes.io/version" : "1.0-rc.1"
}
您还可以通过应用以下配置来删除
|
自定义标签
要添加其他自定义标签,例如 foo=bar
,只需应用以下配置
quarkus.kubernetes.labels.foo=bar
当使用 quarkus-container-image-jib 扩展构建容器镜像时,通过上述属性添加的任何标签也将添加到生成的容器镜像中。 |
环境变量
Kubernetes 提供了多种定义环境变量的方法
-
键/值对
-
从 Secret 或 ConfigMap 导入所有值
-
插入由 Secret 或 ConfigMap 中给定字段标识的单个值
-
插入来自同一资源中字段的值
来自键/值对的环境变量
要将键/值对作为环境变量添加到生成的资源中
quarkus.kubernetes.env.vars.my-env-var=foobar
上面的命令会将 MY_ENV_VAR=foobar
添加为环境变量。请注意,键 my-env-var
将转换为大写,破折号将替换为下划线,从而生成 MY_ENV_VAR
。
来自 Secret 的环境变量
要将 Secret
的所有键/值对添加为环境变量,只需应用以下配置,用逗号 (,
) 分隔要用作源的每个 Secret
quarkus.kubernetes.env.secrets=my-secret,my-other-secret
这将在容器定义中生成以下内容
envFrom:
- secretRef:
name: my-secret
optional: false
- secretRef:
name: my-other-secret
optional: false
以下内容从 my-secret
Secret 中提取由 keyName
字段标识的值到 foo
环境变量中
quarkus.kubernetes.env.mapping.foo.from-secret=my-secret
quarkus.kubernetes.env.mapping.foo.with-key=keyName
这将在容器的 env
部分中生成以下内容
- env:
- name: FOO
valueFrom:
secretKeyRef:
key: keyName
name: my-secret
optional: false
也可以在从 Secret 生成 env 时添加前缀,以下配置使用键 foo
从 Secret 创建环境变量,并添加前缀 BAR
quarkus.kubernetes.env.secrets=foo
quarkus.kubernetes.env.using-prefix."BAR".for-secret=foo
这将在容器的 env
部分中生成以下内容
- env:
envFrom:
- secretRef:
name: foo
prefix: BAR
来自 ConfigMap 的环境变量
要将 ConfigMap
中的所有键/值对添加为环境变量,只需应用以下配置,用逗号 (,
) 分隔要用作源的每个 ConfigMap
quarkus.kubernetes.env.configmaps=my-config-map,another-config-map
这将在容器定义中生成以下内容
envFrom:
- configMapRef:
name: my-config-map
optional: false
- configMapRef:
name: another-config-map
optional: false
以下内容从 my-config-map
ConfigMap 中提取由 keyName
字段标识的值到 foo
环境变量中
quarkus.kubernetes.env.mapping.foo.from-configmap=my-configmap
quarkus.kubernetes.env.mapping.foo.with-key=keyName
这将在容器的 env
部分中生成以下内容
- env:
- name: FOO
valueFrom:
configMapKeyRef:
key: keyName
name: my-configmap
optional: false
也可以在从 ConfigMap 生成 env 时添加前缀,以下配置使用键 foo
从 ConfigMap 创建环境变量,并添加前缀 BAR
quarkus.kubernetes.env.configmaps=foo
quarkus.kubernetes.prefixes."BAR".for-configmap=foo
这将在容器的 env
部分中生成以下内容
- env:
envFrom:
- configMapRef:
name: foo
prefix: BAR
来自字段的环境变量
也可以通过指定要用作源的字段的路径,使用来自另一个字段的值来添加新的环境变量,如下所示
quarkus.kubernetes.env.fields.foo=metadata.name
正如在OpenShift部分中详细描述的那样,自定义 OpenShift 属性的方式相同,但要将
|
验证
两个定义之间的冲突,例如错误地分配了一个值并指定一个变量是从一个字段派生的,将在构建时导致抛出错误,以便您有机会在将应用程序部署到集群之前解决问题,在集群中可能更难以诊断问题的来源。
同样,两个冗余的定义,例如从同一个 Secret 多次定义注入,不会导致问题,但确实会报告一个警告,让您知道您可能无意复制该定义。
向后兼容性
Kubernetes 扩展的先前版本支持添加环境变量的不同语法。仍然支持旧语法,但已弃用,建议您迁移到新语法。
旧 |
新 |
||
普通变量 |
|
|
|
来自字段 |
|
|
|
全部来自 |
|
|
|
全部来自 |
|
|
|
来自一个 |
|
|
|
|
|
||
来自一个 |
|
|
|
|
|
如果在保留旧语法的同时使用新语法重新定义相同的变量,则只会保留新版本,并且会发出警告以提醒您该问题。例如,如果您同时定义 quarkus.kubernetes.env-vars.my-env-var.value=foobar 和 quarkus.kubernetes.env.vars.my-env-var=newValue ,则扩展程序只会生成环境变量 MY_ENV_VAR=newValue 并发出警告。 |
挂载卷
Kubernetes 扩展允许用户配置应用程序的卷和挂载。可以使用简单的配置挂载任何卷
quarkus.kubernetes.mounts.my-volume.path=/where/to/mount
这会将卷 my-volume
的挂载添加到 pod 的路径 /where/to/mount
。可以配置卷本身,如下面的部分所示。
传递应用程序配置
Quarkus 支持从外部位置传递配置(通过 SmallRye Config)。这通常需要设置额外的环境变量或系统属性。当您需要使用 secret 或 config map 来进行应用程序配置时,您需要
-
定义一个卷
-
挂载卷
-
为
SMALLRYE_CONFIG_LOCATIONS
创建一个环境变量
为了简化操作,quarkus 提供了单步替代方案
quarkus.kubernetes.app-secret=<name of the secret containing the configuration>
或
quarkus.kubernetes.app-config-map=<name of the config map containing the configuration>
使用这些属性时,生成的清单将包含所有必需的内容。应用程序配置卷将分别使用路径:/mnt/app-secret
和 /mnt/app-config-map
为 secret 和 configmap 创建。
注意:用户可以同时使用这两个属性。
添加就绪和存活探针
默认情况下,Kubernetes 资源在生成的 Deployment
中不包含就绪和存活探针。但是,添加它们只是添加 SmallRye Health 扩展的问题,如下所示
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-health</artifactId>
</dependency>
implementation("io.quarkus:quarkus-smallrye-health")
生成的探针的值将由配置的运行状况属性确定:quarkus.smallrye-health.root-path
、quarkus.smallrye-health.liveness-path
和 quarkus.smallrye-health.readiness-path
。有关运行状况扩展的更多信息,请参见相关的指南。
自定义就绪探针
要将探针的初始延迟设置为 20 秒,并将周期设置为 45
quarkus.kubernetes.readiness-probe.initial-delay=20s
quarkus.kubernetes.readiness-probe.period=45s
添加 hostAliases
要将条目添加到 Pod 的 /etc/hosts
文件中(有关更多信息,请参见Kubernetes 文档),只需应用以下配置
quarkus.kubernetes.hostaliases."10.0.0.0".hostnames=foo.com,bar.org
这将在 deployment
定义中生成以下 hostAliases
部分
kind: Deployment
spec:
template:
spec:
hostAliases:
- hostnames:
- foo.com
- bar.org
ip: 10.0.0.0
添加 nodeSelector
要在生成的 Deployment
中添加 nodeSelector(有关更多信息,请参见Kubernetes 文档),只需应用以下配置
quarkus.kubernetes.node-selector.key=diskType
quarkus.kubernetes.node-selector.value=ssd
这将在 deployment
定义中生成以下 nodeSelector
部分
kind: Deployment
spec:
template:
spec:
nodeSelector:
diskType: ssd
容器资源管理
可以使用以下配置将 CPU 和内存限制以及请求应用于 Container
(有关更多信息,请参见Kubernetes 文档)
quarkus.kubernetes.resources.requests.memory=64Mi
quarkus.kubernetes.resources.requests.cpu=250m
quarkus.kubernetes.resources.limits.memory=512Mi
quarkus.kubernetes.resources.limits.cpu=1000m
这将在 container
部分中生成以下条目
containers:
- resources:
limits:
cpu: 1000m
memory: 512Mi
requests:
cpu: 250m
memory: 64Mi
在 Kubernetes 中公开您的应用程序
Kubernetes 使用 Ingress 资源公开应用程序。要生成 Ingress 资源,只需应用以下配置
quarkus.kubernetes.ingress.expose=true
这将生成以下 Ingress 资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
app.quarkus.io/commit-id: a58d2211c86f07a47d4b073ea9ce000d2c6828d5
app.quarkus.io/build-timestamp: 2022-06-29 - 13:22:41 +0000
labels:
app.kubernetes.io/name: kubernetes-with-ingress
app.kubernetes.io/version: 0.1-SNAPSHOT
name: kubernetes-with-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: kubernetes-with-ingress
port:
name: http
path: /
pathType: Prefix
将这些资源部署到 Kubernetes 后,Ingress 资源将允许不安全的连接访问您的应用程序。
添加 Ingress 规则
要自定义生成的 Ingress 资源的默认 host
和 path
属性,您需要应用以下配置
quarkus.kubernetes.ingress.expose=true
# To change the Ingress host. By default, it's empty.
quarkus.kubernetes.ingress.host=prod.svc.url
# To change the Ingress path of the generated Ingress rule. By default, it's "/".
quarkus.kubernetes.ports.http.path=/prod
这将生成以下 Ingress 资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
app.kubernetes.io/name: kubernetes-with-ingress
app.kubernetes.io/version: 0.1-SNAPSHOT
name: kubernetes-with-ingress
spec:
rules:
- host: prod.svc.url
http:
paths:
- backend:
service:
name: kubernetes-with-ingress
port:
name: http
path: /prod
pathType: Prefix
此外,您还可以通过添加以下配置来添加新的 Ingress 规则
# Example to add a new rule
quarkus.kubernetes.ingress.rules.1.host=dev.svc.url
quarkus.kubernetes.ingress.rules.1.path=/dev
quarkus.kubernetes.ingress.rules.1.path-type=ImplementationSpecific
# by default, path type is Prefix
# Example to add a new rule that use another service binding
quarkus.kubernetes.ingress.rules.2.host=alt.svc.url
quarkus.kubernetes.ingress.rules.2.path=/ea
quarkus.kubernetes.ingress.rules.2.service-name=updated-service
quarkus.kubernetes.ingress.rules.2.service-port-name=tcpurl
这将生成以下 Ingress 资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
labels:
app.kubernetes.io/name: kubernetes-with-ingress
app.kubernetes.io/version: 0.1-SNAPSHOT
name: kubernetes-with-ingress
spec:
rules:
- host: prod.svc.url
http:
paths:
- backend:
service:
name: kubernetes-with-ingress
port:
name: http
path: /prod
pathType: Prefix
- host: dev.svc.url
http:
paths:
- backend:
service:
name: kubernetes-with-ingress
port:
name: http
path: /dev
pathType: ImplementationSpecific
- host: alt.svc.url
http:
paths:
- backend:
service:
name: updated-service
port:
name: tcpurl
path: /ea
pathType: Prefix
保护 Ingress 资源
为了保护传入连接,Kubernetes 允许通过指定包含 TLS 私钥和证书的 Secret 在 Ingress 资源中启用 TLS。您可以通过简单地添加 "tls.secret-name" 属性来生成安全的 Ingress 资源
quarkus.kubernetes.ingress.expose=true
## Ingress TLS configuration:
quarkus.kubernetes.ingress.tls.my-secret.enabled=true
此配置将生成以下安全的 Ingress 资源
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
...
name: kubernetes-with-secure-ingress
spec:
rules:
...
tls:
- secretName: my-secret
现在,Kubernetes 将使用在名称为 "my-secret" 的 secret 中提供的证书来验证所有传入连接的 SSL。
有关如何在此处创建 secret 的更多信息。 |
使用 Kubernetes 客户端
部署到 Kubernetes 并且需要访问 API 服务器的应用程序通常会使用 kubernetes-client
扩展
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kubernetes-client</artifactId>
</dependency>
implementation("io.quarkus:quarkus-kubernetes-client")
要从 Kubernetes 集群内部访问 API 服务器,需要一些 RBAC 相关资源(例如 ServiceAccount、RoleBinding)。为了简化 kubernetes-client
扩展的使用,kubernetes
扩展将生成一个 RoleBinding 资源,该资源将名为 "view" 的集群角色绑定到应用程序 ServiceAccount 资源。重要的是要注意,集群角色 "view" 不会自动生成,因此您应该已经在集群中安装了具有名称 "view" 的此集群角色。
另一方面,您可以完全自定义角色、主体和角色绑定以使用 quarkus.kubernetes.rbac.role-bindings
下的属性生成,如果存在,kubernetes-client
扩展将使用它,因此不会生成任何 RoleBinding 资源。
您可以使用属性 |
生成 RBAC 资源
在某些情况下,有必要生成额外的 RBAC 资源,这些资源由 Kubernetes 用于授予或限制对其他资源的访问权限。例如,在我们的用例中,我们正在构建 Kubernetes 运算符,该运算符需要读取已安装的 deployment 列表。为此,我们需要将服务帐户分配给我们的运算符,并将此服务帐户与授予对 Deployment 资源访问权限的角色相关联。让我们看看如何使用 quarkus.kubernetes.rbac
属性来实现这一点
# Generate the Role resource with name "my-role" (1)
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.api-groups=extensions,apps
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.resources=deployments
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.verbs=list
1 | 在此示例中,将生成角色 "my-role",其中包含用于获取 deployment 列表的策略规则。 |
默认情况下,如果配置了一个角色,也将生成 RoleBinding 资源,以将此角色与 ServiceAccount 资源相关联。
此外,您可以更好地控制要生成的 RBAC 资源
# Generate Role resource with name "my-role" (1)
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.api-groups=extensions,apps
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.resources=deployments
quarkus.kubernetes.rbac.roles.my-role.policy-rules.0.verbs=get,watch,list
# Generate ServiceAccount resource with name "my-service-account" in namespace "my_namespace" (2)
quarkus.kubernetes.rbac.service-accounts.my-service-account.namespace=my_namespace
# Bind Role "my-role" with ServiceAccount "my-service-account" (3)
quarkus.kubernetes.rbac.role-bindings.my-role-binding.subjects.my-service-account.kind=ServiceAccount
quarkus.kubernetes.rbac.role-bindings.my-role-binding.subjects.my-service-account.namespace=my_namespace
quarkus.kubernetes.rbac.role-bindings.my-role-binding.role-name=my-role
1 | 在此示例中,将生成具有指定策略规则的角色 "my-role"。 |
2 | 此外,还将生成服务帐户 "my-service-account"。 |
3 | 我们可以通过选择要使用的角色和主体来配置生成的 RoleBinding 资源。 |
最后,我们还可以生成 "ClusterRole" 类型的集群范围角色资源和 "ClusterRoleBinding" 资源,如下所示
# Generate ClusterRole resource with name "my-cluster-role" (1)
quarkus.kubernetes.rbac.cluster-roles.my-cluster-role.policy-rules.0.api-groups=extensions,apps
quarkus.kubernetes.rbac.cluster-roles.my-cluster-role.policy-rules.0.resources=deployments
quarkus.kubernetes.rbac.cluster-roles.my-cluster-role.policy-rules.0.verbs=get,watch,list
# Bind the ClusterRole "my-cluster-role" with the application service account
quarkus.kubernetes.rbac.cluster-role-bindings.my-cluster-role-binding.subjects.manager.kind=Group
quarkus.kubernetes.rbac.cluster-role-bindings.my-cluster-role-binding.subjects.manager.api-group=rbac.authorization.k8s.io
quarkus.kubernetes.rbac.cluster-role-bindings.my-cluster-role-binding.role-name=my-cluster-role (2)
1 | 在此示例中,将生成具有指定策略规则的集群角色 "my-cluster-role"。 |
2 | 要使用的 ClusterRole 资源的名称。Role 资源是基于命名空间的,因此不允许在 ClusterRoleBinding 资源中使用。 |
部署到本地 Kubernetes
在部署到本地 Kubernetes 环境时,用户通常会对清单进行细微更改,以简化开发过程。最常见的更改是
-
将
imagePullPolicy
设置为IfNotPresent
-
使用
NodePort
作为Service
类型
Quarkus 提供了扩展,这些扩展默认设置了这些选项。此类扩展是
-
quarkus-minikube
-
quarkus-kind
如果扩展列表与您使用的工具不匹配(例如 Docker Desktop、microk8s 等),则建议使用 quarkus-minikube
扩展,因为它的默认设置对于大多数环境来说应该是合理的。
部署到 Minikube
当需要 Kubernetes 集群用于开发目的时,Minikube 非常受欢迎。为了使部署到 Minikube 的体验尽可能顺畅,Quarkus 提供了 quarkus-minikube
扩展。可以像这样将此扩展添加到项目中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-minikube</artifactId>
</dependency>
implementation("io.quarkus:quarkus-minikube")
此扩展的目的是生成专门为 Minikube 定制的 Kubernetes 清单(minikube.yaml
和 minikube.json
)。此扩展假设以下几点
-
用户不会使用镜像注册表,而是通过直接将其构建到 Minikube 的 Docker 守护程序中来使他们的容器镜像可以访问 Kubernetes 集群。要使用 Minikube 的 Docker 守护程序,您必须首先执行
eval $(minikube -p minikube docker-env)
-
部署到 Kubernetes 的应用程序不会通过 Kubernetes
Ingress
访问,而是作为NodePort
Service
访问。这样做的好处是可以通过执行以下命令轻松检索应用程序的 URLminikube service list
要控制在这种情况下使用的 nodePort,用户可以设置 quarkus.kubernetes.node-port
。但是请注意,此配置完全是可选的,因为如果没有设置,Quarkus 将自动使用适当的(且不变的)值。
强烈建议不要在使用 Minikube 扩展生成的清单部署到生产环境,因为这些清单仅用于开发目的。部署到生产环境时,请考虑使用原始 Kubernetes 清单(或以 OpenShift 为目标时使用 OpenShift 清单)。 |
如果 Minikube 扩展所做的假设不适合您的工作流程,那么没有任何东西可以阻止您使用常规 Kubernetes 扩展来生成 Kubernetes 清单并将它们应用到您的 Minikube 集群。 |
部署到 Kind
Kind 是另一种流行的工具,用作开发目的的 Kubernetes 集群。为了使部署到 Kind 的体验尽可能顺畅,Quarkus 提供了 quarkus-kind
扩展。可以像这样将此扩展添加到项目中
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-kind</artifactId>
</dependency>
此扩展的目的是生成专门为 Kind 定制的 Kubernetes 清单(kind.yaml
和 kind.json
),并在执行容器镜像构建时自动化将镜像加载到集群的过程。定制的清单将与 Minikube 非常相似(它们共享相同的规则)(请参见上文)。
使用 application.properties 调整生成的资源
Kubernetes 扩展允许使用 application.properties
文件调整生成的清单。以下是一些示例
配置选项
下表描述了所有可用的配置选项。
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
字符串列表 |
||
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
字符串 |
||
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
应用程序的名称。此值将用于命名 Kubernetes 资源,例如: - Deployment - Service 等等…… 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
生成的资源应属于的命名空间。 如果未设置值,则不会将“namespace”字段添加到生成的清单的“metadata”部分。 这反过来意味着,当清单应用于集群时,命名空间将从当前的 Kubernetes 上下文中解析(有关更多详细信息,请参阅 organize-cluster-access-kubeconfig)。 环境变量: 显示更多 |
字符串 |
|
要添加到所有资源的自定义标签。 环境变量: 显示更多 |
Map<String,String> |
|
要添加到所有资源的自定义注解。 环境变量: 显示更多 |
Map<String,String> |
|
|
|
|
是否将构建时间戳添加到 Kubernetes 注解中。 这是一种非常有用的方法,可以使同一应用程序的连续构建的清单有所不同 - 从而确保 Kubernetes 将应用更新的资源。 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
字符串列表 |
||
字符串列表 |
||
字符串 |
||
字符串 |
||
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
|
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
|
|
|
字符串列表 |
||
当提供容器镜像用户名和密码时,启用镜像拉取密钥的生成。 环境变量: 显示更多 |
布尔值 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
|
||
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
定义用于抓取值的注解前缀,此值将用作其他注解名称默认值的基础。 更改生成的注解的基础可以更容易地定义重新标记规则,并避免意外的连锁反应。 默认值为 环境变量: 显示更多 |
字符串 |
|
定义用于指示应抓取服务的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示抓取路径的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要抓取的端口的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要用于抓取的方案的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
要挂载的密钥的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的 ConfigMap 的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
字符串列表 |
||
Git 存储库 URL。 环境变量: 显示更多 |
字符串 |
必需 |
要挂载的存储库目录。 环境变量: 显示更多 |
字符串 |
|
要使用的提交哈希。 环境变量: 显示更多 |
字符串 |
|
要挂载的声明的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
分区。 环境变量: 显示更多 |
整数 |
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
共享名称。 环境变量: 显示更多 |
字符串 |
必需 |
Secret 名称。 环境变量: 显示更多 |
字符串 |
必需 |
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
vhd blob 对象的 URI,如果 Kind 是 Managed,则是 Azure 托管数据盘的 resourceID 环境变量: 显示更多 |
字符串 |
必需 |
磁盘的种类。 环境变量: 显示更多 |
|
|
磁盘缓存模式。 环境变量: 显示更多 |
|
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
容器镜像。 环境变量: 显示更多 |
字符串 |
|
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
容器镜像。 环境变量: 显示更多 |
字符串 |
|
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
IP 地址。 环境变量: 显示更多 |
字符串 |
|
要解析到 IP 的主机名。 环境变量: 显示更多 |
字符串列表 |
|
nodeSelector 的键。 环境变量: 显示更多 |
字符串 |
必需 |
nodeSelector 的值。 环境变量: 显示更多 |
字符串 |
必需 |
字符串 |
||
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
如果设置,secret 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
如果设置,config map 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
角色的名称。 环境变量: 显示更多 |
字符串 |
|
角色的命名空间。 环境变量: 显示更多 |
字符串 |
|
要添加到 Role 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
集群角色的名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 ClusterRole 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
服务帐户的名称。 环境变量: 显示更多 |
字符串 |
|
服务帐户的命名空间。 环境变量: 显示更多 |
字符串 |
|
服务帐户的标签。 环境变量: 显示更多 |
Map<String,String> |
|
如果为 true,则此服务帐户将用于生成的 Deployment 资源中。 环境变量: 显示更多 |
布尔值 |
|
要生成的 RoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 Role Binding 资源中由 RoleRef 元素使用的 Role 资源的名称。 默认情况下,它是 “view” 角色名称。 环境变量: 显示更多 |
字符串 |
|
在 环境变量: 显示更多 |
布尔值 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
要生成的 ClusterRoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 ClusterRoleBinding 资源中由 RoleRef 元素使用的 ClusterRole 资源的名称。 环境变量: 显示更多 |
字符串 |
必需 |
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux level 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux role 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 类型标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 用户标签。 环境变量: 显示更多 |
字符串 |
|
要使用的 GMSA 凭据规范的名称。 环境变量: 显示更多 |
字符串 |
|
GMSACredentialSpec 是 GMSA 准入 Webhook (windows-gsma) 在其中内联由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范内容的位置。 环境变量: 显示更多 |
字符串 |
|
在 Windows 中运行容器进程入口点的用户名。 环境变量: 显示更多 |
字符串 |
|
HostProcess 确定容器是否应作为“主机进程”容器运行。 环境变量: 显示更多 |
布尔值 |
|
用于运行容器进程入口点的 UID。 环境变量: 显示更多 |
long |
|
用于运行容器进程入口点的 GID。 环境变量: 显示更多 |
long |
|
指示容器必须以非 root 用户身份运行。 环境变量: 显示更多 |
布尔值 |
|
应用于每个容器中运行的第一个进程的组列表,此外还有容器的主 GID。如果未指定,则不会向任何容器添加组。 环境变量: 显示更多 |
long 列表 |
|
应用于 Pod 中所有容器的特殊补充组。 环境变量: 显示更多 |
long |
|
Sysctls 包含用于 Pod 的命名空间 sysctl 列表。 环境变量: 显示更多 |
Map<String,String> |
|
它保存了在挂载卷时将 fsGroup 应用于卷的策略。值:OnRootMismatch, Always 环境变量: 显示更多 |
|
|
用于控制非幂等字段是否包含在生成的 kubernetes 资源中的开关,以提高 git-ops 兼容性。 环境变量: 显示更多 |
布尔值 |
|
是否应将 vcs-uri 注解添加到生成的配置中。 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
要使用的部署资源类型。支持的值为 'StatefulSet'、'Job'、'CronJob' 和 'Deployment',默认为后者。 环境变量: 显示更多 |
|
|
目标部署平台。默认为 kubernetes。可以是 kubernetes、openshift、knative、minikube 等,或以上任何以逗号分隔的列表组合。 环境变量: 显示更多 |
字符串列表 |
|
|
|
|
指定更新过程中可以不可用的 Pod 的最大数量。 环境变量: 显示更多 |
字符串 |
|
指定可以创建的超过所需 Pod 数量的 Pod 的最大数量。 环境变量: 显示更多 |
字符串 |
|
整数 |
|
|
当 serviceType 设置为 node-port 时要设置的 nodePort。 环境变量: 显示更多 |
整数 |
|
布尔值 |
|
|
字符串 |
||
默认目标命名端口。如果未提供,则将从 Service 资源端口中扣除。选项有:"http" 和 "https"。 环境变量: 显示更多 |
字符串 |
|
Ingress 的类。如果省略 ingressClassName,则使用默认的 Ingress 类。 环境变量: 显示更多 |
字符串 |
|
要添加到公开(路由或 Ingress)资源的自定义注解 环境变量: 显示更多 |
Map<String,String> |
|
如果为 true,它将在生成的 Ingress 资源中使用 TLS 配置。 环境变量: 显示更多 |
布尔值 |
|
要包含在 TLS 证书中的主机列表。默认情况下,它将使用应用程序主机。 环境变量: 显示更多 |
字符串列表 |
|
将使用该规则的主机。 环境变量: 显示更多 |
字符串 |
必需 |
将使用该规则的路径。默认为 "/"。 环境变量: 显示更多 |
字符串 |
|
Ingress 规则使用的路径类型策略。默认为 "Prefix"。 环境变量: 显示更多 |
字符串 |
|
此 Ingress 规则要使用的服务名称。默认为应用程序生成的服务名称。 环境变量: 显示更多 |
字符串 |
|
此 Ingress 规则要使用的服务端口名称。默认为应用程序生成的服务的端口名称。 环境变量: 显示更多 |
字符串 |
|
此 Ingress 规则要使用的服务端口号。仅当未设置 servicePortName 时才使用。 环境变量: 显示更多 |
整数 |
|
指定作业在任何给定时间应运行的 Pod 的最大期望数量。 环境变量: 显示更多 |
整数 |
|
指定作业应运行的成功完成的 Pod 的期望数量。 环境变量: 显示更多 |
整数 |
|
CompletionMode 指定如何跟踪 Pod 完成。 环境变量: 显示更多 |
|
|
指定在将此作业标记为失败之前的重试次数。 环境变量: 显示更多 |
整数 |
|
指定作业可以持续活动的最长时间(以秒为单位),相对于 startTime,之后系统会尝试终止它;值必须为正整数。 环境变量: 显示更多 |
long |
|
限制已完成执行的 Job 的生命周期(无论是 Complete 还是 Failed)。如果设置了此字段,则在 Job 完成后的 ttlSecondsAfterFinished 秒后,它有资格被自动删除。 环境变量: 显示更多 |
整数 |
|
Suspend 指定 Job 控制器是否应创建 Pod。 环境变量: 显示更多 |
布尔值 |
|
|
|
|
Cron 格式的计划,请参见 Cron。 环境变量: 显示更多 |
字符串 |
|
作业计划的时区。默认值为 kube-controller-manager 的本地时间。 环境变量: 显示更多 |
字符串 |
|
ConcurrencyPolicy 描述了作业的处理方式。 环境变量: 显示更多 |
|
|
如果作业因任何原因错过预定时间,则启动作业的截止时间(以秒为单位)。错过的作业执行将被视为失败的作业。 环境变量: 显示更多 |
long |
|
要保留的失败作业的数量。默认值为 1。 环境变量: 显示更多 |
整数 |
|
要保留的成功完成作业的数量。默认值为 3。 环境变量: 显示更多 |
整数 |
|
指定作业在任何给定时间应运行的 Pod 的最大期望数量。 环境变量: 显示更多 |
整数 |
|
指定作业应运行的成功完成的 Pod 的期望数量。 环境变量: 显示更多 |
整数 |
|
CompletionMode 指定如何跟踪 Pod 完成。 环境变量: 显示更多 |
|
|
指定在将此作业标记为失败之前的重试次数。 环境变量: 显示更多 |
整数 |
|
指定作业可以持续活动的最长时间(以秒为单位),相对于 startTime,之后系统会尝试终止它;值必须为正整数。 环境变量: 显示更多 |
long |
|
限制已完成执行的 Job 的生命周期(无论是 Complete 还是 Failed)。如果设置了此字段,则在 Job 完成后的 ttlSecondsAfterFinished 秒后,它有资格被自动删除。 环境变量: 显示更多 |
整数 |
|
Suspend 指定 Job 控制器是否应创建 Pod。 环境变量: 显示更多 |
布尔值 |
|
作业容器失败时的重启策略。 环境变量: 显示更多 |
|
|
如果为 true,则将启用 Pod 中的调试模式。 环境变量: 显示更多 |
布尔值 |
|
要使用的传输。 环境变量: 显示更多 |
字符串 |
|
如果启用,则意味着 JVM 将等待调试器附加,然后再执行主类。如果为 false,则 JVM 将立即执行主类,同时侦听调试器连接。 环境变量: 显示更多 |
字符串 |
|
它指定调试套接字将侦听的地址。 环境变量: 显示更多 |
整数 |
|
如果为 true,则将生成 init 任务。否则,将跳过 init 任务资源生成。 环境变量: 显示更多 |
布尔值 |
|
init 容器使用的 init 任务镜像。 环境变量: 显示更多 |
字符串 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
如果为 true,则将生成 init 任务。否则,将跳过 init 任务资源生成。 环境变量: 显示更多 |
布尔值 |
|
init 容器使用的 init 任务镜像。 环境变量: 显示更多 |
字符串 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
可以选择设置生成的 Kubernetes 资源将写入的目录。默认为 环境变量: 显示更多 |
字符串 |
|
如果设置为 true,Quarkus 将尝试将应用程序部署到目标 Kubernetes 集群 环境变量: 显示更多 |
布尔值 |
|
如果启用了部署,它将遵循此策略来更新到目标 Kubernetes 集群的资源。 环境变量: 显示更多 |
|
|
使用非标准类型的属性可以通过展开属性来引用。例如,要定义一个类型为 Probe
的 kubernetes-readiness-probe
quarkus.kubernetes.readiness-probe.initial-delay=20s
quarkus.kubernetes.readiness-probe.period=45s
在此示例中,initial-delay
和 period
是 Probe
类型的字段。下面您将找到描述所有可用类型的表。
客户端连接配置
您可能需要配置与 Kubernetes 集群的连接。默认情况下,它会自动使用 kubectl
使用的活动上下文。
例如,如果您的集群 API 端点使用自签名 SSL 证书,您需要显式配置客户端以信任它。您可以通过定义以下属性来实现此目的
quarkus.kubernetes-client.trust-certs=true
下面提供了 Kubernetes 客户端配置属性的完整列表。
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
如果 API 服务器提供自签名证书,客户端是否应信任该证书 环境变量: 显示更多 |
布尔值 |
|
Kubernetes API 服务器的 URL 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
字符串 |
||
字符串 |
||
客户端证书文件 环境变量: 显示更多 |
字符串 |
|
客户端证书数据 环境变量: 显示更多 |
字符串 |
|
客户端密钥文件 环境变量: 显示更多 |
字符串 |
|
客户端密钥数据 环境变量: 显示更多 |
字符串 |
|
客户端密钥算法 环境变量: 显示更多 |
字符串 |
|
客户端密钥密码 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
字符串 |
||
字符串 |
||
Watch 重连间隔 环境变量: 显示更多 |
||
Watch 失败情况下的最大重连尝试次数。默认情况下,重连尝试次数没有限制 环境变量: 显示更多 |
整数 |
|
等待与 API 服务器建立连接的最大时长 环境变量: 显示更多 |
||
等待 API 服务器完成请求的最大时长 环境变量: 显示更多 |
||
HTTP 代码 >= 500 的 API 请求的最大重试尝试次数 环境变量: 显示更多 |
整数 |
|
HTTP 代码 >= 500 的 API 请求的重试尝试之间的时间间隔 环境变量: 显示更多 |
||
用于访问 Kubernetes API 服务器的 HTTP 代理 环境变量: 显示更多 |
字符串 |
|
用于访问 Kubernetes API 服务器的 HTTPS 代理 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
字符串 |
||
字符串列表 |
||
启用 RBAC 清单的生成。如果启用并且没有使用属性 环境变量: 显示更多 |
布尔值 |
|
类型 |
默认 |
|
是否应使用 Kubernetes 的开发服务。(默认为 true)如果为 true 并且未配置 Kubernetes 客户端,则将启动并使用 Kubernetes 集群。 环境变量: 显示更多 |
布尔值 |
|
要使用的 Kubernetes API 服务器版本。如果未设置,则 Kubernetes 的开发服务将使用给定风格的最新支持版本。请参阅 https://github.com/dajudge/kindcontainer/blob/master/k8s-versions.json 环境变量: 显示更多 |
字符串 |
|
要使用的风格(kind、k3s 或 api-only)。如果未设置,Kubernetes 的开发服务将设置为:api-only。 环境变量: 显示更多 |
|
|
默认情况下,如果找到 kubeconfig,Kubernetes 的开发服务将不会启动。将此设置为 true 可覆盖 kubeconfig 配置。 环境变量: 显示更多 |
布尔值 |
|
指示 Quarkus 开发服务管理的 Kubernetes 集群是否共享。共享时,Quarkus 使用基于标签的服务发现来查找正在运行的容器。如果找到匹配的容器,则使用该容器,因此不会启动第二个容器。否则,Kubernetes 的开发服务将启动一个新的容器。 发现使用 容器共享仅在开发模式下使用。 环境变量: 显示更多 |
布尔值 |
|
附加到启动的容器的 当您需要多个共享 Kubernetes 集群时,将使用此属性。 环境变量: 显示更多 |
字符串 |
|
传递给容器的环境变量。 环境变量: 显示更多 |
Map<String,String> |
OpenShift
将应用程序部署到 OpenShift 的一种方法是使用 s2i(源到镜像)从源创建镜像流,然后部署镜像流
quarkus extension remove kubernetes,jib
quarkus extension add openshift
oc new-project quarkus-project
quarkus build -Dquarkus.container-image.build=true
oc new-app --name=greeting quarkus-project/kubernetes-quickstart:1.0.0-SNAPSHOT
oc expose svc/greeting
oc get route
curl <route>/greeting
./mvnw quarkus:remove-extension -Dextensions="kubernetes, jib"
./mvnw quarkus:add-extension -Dextensions="openshift"
oc new-project quarkus-project
./mvnw clean package -Dquarkus.container-image.build=true
oc new-app --name=greeting quarkus-project/kubernetes-quickstart:1.0.0-SNAPSHOT
oc expose svc/greeting
oc get route
curl <route>/greeting
./gradlew removeExtension --extensions="kubernetes, jib"
./gradlew addExtension --extensions="openshift"
oc new-project quarkus-project
./gradlew build -Dquarkus.container-image.build=true
oc new-app --name=greeting quarkus-project/kubernetes-quickstart:1.0.0-SNAPSHOT
oc expose svc/greeting
oc get route
curl <route>/greeting
请参阅 部署到 OpenShift 中的更多信息。
下面提供了 OpenShift 资源和可自定义属性的描述以及 Kubernetes 资源,以显示适用的相似之处。这包括 oc new-app …
上面的替代方案,即 oc apply -f target/kubernetes/openshift.json
。
要启用 OpenShift 资源的生成,您需要在目标平台中包含 OpenShift
quarkus.kubernetes.deployment-target=openshift
如果您需要为两个平台(vanilla Kubernetes 和 OpenShift)生成资源,则需要同时包含两者(用逗号分隔)。
quarkus.kubernetes.deployment-target=kubernetes,openshift
在执行 ./mvnw package -Dquarkus.container-image.build=true
后,您会注意到创建的其他文件中,在 target/kubernetes/
目录中有两个名为 openshift.json
和 openshift.yml
的文件。
可以使用 kubectl
将这些清单按原样部署到正在运行的集群中
kubectl apply -f target/kubernetes/openshift.json
OpenShift 的用户可能想要使用 oc
而不是 kubectl
oc apply -f target/kubernetes/openshift.json
对于喜欢保持 application.properties
独立于部署平台的用户,可以通过添加 -Dquarkus.kubernetes.deployment-target=openshift
以及 -Dquarkus.kubernetes.deploy=true
,直接在部署命令中指定部署目标。此外,Quarkus 允许将这两个属性合并为一个: -Dquarkus.openshift.deploy=true
。
./mvnw clean package -Dquarkus.openshift.deploy=true
与 gradle 等效
./gradlew build -Dquarkus.openshift.deploy=true
如果同时使用具有冲突值的两个属性,则使用 quarkus.kubernetes.deployment-target
。
Quarkus 还提供了 OpenShift 扩展。此扩展基本上是 Kubernetes 扩展的包装器,使 OpenShift 用户无需将 deployment-target 属性设置为 openshift |
可以使用类似于 Kubernetes 的方法自定义 OpenShift 资源。
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
字符串列表 |
||
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
字符串 |
||
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
应用程序的名称。此值将用于命名 Kubernetes 资源,例如: - Deployment - Service 等等…… 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
生成的资源应属于的命名空间。 如果未设置值,则不会将“namespace”字段添加到生成的清单的“metadata”部分。 这反过来意味着,当清单应用于集群时,命名空间将从当前的 Kubernetes 上下文中解析(有关更多详细信息,请参阅 organize-cluster-access-kubeconfig)。 环境变量: 显示更多 |
字符串 |
|
要添加到所有资源的自定义标签。 环境变量: 显示更多 |
Map<String,String> |
|
要添加到所有资源的自定义注解。 环境变量: 显示更多 |
Map<String,String> |
|
|
|
|
是否将构建时间戳添加到 Kubernetes 注解中。 这是一种非常有用的方法,可以使同一应用程序的连续构建的清单有所不同 - 从而确保 Kubernetes 将应用更新的资源。 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
字符串列表 |
||
字符串列表 |
||
字符串 |
||
字符串 |
||
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
|
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
|
|
|
字符串列表 |
||
当提供容器镜像用户名和密码时,启用镜像拉取密钥的生成。 环境变量: 显示更多 |
布尔值 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
|
||
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
定义用于抓取值的注解前缀,此值将用作其他注解名称默认值的基础。 更改生成的注解的基础可以更容易地定义重新标记规则,并避免意外的连锁反应。 默认值为 环境变量: 显示更多 |
字符串 |
|
定义用于指示应抓取服务的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示抓取路径的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要抓取的端口的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要用于抓取的方案的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
要挂载的密钥的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的 ConfigMap 的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
字符串列表 |
||
Git 存储库 URL。 环境变量: 显示更多 |
字符串 |
必需 |
要挂载的存储库目录。 环境变量: 显示更多 |
字符串 |
|
要使用的提交哈希。 环境变量: 显示更多 |
字符串 |
|
要挂载的声明的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
分区。 环境变量: 显示更多 |
整数 |
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
共享名称。 环境变量: 显示更多 |
字符串 |
必需 |
Secret 名称。 环境变量: 显示更多 |
字符串 |
必需 |
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
vhd blob 对象的 URI,如果 Kind 是 Managed,则是 Azure 托管数据盘的 resourceID 环境变量: 显示更多 |
字符串 |
必需 |
磁盘的种类。 环境变量: 显示更多 |
|
|
磁盘缓存模式。 环境变量: 显示更多 |
|
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
容器镜像。 环境变量: 显示更多 |
字符串 |
|
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
容器镜像。 环境变量: 显示更多 |
字符串 |
|
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
IP 地址。 环境变量: 显示更多 |
字符串 |
|
要解析到 IP 的主机名。 环境变量: 显示更多 |
字符串列表 |
|
字符串 |
必需 |
|
nodeSelector 的值。 环境变量: 显示更多 |
字符串 |
必需 |
字符串 |
||
字符串 |
||
字符串 |
||
内存需求 环境变量: 显示更多 |
字符串 |
|
如果设置,secret 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
如果设置,config map 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
角色的名称。 环境变量: 显示更多 |
字符串 |
|
角色的命名空间。 环境变量: 显示更多 |
字符串 |
|
要添加到 Role 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
集群角色的名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 ClusterRole 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
服务帐户的名称。 环境变量: 显示更多 |
字符串 |
|
服务帐户的命名空间。 环境变量: 显示更多 |
字符串 |
|
服务帐户的标签。 环境变量: 显示更多 |
Map<String,String> |
|
如果为 true,则此服务帐户将用于生成的 Deployment 资源中。 环境变量: 显示更多 |
布尔值 |
|
要生成的 RoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 Role Binding 资源中由 RoleRef 元素使用的 Role 资源的名称。 默认情况下,它是 “view” 角色名称。 环境变量: 显示更多 |
字符串 |
|
在 环境变量: 显示更多 |
布尔值 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
要生成的 ClusterRoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 ClusterRoleBinding 资源中由 RoleRef 元素使用的 ClusterRole 资源的名称。 环境变量: 显示更多 |
字符串 |
必需 |
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux level 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux role 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 类型标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 用户标签。 环境变量: 显示更多 |
字符串 |
|
要使用的 GMSA 凭据规范的名称。 环境变量: 显示更多 |
字符串 |
|
GMSACredentialSpec 是 GMSA 准入 Webhook (windows-gsma) 在其中内联由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范内容的位置。 环境变量: 显示更多 |
字符串 |
|
在 Windows 中运行容器进程入口点的用户名。 环境变量: 显示更多 |
字符串 |
|
HostProcess 确定容器是否应作为“主机进程”容器运行。 环境变量: 显示更多 |
布尔值 |
|
用于运行容器进程入口点的 UID。 环境变量: 显示更多 |
long |
|
用于运行容器进程入口点的 GID。 环境变量: 显示更多 |
long |
|
指示容器必须以非 root 用户身份运行。 环境变量: 显示更多 |
布尔值 |
|
应用于每个容器中运行的第一个进程的组列表,此外还有容器的主 GID。如果未指定,则不会向任何容器添加组。 环境变量: 显示更多 |
long 列表 |
|
应用于 Pod 中所有容器的特殊补充组。 环境变量: 显示更多 |
long |
|
Sysctls 包含用于 Pod 的命名空间 sysctl 列表。 环境变量: 显示更多 |
Map<String,String> |
|
它保存了在挂载卷时将 fsGroup 应用于卷的策略。值:OnRootMismatch, Always 环境变量: 显示更多 |
|
|
用于控制非幂等字段是否包含在生成的 kubernetes 资源中的开关,以提高 git-ops 兼容性。 环境变量: 显示更多 |
布尔值 |
|
是否应将 vcs-uri 注解添加到生成的配置中。 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
要使用的 OpenShift 版本/风味。旧版本的 OpenShift 在它们支持的标签和字段方面存在细微差异。此选项允许用户自动将他们的清单与他们使用的 OpenShift“风味”对齐。 环境变量: 显示更多 |
|
|
要使用的部署资源类型。支持的值为“Deployment”、“StatefulSet”、“Job”、“CronJob”和“DeploymentConfig”。如果 环境变量: 显示更多 |
|
|
整数 |
|
|
当 serviceType 设置为 nodePort 时要设置的 nodePort 环境变量: 显示更多 |
整数 |
|
布尔值 |
|
|
字符串 |
||
目标命名端口。 如果未提供,则将从 Service 资源端口中扣除。 选项为:“http”和“https”。 环境变量: 显示更多 |
字符串 |
|
要添加到公开(路由或 Ingress)资源的自定义注解 环境变量: 显示更多 |
Map<String,String> |
|
要添加到公开(路由或入口)资源的自定义标签 环境变量: 显示更多 |
Map<String,String> |
|
证书颁发机构证书内容。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
最终目标的 CA 证书内容。 环境变量: 显示更多 |
字符串 |
|
不安全连接到路由的预期行为。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
字符串 |
||
指定作业在任何给定时间应运行的 Pod 的最大期望数量。 环境变量: 显示更多 |
整数 |
|
指定作业应运行的成功完成的 Pod 的期望数量。 环境变量: 显示更多 |
整数 |
|
CompletionMode 指定如何跟踪 Pod 完成。 环境变量: 显示更多 |
|
|
指定在将此作业标记为失败之前的重试次数。 环境变量: 显示更多 |
整数 |
|
指定作业可以持续活动的最长时间(以秒为单位),相对于 startTime,之后系统会尝试终止它;值必须为正整数。 环境变量: 显示更多 |
long |
|
限制已完成执行的 Job 的生命周期(无论是 Complete 还是 Failed)。如果设置了此字段,则在 Job 完成后的 ttlSecondsAfterFinished 秒后,它有资格被自动删除。 环境变量: 显示更多 |
整数 |
|
布尔值 |
|
|
|
|
|
Cron 格式的计划,请参见 Cron。 环境变量: 显示更多 |
字符串 |
|
作业计划的时区。默认值为 kube-controller-manager 的本地时间。 环境变量: 显示更多 |
字符串 |
|
ConcurrencyPolicy 描述了作业的处理方式。 环境变量: 显示更多 |
|
|
如果作业因任何原因错过预定时间,则启动作业的截止时间(以秒为单位)。错过的作业执行将被视为失败的作业。 环境变量: 显示更多 |
long |
|
要保留的失败作业的数量。默认值为 1。 环境变量: 显示更多 |
整数 |
|
要保留的成功完成作业的数量。默认值为 3。 环境变量: 显示更多 |
整数 |
|
指定作业在任何给定时间应运行的 Pod 的最大期望数量。 环境变量: 显示更多 |
整数 |
|
指定作业应运行的成功完成的 Pod 的期望数量。 环境变量: 显示更多 |
整数 |
|
CompletionMode 指定如何跟踪 Pod 完成。 环境变量: 显示更多 |
|
|
指定在将此作业标记为失败之前的重试次数。 环境变量: 显示更多 |
整数 |
|
指定作业可以持续活动的最长时间(以秒为单位),相对于 startTime,之后系统会尝试终止它;值必须为正整数。 环境变量: 显示更多 |
long |
|
限制已完成执行的 Job 的生命周期(无论是 Complete 还是 Failed)。如果设置了此字段,则在 Job 完成后的 ttlSecondsAfterFinished 秒后,它有资格被自动删除。 环境变量: 显示更多 |
整数 |
|
Suspend 指定 Job 控制器是否应创建 Pod。 环境变量: 显示更多 |
布尔值 |
|
作业容器失败时的重启策略。 环境变量: 显示更多 |
|
|
如果为 true,则将启用 Pod 中的调试模式。 环境变量: 显示更多 |
布尔值 |
|
字符串 |
|
|
如果启用,则意味着 JVM 将等待调试器附加,然后再执行主类。如果为 false,则 JVM 将立即执行主类,同时侦听调试器连接。 环境变量: 显示更多 |
字符串 |
|
它指定调试套接字将侦听的地址。 环境变量: 显示更多 |
整数 |
|
如果为 true,则将生成 init 任务。否则,将跳过 init 任务资源生成。 环境变量: 显示更多 |
布尔值 |
|
init 容器使用的 init 任务镜像。 环境变量: 显示更多 |
字符串 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
如果为 true,则将生成 init 任务。否则,将跳过 init 任务资源生成。 环境变量: 显示更多 |
布尔值 |
|
init 容器使用的 init 任务镜像。 环境变量: 显示更多 |
字符串 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
如果设置为 true,Quarkus 将尝试将应用程序部署到目标 Kubernetes 集群 环境变量: 显示更多 |
布尔值 |
|
如果启用了部署,它将遵循此策略来更新到目标 Kubernetes 集群的资源。 环境变量: 显示更多 |
|
|
Knative
要启用 Knative 资源的生成,您需要在目标平台中包含 Knative
quarkus.kubernetes.deployment-target=knative
执行 ./mvnw package
后,您会在创建的其他文件中注意到,在 target/kubernetes/
目录中有两个名为 knative.json
和 knative.yml
的文件。
如果您查看任一文件,您会看到它包含一个 Knative Service
。
knative.json
文件的完整源代码如下所示
{
{
"apiVersion" : "serving.quarkus.knative.dev/v1alpha1",
"kind" : "Service",
"metadata" : {
"annotations": {
"app.quarkus.io/vcs-uri" : "<some url>",
"app.quarkus.io/commit-id" : "<some git SHA>"
},
"labels" : {
"app.kubernetes.io/name" : "test-quarkus-app",
"app.kubernetes.io/version" : "1.0.0-SNAPSHOT"
},
"name" : "knative"
},
"spec" : {
"runLatest" : {
"configuration" : {
"revisionTemplate" : {
"spec" : {
"container" : {
"image" : "dev.local/yourDockerUsername/test-quarkus-app:1.0.0-SNAPSHOT",
"imagePullPolicy" : "Always"
}
}
}
}
}
}
}
}
可以使用 kubectl
将生成的清单按原样部署到正在运行的集群
kubectl apply -f target/kubernetes/knative.json
可以使用以下属性自定义生成的服务
构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖
配置属性 |
类型 |
默认 |
---|---|---|
字符串列表 |
||
字符串列表 |
||
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
字符串 |
||
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
应用程序的名称。此值将用于命名 Kubernetes 资源,例如: - Deployment - Service 等等…… 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
生成的资源应属于的命名空间。 如果未设置值,则不会将“namespace”字段添加到生成的清单的“metadata”部分。 这反过来意味着,当清单应用于集群时,命名空间将从当前的 Kubernetes 上下文中解析(有关更多详细信息,请参阅 organize-cluster-access-kubeconfig)。 环境变量: 显示更多 |
字符串 |
|
Map<String,String> |
||
要添加到所有资源的自定义注解。 环境变量: 显示更多 |
Map<String,String> |
|
|
|
|
是否将构建时间戳添加到 Kubernetes 注解中。 这是一种非常有用的方法,可以使同一应用程序的连续构建的清单有所不同 - 从而确保 Kubernetes 将应用更新的资源。 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
如果为 环境变量: 显示更多 |
布尔值 |
|
字符串 |
||
字符串列表 |
||
字符串列表 |
||
字符串 |
||
字符串 |
||
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
整数 |
||
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
|
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
|
|
|
字符串列表 |
||
当提供容器镜像用户名和密码时,启用镜像拉取密钥的生成。 环境变量: 显示更多 |
布尔值 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
|
||
|
||
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
|
||
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
|
||
|
||
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
当为 true(默认值)时,发出一组注解以标识应由 prometheus 抓取以获取指标的服务。 在使用带有 ServiceMonitor 的 Prometheus 运算符的配置中,注解可能不是必需的。 环境变量: 显示更多 |
布尔值 |
|
定义用于抓取值的注解前缀,此值将用作其他注解名称默认值的基础。 更改生成的注解的基础可以更容易地定义重新标记规则,并避免意外的连锁反应。 默认值为 环境变量: 显示更多 |
字符串 |
|
定义用于指示应抓取服务的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示抓取路径的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要抓取的端口的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
定义用于指示要用于抓取的方案的注解。 默认情况下, 环境变量: 显示更多 |
字符串 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
要挂载的密钥的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的 ConfigMap 的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
将挂载文件的路径。 环境变量: 显示更多 |
字符串 |
必需 |
它必须是 0000 到 0777 之间的值。 如果未指定,将使用卷 defaultMode。 环境变量: 显示更多 |
整数 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
字符串列表 |
||
Git 存储库 URL。 环境变量: 显示更多 |
字符串 |
必需 |
要挂载的存储库目录。 环境变量: 显示更多 |
字符串 |
|
要使用的提交哈希。 环境变量: 显示更多 |
字符串 |
|
要挂载的声明的名称。 环境变量: 显示更多 |
字符串 |
必需 |
默认模式。 指定八进制数时,必须存在前导零。 环境变量: 显示更多 |
字符串 |
|
可选 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
分区。 环境变量: 显示更多 |
整数 |
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
共享名称。 环境变量: 显示更多 |
字符串 |
必需 |
Secret 名称。 环境变量: 显示更多 |
字符串 |
必需 |
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
要挂载的磁盘名称。 环境变量: 显示更多 |
字符串 |
必需 |
vhd blob 对象的 URI,如果 Kind 是 Managed,则是 Azure 托管数据盘的 resourceID 环境变量: 显示更多 |
字符串 |
必需 |
磁盘的种类。 环境变量: 显示更多 |
|
|
磁盘缓存模式。 环境变量: 显示更多 |
|
|
文件系统类型。 环境变量: 显示更多 |
字符串 |
|
卷名是否只读。 环境变量: 显示更多 |
布尔值 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
容器镜像。 环境变量: 显示更多 |
字符串 |
|
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
用于加载环境变量的可选 Secret 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
用于加载环境变量的可选 ConfigMap 名称列表。 环境变量: 显示更多 |
字符串列表 |
|
将环境变量名称与其关联的字段引用(从中获取其值)相关联的映射。 环境变量: 显示更多 |
Map<String,String> |
|
环境变量值 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 Secret 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
要从中提取值的 ConfigMap 的可选名称。与 环境变量: 显示更多 |
字符串 |
|
标识要从中提取值的字段的键。 环境变量: 显示更多 |
字符串 |
必需 |
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
将环境变量添加到容器时使用的可选前缀。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
工作目录。 环境变量: 显示更多 |
字符串 |
|
命令 环境变量: 显示更多 |
字符串列表 |
|
参数 环境变量: 显示更多 |
字符串列表 |
|
服务帐户。 环境变量: 显示更多 |
字符串 |
|
应用程序将要暴露的主机。 环境变量: 显示更多 |
字符串 |
|
端口号。 指的是容器端口。 环境变量: 显示更多 |
整数 |
|
主机端口。 环境变量: 显示更多 |
整数 |
|
应用程序路径(指的是 Web 应用程序路径)。 环境变量: 显示更多 |
字符串 |
|
协议。 环境变量: 显示更多 |
|
|
此端口应映射到的 nodePort。 仅当 serviceType 设置为 node-port 时,此设置才会生效。 环境变量: 显示更多 |
整数 |
|
如果启用,该端口将被配置为使用 HTTPS 架构。 环境变量: 显示更多 |
布尔值 |
|
镜像拉取策略。 环境变量: 显示更多 |
|
|
镜像拉取密钥。 环境变量: 显示更多 |
字符串列表 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
配置 环境变量: 显示更多 |
整数 |
|
用于选择 环境变量: 显示更多 |
字符串 |
|
探针要使用的 http 路径。 为使此操作生效,还需要设置容器端口。 假设已设置容器端口(如上文所述),如果未设置 execAction 或 tcpSocketAction,即使未设置路径,也会自动使用 HTTP 探针(这将导致使用根路径)。 如果使用了 Smallrye Health,则路径将根据运行状况检查路径自动设置。 环境变量: 显示更多 |
字符串 |
|
环境变量: 显示更多 |
字符串 |
|
探针要使用的命令。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 tcp 套接字(格式为 host:port)。 环境变量: 显示更多 |
字符串 |
|
探针要使用的 gRPC 端口(格式为 port 或 port:service)。 环境变量: 显示更多 |
字符串 |
|
如果启用且未提供 环境变量: 显示更多 |
布尔值 |
|
开始探测之前要等待的时间。 环境变量: 显示更多 |
|
|
调用操作的时间段。 环境变量: 显示更多 |
|
|
等待每个操作的时间。 环境变量: 显示更多 |
|
|
要使用的成功阈值。 环境变量: 显示更多 |
整数 |
|
要使用的失败阈值。 环境变量: 显示更多 |
整数 |
|
要挂载的 volumeName 的名称。 环境变量: 显示更多 |
字符串 |
|
要挂载的路径。 环境变量: 显示更多 |
字符串 |
|
容器的 volumeName 应从其中挂载的 volumeName 中的路径。 环境变量: 显示更多 |
字符串 |
|
ReadOnly。 环境变量: 显示更多 |
布尔值 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
CPU 需求 环境变量: 显示更多 |
字符串 |
|
内存需求 环境变量: 显示更多 |
字符串 |
|
IP 地址。 环境变量: 显示更多 |
字符串 |
|
要解析到 IP 的主机名。 环境变量: 显示更多 |
字符串列表 |
|
字符串 |
必需 |
|
字符串 |
必需 |
|
字符串 |
||
字符串 |
||
字符串 |
||
字符串 |
||
如果设置,secret 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
如果设置,config map 将被挂载到应用程序容器,其内容将用于应用程序配置。 环境变量: 显示更多 |
字符串 |
|
字符串 |
||
角色的命名空间。 环境变量: 显示更多 |
字符串 |
|
要添加到 Role 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
集群角色的名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 ClusterRole 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
策略规则的 API 组。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的非资源 URL。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源名称。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的资源。 环境变量: 显示更多 |
字符串列表 |
|
策略规则的动词。 环境变量: 显示更多 |
字符串列表 |
|
服务帐户的名称。 环境变量: 显示更多 |
字符串 |
|
服务帐户的命名空间。 环境变量: 显示更多 |
字符串 |
|
服务帐户的标签。 环境变量: 显示更多 |
Map<String,String> |
|
如果为 true,则此服务帐户将用于生成的 Deployment 资源中。 环境变量: 显示更多 |
布尔值 |
|
要生成的 RoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 Role Binding 资源中由 RoleRef 元素使用的 Role 资源的名称。 默认情况下,它是 “view” 角色名称。 环境变量: 显示更多 |
字符串 |
|
在 环境变量: 显示更多 |
布尔值 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
要生成的 ClusterRoleBinding 资源的名称。如果未提供,将使用应用程序名称加上角色引用名称。 环境变量: 显示更多 |
字符串 |
|
要添加到 RoleBinding 资源中的标签。 环境变量: 显示更多 |
Map<String,String> |
|
在生成的 ClusterRoleBinding 资源中由 RoleRef 元素使用的 ClusterRole 资源的名称。 环境变量: 显示更多 |
字符串 |
必需 |
在生成的 Role Binding 资源中由 Subject 元素使用的 “name” 资源。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “kind” 资源。 默认情况下,它使用 “ServiceAccount” kind。 环境变量: 显示更多 |
字符串 |
|
与 “kind” 属性匹配的 “apiGroup” 资源。 默认情况下,它是空的。 环境变量: 显示更多 |
字符串 |
|
在生成的 Role Binding 资源中由 Subject 元素使用的 “namespace” 资源。 默认情况下,它将使用与生成的资源中提供的相同的命名空间。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux level 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux role 标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 类型标签。 环境变量: 显示更多 |
字符串 |
|
应用于容器的 SELinux 用户标签。 环境变量: 显示更多 |
字符串 |
|
要使用的 GMSA 凭据规范的名称。 环境变量: 显示更多 |
字符串 |
|
GMSACredentialSpec 是 GMSA 准入 Webhook (windows-gsma) 在其中内联由 GMSACredentialSpecName 字段命名的 GMSA 凭据规范内容的位置。 环境变量: 显示更多 |
字符串 |
|
在 Windows 中运行容器进程入口点的用户名。 环境变量: 显示更多 |
字符串 |
|
HostProcess 确定容器是否应作为“主机进程”容器运行。 环境变量: 显示更多 |
布尔值 |
|
用于运行容器进程入口点的 UID。 环境变量: 显示更多 |
long |
|
用于运行容器进程入口点的 GID。 环境变量: 显示更多 |
long |
|
指示容器必须以非 root 用户身份运行。 环境变量: 显示更多 |
布尔值 |
|
应用于每个容器中运行的第一个进程的组列表,此外还有容器的主 GID。如果未指定,则不会向任何容器添加组。 环境变量: 显示更多 |
long 列表 |
|
应用于 Pod 中所有容器的特殊补充组。 环境变量: 显示更多 |
long |
|
Sysctls 包含用于 Pod 的命名空间 sysctl 列表。 环境变量: 显示更多 |
Map<String,String> |
|
它保存了在挂载卷时将 fsGroup 应用于卷的策略。值:OnRootMismatch, Always 环境变量: 显示更多 |
|
|
用于控制非幂等字段是否包含在生成的 kubernetes 资源中的开关,以提高 git-ops 兼容性。 环境变量: 显示更多 |
布尔值 |
|
布尔值 |
|
|
字符串 |
||
此服务是否为集群本地服务。 集群本地服务不会暴露给外部。 更多信息请参考此链接。 环境变量: 显示更多 |
布尔值 |
|
此值控制每个修订版本应具有的最小副本数。 Knative 会尝试在任何时间点都不少于此副本数。 环境变量: 显示更多 |
整数 |
|
此值控制每个修订版本应具有的最大副本数。 Knative 会尝试在任何时间点都不会运行超过此数量的副本,或正在创建的过程中。 环境变量: 显示更多 |
整数 |
|
scale-to-zero 值控制 Knative 是否允许修订版本缩减到零,或者停止在“1”。 环境变量: 显示更多 |
布尔值 |
|
自动伸缩器类。 Knative Serving 自带其自己的自动伸缩器 KPA(Knative Pod Autoscaler),但也可以配置为使用 Kubernetes 的 HPA(Horizontal Pod Autoscaler),甚至自定义第三方自动伸缩器。 可能的值(kpa、hpa,默认值:kpa)。 环境变量: 显示更多 |
|
|
要使用的自动伸缩指标。 可能的值(concurrency、rps、cpu)。 环境变量: 显示更多 |
|
|
自动伸缩目标。 环境变量: 显示更多 |
整数 |
|
一次允许副本处理的确切请求数。 其默认值为“0”,这意味着允许无限数量的请求流入副本。 环境变量: 显示更多 |
整数 |
|
此值指定自动伸缩器实际定位的目标的百分比。 环境变量: 显示更多 |
整数 |
|
自动伸缩器类。 Knative Serving 自带其自己的自动伸缩器 KPA(Knative Pod Autoscaler),但也可以配置为使用 Kubernetes 的 HPA(Horizontal Pod Autoscaler),甚至自定义第三方自动伸缩器。 可能的值(kpa、hpa,默认值:kpa)。 环境变量: 显示更多 |
|
|
一次允许副本处理的确切请求数。 其默认值为“0”,这意味着允许无限数量的请求流入副本。 环境变量: 显示更多 |
整数 |
|
此值指定自动伸缩器实际定位的目标的百分比。 环境变量: 显示更多 |
整数 |
|
每个副本的每秒请求数。 环境变量: 显示更多 |
整数 |
|
字符串 |
||
标签可以选择用于公开专用 URL,以专门引用此目标。 环境变量: 显示更多 |
字符串 |
|
要将此部分流量发送到的特定修订版本的 RevisionName。 环境变量: 显示更多 |
字符串 |
|
可以选择提供 LatestRevision,以指示配置的最新就绪修订版本应用于此流量目标。 如果 RevisionName 为空,则必须提供 LatestRevision 且为 true。 环境变量: 显示更多 |
布尔值 |
|
百分比表示应使用基于百分比的路由,并且该值指示要路由到此修订版本或配置的流量百分比。 环境变量: 显示更多 |
long |
|
如果设置为 true,Quarkus 将尝试将应用程序部署到目标 Kubernetes 集群 环境变量: 显示更多 |
布尔值 |
|
如果启用了部署,它将遵循此策略来更新到目标 Kubernetes 集群的资源。 环境变量: 显示更多 |
|
|
部署目标
前面的章节提到了 deployment-target
的概念。 此概念允许用户控制将哪些 Kubernetes 清单生成并部署到集群(如果 quarkus.kubernetes.deploy
已设置为 true
)。
默认情况下,如果不设置 deployment-target
,则只会生成和部署普通的 Kubernetes 资源。 如果设置了多个值(例如 quarkus.kubernetes.deployment-target=kubernetes,openshift
),则会生成所有目标的资源,但只有与**第一个**目标对应的资源才会应用于集群(如果启用了部署)。
对于喜欢保持 application.properties
与部署平台独立的的用户,可以通过在 deploy 命令中添加 -Dquarkus.kubernetes.deployment-target=knative
以及 -Dquarkus.knative.deploy=true
,直接在 deploy 命令中指定部署目标。 此外,Quarkus 允许将这两个属性折叠为一个:-Dquarkus.knative.deploy=true
。
./mvnw clean package -Dquarkus.knative.deploy=true
与 gradle 等效
./gradlew build -Dquarkus.knative.deploy=true
如果同时使用这两个属性,并且值冲突,则使用 -Dquarkus.kubernetes.deployment-target
。
在 OpenShift 和 Minikube 等包装器扩展的情况下,当这些扩展已显式添加到项目中时,默认 deployment-target
由这些扩展设置。 例如,如果 quarkus-minikube
已添加到项目中,则 minikube
将成为默认部署目标,并且当通过 quarkus.kubernetes.deploy
设置启用部署时,其资源将应用于 Kubernetes 集群。 用户仍然可以使用 quarkus.kubernetes.deployment-target
手动覆盖部署目标。
已弃用的配置
以下配置属性类别已弃用。
配置组数组
引用配置组数组的属性(例如,kubernetes.labels[0]
、kubernetes.env-vars[0]
等)已转换为 Map,以与 Quarkus 生态系统的其余部分保持一致。
下面的代码演示了 labels
配置中的更改
# Old labels config:
kubernetes.labels[0].name=foo
kubernetes.labels[0].value=bar
# New labels
quarkus.kubernetes.labels.foo=bar
下面的代码演示了 env-vars
配置中的更改
# Old env-vars config:
kubernetes.env-vars[0].name=foo
kubernetes.env-vars[0].configmap=my-configmap
# New env-vars
quarkus.kubernetes.env-vars.foo.configmap=myconfigmap
部署
要触发构建和部署容器镜像,您需要启用 quarkus.kubernetes.deploy
标志(默认情况下禁用该标志 - 此外,在测试运行或开发模式下无效)。 这可以使用命令行轻松完成
./mvnw clean package -Dquarkus.kubernetes.deploy=true
部署
启用部署后,Kubernetes 扩展将选择 quarkus.kubernetes.deployment-target
指定的资源并部署它们。 这假定在您的用户目录中有一个 .kube/config
指向目标 Kubernetes 集群。 换句话说,该扩展将使用 kubectl
使用的任何集群。 这同样适用于凭据。
目前,没有提供其他选项用于进一步自定义。
远程调试
要远程调试在 kubernetes 环境中运行的应用程序,我们需要按照上一节所述部署应用程序,并添加新属性:quarkus.kubernetes.remote-debug.enabled=true
。 此属性将自动配置 Java 应用程序以附加 java agent 配置(例如:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
)以及服务资源,以使用 java agent 端口进行侦听。
使用调试功能部署应用程序后,接下来您需要将流量从本地主机隧道传输到 java agent 的指定端口
kubectl port-forward svc/<application name> 5005:5005
使用此命令,您将流量从“localhost:5005”转发到使用端口“5005”运行 java agent 的 kubernetes 服务,该端口是 java agent 默认用于远程调试的端口。 您还可以使用属性 quarkus.kubernetes.remote-debug.address-port
配置另一个 java agent 端口。
最后,您需要做的就是配置您最喜欢的 IDE 以附加转发到 localhost:5005
的 java agent 进程,然后开始调试您的应用程序。 例如,在 IntelliJ IDEA 中,您可以按照 此教程 来调试远程应用程序。
使用现有资源
有时,希望提供其他资源(例如,ConfigMap、Secret、数据库的 Deployment)或提供自定义资源,这些资源将用作生成过程的 base
。 这些资源可以添加到 src/main/kubernetes
目录下,并且可以按目标环境命名(例如,kubernetes.json、openshift.json、knative.json 或 yml 等效项)。 提供的文件和生成的文件之间的关联是通过文件名完成的。 因此,在 src/main/kubernetes
中添加的 kubernetes.json
/kubernetes.yml
文件只会影响生成的 kubernetes.json
/kubernetes.yml
。 在 src/main/kubernetes
中添加的 openshift.json
/openshift.yml
文件只会影响生成的 openshift.json
/openshift.yml
。 在 src/main/kubernetes
中添加的 knative.json
/knative.yml
文件只会影响生成的 knative.json
/knative.yml
,依此类推。 提供的文件可以是 json 或 yaml 格式,并且可以包含一个或多个资源。 这些资源将最终出现在两种生成格式(json 和 yaml)中。 例如,添加到 src/main/kubernetes/kubernetes.yml
中的 secret 将添加到生成的 kubernetes.yml
和 kubernetes.json
中。
注意:在撰写本文时,没有机制允许提供的文件和生成的文件之间存在一对多的关系。 Minikube 也不例外,因此如果要自定义生成的 minikube 清单,则放在 src/main/kubernetes
下的文件必须命名为 minikube.json
或 minikube.yml
(将其命名为 kubernetes.yml
或 kubernetes.json
将只会影响生成的 kubernetes.yml
和 kubernetes.json
)。
找到的任何资源都将添加到生成的清单中。 全局修改(例如,标签、注释)也将应用于这些资源。 如果提供的资源之一与生成的资源之一具有相同的名称,则将基于提供的资源创建生成的资源,并在可能的情况下遵守现有内容(例如,现有标签、注释、环境变量、挂载、副本等)。
资源的名称由应用程序名称确定,并且可以被 quarkus.kubernetes.name
、quarkus.openshift.name
和 quarkus.knative.name
覆盖。
例如,在 kubernetes-quickstart
应用程序中,我们可以在 src/main/kubernetes
中添加一个 kubernetes.yml
文件,如下所示
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubernetes-quickstart
labels:
app: quickstart
spec:
replicas: 3
selector:
matchLabels:
app: quickstart
template:
metadata:
labels:
app: quickstart
spec:
containers:
- name: kubernetes-quickstart
image: someimage:latest
ports:
- containerPort: 80
env:
- name: FOO
value: BAR
生成的 kubernetes.yml
将如下所示
apiVersion: "apps/v1"
kind: "Deployment"
metadata:
annotations:
app.quarkus.io/build-timestamp: "2020-04-10 - 12:54:37 +0000"
labels:
app: "quickstart"
name: "kubernetes-quickstart"
spec:
replicas: 3 (1)
selector:
matchLabels:
app.kubernetes.io/name: "kubernetes-quickstart"
app.kubernetes.io/version: "1.0.0-SNAPSHOT"
template:
metadata:
annotations:
app.quarkus.io/build-timestamp: "2020-04-10 - 12:54:37 +0000"
labels:
app: "quickstart" (2)
spec:
containers:
- env:
- name: "FOO" (3)
value: "BAR"
image: "<<yourDockerUsername>>/kubernetes-quickstart:1.0.0-SNAPSHOT" (4)
imagePullPolicy: "Always"
name: "kubernetes-quickstart"
ports:
- containerPort: 8080 (5)
name: "http"
protocol: "TCP"
serviceAccount: "kubernetes-quickstart"
1 | 提供的副本数, |
2 | 标签和 |
3 | 环境变量已保留。 |
4 | 但是,镜像和 |
5 | 容器端口已被修改。 |
此外,已添加默认注释。
|
使用通用资源
当为多个部署目标(如 Kubernetes、OpenShift 或 Knative)生成清单时,我们可以将通用资源放在 src/main/kubernetes/common.yml
中,因此这些资源将被集成到生成的 kubernetes.json
/kubernetes.yml
和 openshift.json
/openshift.yml
文件中(如果您同时配置 Kubernetes 和 OpenShift 扩展)。
例如,我们可以在文件 src/main/kubernetes/common.yml
中仅编写一次 ConfigMap 资源
apiVersion: v1
kind: ConfigMap
metadata:
name: common-configmap
data:
hello: world
此 config map 资源将被集成到生成的 kubernetes.json
/kubernetes.yml
和 openshift.json
/openshift.yml
文件中。
服务绑定
Quarkus 支持 Kubernetes 服务绑定规范,以将服务绑定到应用程序。
具体来说,Quarkus 实现了规范的 工作负载投影 部分,因此允许应用程序绑定到服务,例如数据库或消息代理,而无需用户配置。
要为受支持的扩展启用服务绑定,请将 quarkus-kubernetes-service-binding
扩展添加到应用程序依赖项。
-
以下扩展可以与服务绑定一起使用,并且支持工作负载投影
-
quarkus-jdbc-mariadb
-
quarkus-jdbc-mssql
-
quarkus-jdbc-mysql
-
quarkus-jdbc-postgresql
-
quarkus-mongodb-client
-
quarkus-kafka-client
-
quarkus-messaging-kafka
-
quarkus-reactive-db2-client
-
quarkus-reactive-mssql-client
-
quarkus-reactive-mysql-client
-
quarkus-reactive-oracle-client
-
quarkus-reactive-pg-client
-
quarkus-infinispan-client
-
工作负载投影
工作负载投影是从 Kubernetes 集群获取服务配置的过程。 此配置采用遵循某些约定的目录结构的形式,并作为挂载卷附加到应用程序或服务。 kubernetes-service-binding
扩展使用此目录结构创建配置源,这允许您配置其他模块,例如数据库或消息代理。
在应用程序开发期间,用户可以使用工作负载投影将其应用程序连接到开发数据库或其他本地运行的服务,而无需更改实际的应用程序代码或配置。
有关工作负载投影的示例,其中目录结构包含在测试资源中并传递给集成测试,请参阅 Kubernetes Service Binding datasource GitHub 存储库。
|
服务绑定运算符简介
服务绑定运算符 是一个实现 Kubernetes 服务绑定规范 的运算符,旨在简化服务到应用程序的绑定。 支持 工作负载投影 的容器化应用程序以卷挂载的形式获取服务绑定信息。 服务绑定运算符读取绑定服务信息,并将其挂载到需要它的应用程序容器。
应用程序和绑定服务之间的关联通过 ServiceBinding
资源表达,该资源声明了哪些服务计划绑定到哪些应用程序的意图。
服务绑定运算符监视 ServiceBinding
资源,该资源告知运算符哪些应用程序计划绑定到哪些服务。 部署列出的应用程序时,服务绑定运算符会收集必须传递给应用程序的所有绑定信息,然后通过附加包含绑定信息的卷挂载来升级应用程序容器。
服务绑定运算符完成以下操作
-
观察
ServiceBinding
资源,以了解计划绑定到特定工作负载的服务 -
使用卷挂载将绑定信息应用于工作负载
以下章节描述了自动和半自动服务绑定方法及其用例。 对于任一方法,kubernetes-service-binding
扩展都会生成 ServiceBinding
资源。 对于半自动方法,用户必须手动提供目标服务的配置。 对于自动方法,对于有限的服务集生成 ServiceBinding
资源,不需要其他配置。
半自动服务绑定
服务绑定过程从用户指定将绑定到某个应用程序的所需服务开始。 此表达式概括在由 kubernetes-service-binding
扩展生成的 ServiceBinding
资源中。 使用 kubernetes-service-binding
扩展可以帮助用户以最少的配置生成 ServiceBinding
资源,从而简化整个过程。
负责绑定过程的服务绑定运算符然后从 ServiceBinding
资源读取信息,并将所需的文件相应地挂载到容器。
-
ServiceBinding
资源示例apiVersion: binding.operators.coreos.com/v1beta1 kind: ServiceBinding metadata: name: binding-request namespace: service-binding-demo spec: application: name: java-app group: apps version: v1 resource: deployments services: - group: postgres-operator.crunchydata.com version: v1beta1 kind: Database name: db-demo id: postgresDB
-
quarkus-kubernetes-service-binding
扩展提供了一种更紧凑的方式来表达相同的信息。 例如quarkus.kubernetes-service-binding.services.db-demo.api-version=postgres-operator.crunchydata.com/v1beta1 quarkus.kubernetes-service-binding.services.db-demo.kind=Database
-
在您的 application.properties
中添加了前面提到的配置属性后,quarkus-kubernetes
与 quarkus-kubernetes-service-binding
扩展结合使用,会自动生成 ServiceBinding
资源。
前面提到的 db-demo
属性配置标识符现在具有双重角色,并且还完成以下操作
-
关联并组合
api-version
和kind
属性 -
为自定义资源定义
name
属性,并可能在以后进行编辑。 例如quarkus.kubernetes-service-binding.services.db-demo.api-version=postgres-operator.crunchydata.com/v1beta1 quarkus.kubernetes-service-binding.services.db-demo.kind=Database quarkus.kubernetes-service-binding.services.db-demo.name=my-db
-
有关半自动服务绑定的演示,请参阅 如何将 Quarkus 与服务绑定运算符一起使用
自动服务绑定
quarkus-kubernetes-service-binding
扩展可以在检测到应用程序需要访问可用的可绑定运算符提供的外部服务后,自动生成 ServiceBinding
资源。
可以为有限数量的服务类型生成自动服务绑定。 为了与 Kubernetes 和 Quarkus 服务的既定术语保持一致,本章将这些服务类型称为种类。 |
运算符 |
API 版本 |
种类 |
|
|
postgres-operator.crunchydata.com/v1beta1 |
PostgresCluster |
|
|
pxc.percona.com/v1-9-0 |
PerconaXtraDBCluster |
|
|
psmdb.percona.com/v1-9-0 |
PerconaServerMongoDB |
自动数据源绑定
对于传统数据库,只要按如下方式配置数据源,就会启动自动绑定
quarkus.datasource.db-kind=postgresql
前面的配置与应用程序中存在的 quarkus-datasource
、quarkus-jdbc-postgresql
、quarkus-kubernetes
和 quarkus-kubernetes-service-binding
属性结合使用,会导致为 postgresql
数据库类型生成 ServiceBinding
资源。
通过使用运算符资源的 apiVersion
和 kind
属性(与使用的 postgresql
运算符匹配),生成的 ServiceBinding
资源将服务或资源绑定到应用程序。
如果不指定数据库服务的名称,则 db-kind
属性的值将用作默认名称。
services:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: postgresql
按如下方式指定数据源的名称
quarkus.datasource.fruits-db.db-kind=postgresql
生成的 ServiceBinding
中的 service
然后显示如下
services:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: fruits-db
类似地,如果使用 mysql
,则可以按如下方式指定数据源的名称
quarkus.datasource.fruits-db.db-kind=mysql
生成的 service
包含以下内容
services:
- apiVersion: pxc.percona.com/v1-9-0
kind: PerconaXtraDBCluster
name: fruits-db
自定义自动服务绑定
即使开发自动绑定是为了尽可能减少手动配置,但在某些情况下可能仍然需要修改生成的 ServiceBinding
资源。 生成过程专门依赖于从应用程序中提取的信息和对受支持运算符的了解,这可能无法反映集群中部署的内容。 生成的资源纯粹基于对流行的服务种类的受支持的可绑定运算符以及为防止可能的不匹配而开发的一组约定的了解,例如
-
目标资源名称与数据源名称不匹配
-
需要使用特定的运算符,而不是该服务种类的默认运算符
-
当用户需要使用除默认版本或最新版本以外的任何其他版本时发生的版本冲突
-
目标资源坐标基于运算符类型和服务种类确定。
-
默认情况下,目标资源名称设置为与服务种类匹配,例如
postgresql
、mysql
、mongo
。 -
对于命名的数据源,使用数据源的名称。
-
对于命名的
mongo
客户端,使用客户端的名称。
对于需要修改生成的 ServiceBinding
以修复名称不匹配的情况,请使用 quarkus.kubernetes-service-binding.services
属性并将服务的名称指定为服务密钥。
service key
通常是服务的名称,例如数据源的名称或 mongo
客户端的名称。 如果此值不可用,则使用数据源类型,例如 postgresql
、mysql
、mongo
。
为避免不同类型的服务之间的命名冲突,请为 service key
添加特定数据源类型的前缀,例如 postgresql-<person>
。
以下示例显示了如何自定义 PostgresCluster
资源的 apiVersion
属性
quarkus.datasource.db-kind=postgresql
quarkus.kubernetes-service-binding.services.postgresql.api-version=postgres-operator.crunchydata.com/v1beta2
在示例 1 中,db-kind
(postgresql
) 被用作服务密钥。在本示例中,由于数据源已命名,按照惯例,将使用数据源名称 (fruits-db
) 代替。
以下示例展示了对于命名数据源,数据源名称将用作目标资源的名称。
quarkus.datasource.fruits-db.db-kind=postgresql
这与以下配置具有相同的效果
quarkus.kubernetes-service-binding.services.fruits-db.api-version=postgres-operator.crunchydata.com/v1beta1
quarkus.kubernetes-service-binding.services.fruits-db.kind=PostgresCluster
quarkus.kubernetes-service-binding.services.fruits-db.name=fruits-db
-
有关可用属性及其工作原理的更多详细信息,请参阅 Service Binding 规范的 Workload Projection 部分。