Helm 安装
Spring Cloud Data Flow 提供了一个 Helm Chart,用于将 Spring Cloud Data Flow 服务器及其所需服务部署到 Kubernetes 集群。
以下部分介绍如何初始化 Helm 并在 Kubernetes 集群上安装 Spring Cloud Data Flow。
如果您使用 Minikube,请参阅设置 Minikube 资源,了解有关 CPU 和 RAM 资源需求的详细信息。
安装 Spring Cloud Data Flow 服务器和所需服务
您应该查看以下文档,并调整已为您的环境进行的任何参数自定义,或者它们与传统的官方 Helm 图表有何不同。在 Bitnami 图表迁移过程中,值名称、默认值等可能已更改。您可以在参数表和升级和重要更改部分中找到更多信息。
适用于 Spring Cloud Data Flow 的 Bitnami 软件包
Spring Cloud Data Flow 是一个基于微服务的工具包,用于在 Cloud Foundry 和 Kubernetes 中构建流式和批处理数据处理管道。
太长不看版
helm install my-release oci://registry-1.docker.io/bitnamicharts/spring-cloud-dataflow
希望在生产环境中使用 Spring Cloud Data Flow?试试 VMware Tanzu 应用目录,Bitnami 应用目录的企业版。
简介
此图表使用 Helm 包管理器在 Kubernetes 集群上引导 Spring Cloud Data Flow 部署。
Bitnami 图表可以与 Kubeapps 一起使用,以便在集群中部署和管理 Helm 图表。
先决条件
- Kubernetes 1.23+
- Helm 3.8.0+
- 底层基础架构中的 PV 配置器支持
安装图表
要使用发行版名称 my-release
安装图表
helm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
这些命令使用默认配置在 Kubernetes 集群上部署 Spring Cloud Data Flow。参数 部分列出了可以在安装过程中配置的参数。
提示:使用
helm list
列出所有发行版
配置和安装细节
资源请求和限制
Bitnami 图表允许为图表部署内的所有容器设置资源请求和限制。这些都在 resources
值内(请查看参数表)。设置请求对于生产工作负载至关重要,并且应根据您的特定用例进行调整。
为了简化此过程,图表包含 resourcesPreset
值,该值会根据不同的预设自动设置 resources
部分。在 bitnami/common 图表 中查看这些预设。但是,在生产工作负载中,不建议使用 resourcePreset
,因为它可能无法完全适应您的特定需求。在 Kubernetes 官方文档 中查找有关容器资源管理的更多信息。
滚动标签与不可变标签
强烈建议在生产环境中使用不可变标签。这可以确保如果使用不同的镜像更新了相同的标签,您的部署不会自动更改。
如果存在主要容器的新版本、重大更改或严重漏洞,Bitnami 将发布更新其容器的新图表。
特性
如果只需要部署任务和计划,则可以禁用流式传输和 Skipper
server.configuration.batchEnabled=true
server.configuration.streamingEnabled=false
skipper.enabled=false
rabbitmq.enabled=false
如果只需要部署流,则可以禁用任务和计划
server.configuration.batchEnabled=false
server.configuration.streamingEnabled=true
skipper.enabled=true
rabbitmq.enabled=true
注意:server.configuration.batchEnabled
和 server.configuration.streamingEnabled
不应同时设置为 false
。
消息传递解决方案
此图表中支持两种消息传递解决方案
- RabbitMQ(默认)
- Kafka
要将消息传递层更改为 Kafka,请使用以下参数
rabbitmq.enabled=false
kafka.enabled=true
在给定时间只能使用一个消息传递层。
使用外部数据库
有时,您可能希望 Spring Cloud 组件连接到外部数据库,而不是在集群内部安装数据库,例如使用托管数据库服务,或者对所有应用程序使用单个数据库服务器。为此,该图表允许您在 externalDatabase
参数 下指定外部数据库的凭据。您还应该使用 mariadb.enabled
选项禁用 MariaDB 安装。例如,使用以下参数
mariadb.enabled=false
externalDatabase.scheme=mariadb
externalDatabase.host=myexternalhost
externalDatabase.port=3306
externalDatabase.password=mypassword
externalDatabase.dataflow.user=mydataflowuser
externalDatabase.dataflow.database=mydataflowdatabase
externalDatabase.skipper.user=myskipperuser
externalDatabase.skipper.database=myskipperdatabase
注意:当使用各个属性(方案、主机、端口、数据库、可选的 jdbcParameters)时,此图表将 JDBC URL 格式化为 jdbc:{scheme}://{host}:{port}/{database}{jdbcParameters}
。URL 格式遵循 MariaDB 数据库驱动的格式,但可能不适用于其他数据库供应商。
要使用备用数据库供应商(MariaDB 除外),您可以使用 externalDatabase.dataflow.url
和 externalDatabase.skipper.url
属性分别为数据流服务器和 skipper 提供 JDBC URL。如果定义了这些属性,则它们将优先于各个属性。例如配置外部 MS SQL Server 数据库
mariadb.enabled=false
externalDatabase.password=mypassword
externalDatabase.dataflow.url=jdbc:sqlserver://mssql-server:1433
externalDatabase.dataflow.user=mydataflowuser
externalDatabase.skipper.url=jdbc:sqlserver://mssql-server:1433
externalDatabase.skipper.user=myskipperuser
externalDatabase.hibernateDialect=org.hibernate.dialect.SQLServer2012Dialect
注意:如果您按上述方式禁用 MariaDB,则必须为 externalDatabase
连接提供值。
添加额外的标志
如果您想向任何 Spring Cloud 组件添加额外的环境变量,可以使用 XXX.extraEnvs
参数,其中 XXX 是您需要替换为实际组件的占位符。例如,要向 Spring Cloud Data Flow 添加额外的标志,请使用
server:
extraEnvs:
- name: FOO
value: BAR
使用自定义 Dataflow 配置
此 Helm 图表支持对 Dataflow 服务器使用自定义配置。
您可以通过将 server.existingConfigmap
参数设置为包含配置文件的外部 ConfigMap 来指定 Dataflow 服务器的配置。
使用自定义 Skipper 配置
此 Helm chart 支持为 Skipper 服务器使用自定义配置。
您可以通过将 skipper.existingConfigmap
参数设置为包含配置文件的外部 ConfigMap 来指定 Skipper 服务器的配置。
边车和初始化容器
如果您需要在与 Dataflow 或 Skipper 组件相同的 pod 中运行其他容器(例如,额外的指标或日志导出器),您可以通过 XXX.sidecars
参数来实现,其中 XXX 是您需要替换为实际组件的占位符。您只需根据 Kubernetes 容器规范定义您的容器即可。
server:
sidecars:
- name: your-image-name
image: your-image
imagePullPolicy: Always
ports:
- name: portname
containerPort: 1234
类似地,您可以使用 XXX.initContainers
参数添加额外的初始化容器。
server:
initContainers:
- name: your-image-name
image: your-image
imagePullPolicy: Always
ports:
- name: portname
containerPort: 1234
入口
此 chart 支持 Ingress 资源。如果您的集群上安装了 ingress 控制器,例如 nginx-ingress-controller 或 contour,则可以使用 ingress 控制器来为您的应用程序提供服务。
要启用 ingress 集成,请将 server.ingress.enabled
设置为 true
主机
您很可能只希望有一个主机名映射到此 Spring Cloud Data Flow 安装。如果是这种情况,则可以使用属性 server.ingress.hostname
进行设置。但是,也可以有多个主机。为了方便起见,可以将 server.ingress.extraHosts
对象指定为数组。您还可以使用 server.ingress.extraTLS
为额外主机添加 TLS 配置。
对于 server.ingress.extraHosts
中指示的每个主机,请指明 name
、path
以及您希望 ingress 控制器了解的任何 annotations
。
有关注释,请参阅本文档。并非所有 ingress 控制器都支持所有注释,但本文档很好地指出了哪些注释受许多流行的 ingress 控制器支持。
TLS
此图表将有助于创建用于 ingress 控制器的 TLS 密钥,但这并非必需的。有四种常见用例
- Helm 根据参数生成/管理证书密钥。
- 用户单独生成/管理证书。
- Helm 创建自签名证书并生成/管理证书密钥。
- 一个额外的工具(如 cert-manager)管理应用程序的密钥。在前两种情况下,需要证书和密钥。我们希望它们看起来像这样
-
证书文件应该看起来像(如果存在证书链,则可以有多个证书)
-----BEGIN CERTIFICATE----- MIID6TCCAtGgAwIBAgIJAIaCwivkeB5EMA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNV ... jScrvkiBO65F46KioCL9h5tDvomdU1aqpI/CBzhvZn1c0ZTf87tGQR8NK7v7 -----END CERTIFICATE-----
-
密钥应该看起来像
-----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEAvLYcyu8f3skuRyUgeeNpeDvYBCDcgq+LsWap6zbX5f8oLqp4 ... wrj2wDbCDCFmfqnSJ+dKI3vFLlEz44sAV8jX/kd4Y6ZTQhlLbYc= -----END RSA PRIVATE KEY-----
- 如果您打算使用 Helm 根据参数管理证书,请将这些值复制到给定
server.ingress.secrets
条目的certificate
和key
值中。 - 如果您打算单独管理 TLS 密钥,请使用名称 INGRESS_HOSTNAME-tls 创建一个 TLS 密钥(其中 INGRESS_HOSTNAME 是一个占位符,将替换为您使用
server.ingress.hostname
参数设置的主机名),并在server.ingress.secrets
中仅提供其名称,而无需certificate
和key
条目。 - 要使用 Helm 创建的自签名证书,请将
server.ingress.tls
设置为true
,并将server.ingress.certManager
设置为false
。 - 如果您的集群具有 cert-manager 附加组件来自动管理和颁发 TLS 证书,请将
server.ingress.certManager
布尔值设置为 true 以启用 cert-manager 的相应注释。
设置 Pod 的亲和性
此图表允许您使用 XXX.affinity
参数设置自定义亲和性。在 kubernetes 文档 中查找有关 Pod 亲和性的更多信息。
或者,您可以使用 bitnami/common 图表中提供的 Pod 亲和性、Pod 反亲和性和节点亲和性的预设配置。为此,请设置 XXX.podAffinityPreset
、XXX.podAntiAffinityPreset
或 XXX.nodeAffinityPreset
参数。
参数
全局参数
名称 | 描述 | 值 |
---|---|---|
global.imageRegistry |
全局 Docker 镜像仓库 | "" |
global.imagePullSecrets |
全局 Docker 镜像仓库密钥名称数组 | [] |
global.storageClass |
持久卷的全局存储类 | "" |
global.compatibility.openshift.adaptSecurityContext |
调整部署的 securityContext 部分,使其与 Openshift restricted-v2 SCC 兼容:删除 runAsUser、runAsGroup 和 fsGroup,并让平台使用其允许的默认 ID。可能的值:auto(如果检测到的运行集群是 Openshift 则应用)、force(始终执行调整)、disabled(不执行调整) | auto |
通用参数
名称 | 描述 | 值 |
---|---|---|
nameOverride |
用于部分覆盖 common.names.fullname 模板的字符串(将保留版本名称)。 | "" |
fullnameOverride |
用于完全覆盖 common.names.fullname 模板的字符串。 | "" |
commonAnnotations |
要添加到所有已部署对象的注释 | {} |
commonLabels |
要添加到所有已部署对象的标签 | {} |
kubeVersion |
强制目标 Kubernetes 版本(如果未设置,则使用 Helm 功能) | "" |
clusterDomain |
默认 Kubernetes 集群域名 | cluster.local |
extraDeploy |
要与版本一起部署的额外对象数组 | [] |
Dataflow 服务器参数
名称 | 描述 | 值 |
---|---|---|
server.image.registry |
Spring Cloud Dataflow 镜像仓库 | REGISTRY_NAME |
server.image.repository |
Spring Cloud Dataflow 镜像仓库 | REPOSITORY_NAME/spring-cloud-dataflow |
server.image.digest |
Spring Cloud Dataflow 镜像摘要,格式为 sha256:aa.... 请注意,如果设置此参数,将覆盖标签 | "" |
server.image.pullPolicy |
Spring Cloud Dataflow 镜像拉取策略 | IfNotPresent |
server.image.pullSecrets |
以数组形式指定 docker-registry 密钥名称 | [] |
server.image.debug |
启用镜像调试模式 | false |
server.automountServiceAccountToken |
在 Pod 中挂载服务帐户令牌 | true |
server.hostAliases |
部署 Pod 主机别名 | [] |
server.composedTaskRunner.image.registry |
Spring Cloud Dataflow Composed Task Runner 镜像仓库地址 | REGISTRY_NAME |
server.composedTaskRunner.image.repository |
Spring Cloud Dataflow Composed Task Runner 镜像仓库名称 | REPOSITORY_NAME/spring-cloud-dataflow-composed-task-runner |
server.composedTaskRunner.image.digest |
Spring Cloud Dataflow Composed Task Runner 镜像摘要,格式为 sha256:aa.... 请注意,如果设置此参数,将覆盖标签 | "" |
server.configuration.streamingEnabled |
启用或禁用流数据处理 | true |
server.configuration.batchEnabled |
启用或禁用批处理数据(任务和计划)处理 | true |
server.configuration.accountName |
要为 Kubernetes 平台配置的帐户名称 | default |
server.configuration.trustK8sCerts |
在查询 Kubernetes API 时信任 K8s 证书 | false |
server.configuration.containerRegistries |
容器仓库配置 | {} |
server.configuration.grafanaInfo |
Grafana 实例的端点(已弃用:请改用 metricsDashboard) | "" |
server.configuration.metricsDashboard |
指标仪表板实例的端点 | "" |
server.configuration.defaultSpringApplicationJSON |
为环境变量 SPRING_APPLICATION_JSON 注入默认值 | true |
server.existingConfigmap |
包含 Spring Cloud Dataflow 服务器配置的 ConfigMap | "" |
server.containerPorts.http |
容器 HTTP 端口 | 8080 |
server.containerPorts.jdwp |
容器 JDWP 端口 | 5005 |
server.command |
覆盖默认容器命令(在使用自定义镜像时很有用) | [] |
server.args |
覆盖默认容器参数(在使用自定义镜像时很有用) | [] |
server.lifecycleHooks |
用于 Dataflow 服务器容器,以便在启动之前或之后自动执行配置 | {} |
server.extraEnvVars |
要在 Dataflow 服务器容器上设置的额外环境变量 | [] |
server.extraEnvVarsCM |
包含额外环境变量的 ConfigMap | "" |
server.extraEnvVarsSecret |
包含额外环境变量的 Secret | "" |
server.replicaCount |
要部署的 Dataflow 服务器副本数 | 1 |
server.podAffinityPreset |
Dataflow 服务器 Pod 亲和性预设。如果设置了 server.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
server.podAntiAffinityPreset |
Dataflow 服务器 Pod 反亲和性预设。如果设置了 server.affinity ,则忽略此项。允许的值:soft 或 hard |
soft |
server.nodeAffinityPreset.type |
Dataflow 服务器节点亲和性预设类型。如果设置了 server.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
server.nodeAffinityPreset.key |
要匹配的 Dataflow 服务器节点标签键。如果设置了 server.affinity ,则忽略此项。 |
"" |
server.nodeAffinityPreset.values |
要匹配的 Dataflow 服务器节点标签值。如果设置了 server.affinity ,则忽略此项。 |
[] |
server.affinity |
用于 Pod 分配的 Dataflow 服务器亲和性 | {} |
server.nodeSelector |
用于 Pod 分配的 Dataflow 服务器节点标签 | {} |
server.tolerations |
用于 Pod 分配的 Dataflow 服务器容忍度 | [] |
server.podAnnotations |
Dataflow 服务器 Pod 的注释 | {} |
server.updateStrategy.type |
Dataflow 服务器 Pod 的部署策略类型。 | RollingUpdate |
server.podLabels |
Dataflow 服务器 Pod 的额外标签 | {} |
server.priorityClassName |
Dataflow 服务器 Pod 的优先级 | "" |
server.schedulerName |
k8s 调度程序的名称(默认值以外) | "" |
server.topologySpreadConstraints |
用于 Pod 分配的拓扑分布约束 | [] |
server.podSecurityContext.enabled |
启用 Dataflow 服务器 Pod 的安全上下文 | true |
server.podSecurityContext.fsGroupChangePolicy |
设置文件系统组更改策略 | 始终 |
server.podSecurityContext.sysctls |
使用 sysctl 接口设置内核设置 | [] |
server.podSecurityContext.supplementalGroups |
设置文件系统额外组 | [] |
server.podSecurityContext.fsGroup |
Pod 卷的组 ID | 1001 |
server.containerSecurityContext.enabled |
启用容器的安全上下文 | true |
server.containerSecurityContext.seLinuxOptions |
在容器中设置 SELinux 选项 | {} |
server.containerSecurityContext.runAsUser |
设置容器的安全上下文 runAsUser | 1001 |
server.containerSecurityContext.runAsGroup |
设置容器的安全上下文 runAsGroup | 1001 |
server.containerSecurityContext.runAsNonRoot |
设置容器的安全上下文 runAsNonRoot | true |
server.containerSecurityContext.privileged |
设置容器的安全上下文 privileged | false |
server.containerSecurityContext.readOnlyRootFilesystem |
设置容器的安全上下文 readOnlyRootFilesystem | true |
server.containerSecurityContext.allowPrivilegeEscalation |
设置容器的安全上下文 allowPrivilegeEscalation | false |
server.containerSecurityContext.capabilities.drop |
要删除的功能列表 | ["ALL"] |
server.containerSecurityContext.seccompProfile.type |
设置容器的安全上下文 seccomp 配置文件 | RuntimeDefault |
server.resourcesPreset |
根据一个常见预设设置容器资源(允许值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 server.resources,则忽略此项(建议在生产环境中使用 server.resources)。 | small |
server.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
server.startupProbe.enabled |
启用启动探针 | false |
server.startupProbe.initialDelaySeconds |
启动探针的初始延迟秒数 | 120 |
server.startupProbe.periodSeconds |
启动探针的周期秒数 | 20 |
server.startupProbe.timeoutSeconds |
启动探针的超时秒数 | 1 |
server.startupProbe.failureThreshold |
启动探针的失败阈值 | 6 |
server.startupProbe.successThreshold |
启动探针的成功阈值 | 1 |
server.livenessProbe.enabled |
启用活跃性探针 | true |
server.livenessProbe.initialDelaySeconds |
活跃性探针的初始延迟秒数 | 120 |
server.livenessProbe.periodSeconds |
活跃性探针的周期秒数 | 20 |
server.livenessProbe.timeoutSeconds |
活跃性探针的超时秒数 | 1 |
server.livenessProbe.failureThreshold |
活跃性探针的失败阈值 | 6 |
server.livenessProbe.successThreshold |
活跃性探针的成功阈值 | 1 |
server.readinessProbe.enabled |
启用就绪性探针 | true |
server.readinessProbe.initialDelaySeconds |
就绪性探针的初始延迟秒数 | 120 |
server.readinessProbe.periodSeconds |
就绪性探针的周期秒数 | 20 |
server.readinessProbe.timeoutSeconds |
就绪性探针的超时秒数 | 1 |
server.readinessProbe.failureThreshold |
就绪性探针的失败阈值 | 6 |
server.readinessProbe.successThreshold |
就绪性探针的成功阈值 | 1 |
server.customStartupProbe |
覆盖默认启动探针 | {} |
server.customLivenessProbe |
覆盖默认活跃性探针 | {} |
server.customReadinessProbe |
覆盖默认就绪性探针 | {} |
server.networkPolicy.enabled |
指定是否应创建网络策略 | true |
server.networkPolicy.allowExternal |
不需要客户端标签即可连接 | true |
server.networkPolicy.allowExternalEgress |
允许 Pod 访问任何端口范围和所有目标。 | true |
server.networkPolicy.kubeAPIServerPorts |
kube-apiserver 可能的端点列表(限制到您的集群设置以提高安全性) | [] |
server.networkPolicy.extraIngress |
向 NetworkPolicy 添加额外的入口规则 | [] |
server.networkPolicy.extraEgress |
向 NetworkPolicy 添加额外的入口规则 | [] |
server.networkPolicy.ingressNSMatchLabels |
要匹配的标签以允许来自其他命名空间的流量 | {} |
server.networkPolicy.ingressNSPodMatchLabels |
要匹配的 Pod 标签以允许来自其他命名空间的流量 | {} |
server.service.type |
Kubernetes 服务类型 | ClusterIP |
server.service.ports.http |
服务器 HTTP 端口 | 8080 |
server.service.nodePort |
为 LoadBalancer 和 NodePort 服务类型指定 nodePort 值 | "" |
server.service.clusterIP |
Dataflow 服务器服务集群 IP | "" |
server.service.externalTrafficPolicy |
启用客户端源 IP 保留 | 集群 |
server.service.loadBalancerIP |
如果服务类型为 LoadBalancer ,则为负载均衡器 IP |
"" |
server.service.loadBalancerSourceRanges |
服务为 LoadBalancer 时允许的地址 | [] |
server.service.extraPorts |
要暴露的额外端口(通常与 sidecar 值一起使用) |
[] |
server.service.annotations |
提供任何可能需要的额外注释。作为模板进行评估。 | {} |
server.service.sessionAffinity |
Kubernetes 服务的会话关联,可以是“None”或“ClientIP” | 无 |
server.service.sessionAffinityConfig |
sessionAffinity 的其他设置 | {} |
server.ingress.enabled |
启用入口控制器资源 | false |
server.ingress.path |
Spring Cloud Dataflow 的路径。您可能需要将其设置为“/*”才能将其与 ALB 入口控制器一起使用。 | / |
server.ingress.apiVersion |
强制使用 Ingress API 版本(如果未设置,则自动检测) | "" |
server.ingress.pathType |
Ingress 路径类型 | ImplementationSpecific |
server.ingress.hostname |
入口资源的默认主机 | dataflow.local |
server.ingress.annotations |
Ingress 资源的附加注释。要启用证书自动生成,请在此处放置您的 cert-manager 注释。 | {} |
server.ingress.tls |
为 ingress.hostname 参数定义的主机名启用 TLS 配置 | false |
server.ingress.certManager |
添加 cert-manager 集成的相应注释 | false |
server.ingress.extraHosts |
要由此入口记录覆盖的其他主机名列表。 | [] |
server.ingress.extraPaths |
包含可能需要在主主机下添加到入口的额外任意路径的数组 | [] |
server.ingress.extraTls |
要由此入口记录覆盖的其他主机名的 tls 配置。 | [] |
server.ingress.secrets |
如果您要提供自己的证书,请使用此选项将证书添加为密钥 | [] |
server.ingress.ingressClassName |
将用于实现 Ingress 的 IngressClass(Kubernetes 1.18+) | "" |
server.ingress.extraRules |
要由此入口记录覆盖的附加规则 | [] |
server.initContainers |
将初始化容器添加到 Dataflow Server Pod | [] |
server.sidecars |
将边车添加到 Dataflow Server Pod | [] |
server.pdb.create |
启用/禁用 Pod Disruption Budget 创建 | false |
server.pdb.minAvailable |
应保持调度的 Pod 的最小数量/百分比 | 1 |
server.pdb.maxUnavailable |
可能不可用的 Pod 的最大数量/百分比 | "" |
server.autoscaling.enabled |
为 Dataflow 服务器启用自动缩放 | false |
server.autoscaling.minReplicas |
Dataflow 服务器副本的最小数量 | "" |
server.autoscaling.maxReplicas |
Dataflow 服务器副本的最大数量 | "" |
server.autoscaling.targetCPU |
目标 CPU 利用率百分比 | "" |
server.autoscaling.targetMemory |
目标内存利用率百分比 | "" |
server.extraVolumes |
要设置在 Dataflow 服务器 Pod 上的额外卷 | [] |
server.extraVolumeMounts |
要设置在 Dataflow 容器上的额外卷挂载 | [] |
server.jdwp.enabled |
设置为 true 以启用 Java 调试器 | false |
server.jdwp.port |
指定远程调试端口 | 5005 |
server.proxy |
为 SCDF 服务器添加代理配置 | {} |
server.applicationProperties |
指定由 SCDF 服务器添加到流和/或任务的通用应用程序属性 | {} |
server.security.authorization |
授权自定义 | {} |
server.security.oauth2 |
OAuth 2.0 身份验证配置 | {} |
Dataflow Skipper 参数
名称 | 描述 | 值 |
---|---|---|
skipper.enabled |
启用 Spring Cloud Skipper 组件 | true |
skipper.automountServiceAccountToken |
在 Pod 中挂载服务帐户令牌 | true |
skipper.hostAliases |
部署 Pod 主机别名 | [] |
skipper.image.registry |
Spring Cloud Skipper 镜像仓库 | REGISTRY_NAME |
skipper.image.repository |
Spring Cloud Skipper 镜像库 | REPOSITORY_NAME/spring-cloud-skipper |
skipper.image.digest |
Spring Cloud Skipper 镜像摘要,格式为 sha256:aa.... 请注意,如果设置了此参数,它将覆盖标签 | "" |
skipper.image.pullPolicy |
Spring Cloud Skipper 镜像拉取策略 | IfNotPresent |
skipper.image.pullSecrets |
以数组形式指定 docker-registry 密钥名称 | [] |
skipper.image.debug |
启用镜像调试模式 | false |
skipper.configuration.accountName |
要为 Kubernetes 平台配置的帐户名称 | default |
skipper.configuration.trustK8sCerts |
在查询 Kubernetes API 时信任 K8s 证书 | false |
skipper.existingConfigmap |
包含 Skipper 服务器配置的现有 ConfigMap 的名称 | "" |
skipper.containerPorts.http |
容器 HTTP 端口 | 7577 |
skipper.containerPorts.jdwp |
容器 JDWP 端口 | 5005 |
skipper.command |
覆盖默认容器命令(在使用自定义镜像时很有用) | [] |
skipper.args |
覆盖默认容器参数(在使用自定义镜像时很有用) | [] |
skipper.lifecycleHooks |
用于 Skipper 容器在启动之前或之后自动执行配置 | {} |
skipper.extraEnvVars |
要设置在 Skipper 服务器容器上的额外环境变量 | [] |
skipper.extraEnvVarsCM |
包含额外环境变量的现有 ConfigMap 的名称 | "" |
skipper.extraEnvVarsSecret |
包含额外环境变量的现有 Secret 的名称 | "" |
skipper.replicaCount |
要部署的 Skipper 服务器副本数 | 1 |
skipper.podAffinityPreset |
Skipper Pod 亲和性预设。如果设置了 skipper.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
skipper.podAntiAffinityPreset |
Skipper Pod 反亲和性预设。如果设置了 skipper.affinity ,则忽略此项。允许的值:soft 或 hard |
soft |
skipper.nodeAffinityPreset.type |
Skipper 节点亲和性预设类型。如果设置了 skipper.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
skipper.nodeAffinityPreset.key |
要匹配的 Skipper 节点标签键。如果设置了 skipper.affinity ,则忽略此项。 |
"" |
skipper.nodeAffinityPreset.values |
要匹配的 Skipper 节点标签值。如果设置了 skipper.affinity ,则忽略此项。 |
[] |
skipper.affinity |
用于 Pod 分配的 Skipper 亲和性 | {} |
skipper.nodeSelector |
用于 Pod 分配的 Skipper 节点标签 | {} |
skipper.tolerations |
用于 Pod 分配的 Skipper 容忍度 | [] |
skipper.podAnnotations |
Skipper 服务器 Pod 的注释 | {} |
skipper.updateStrategy.type |
Skipper 服务器 Pod 的部署策略类型。 | RollingUpdate |
skipper.podLabels |
Skipper Pod 的额外标签 | {} |
skipper.priorityClassName |
控制器的优先级类名 | "" |
skipper.schedulerName |
k8s 调度程序的名称(默认值以外) | "" |
调度器名称 |
用于 Pod 分配的拓扑分布约束 | [] |
skipper.topologySpreadConstraints |
拓扑分布约束 | true |
skipper.podSecurityContext.enabled |
设置文件系统组更改策略 | 始终 |
启用 Skipper Pod 的安全上下文 |
使用 sysctl 接口设置内核设置 | [] |
skipper.podSecurityContext.fsGroupChangePolicy |
设置文件系统额外组 | [] |
文件系统组更改策略 |
Pod 卷的组 ID | 1001 |
skipper.podSecurityContext.sysctls |
启用容器的安全上下文 | true |
系统调用 |
在容器中设置 SELinux 选项 | {} |
skipper.podSecurityContext.supplementalGroups |
设置容器的安全上下文 runAsUser | 1001 |
补充组 |
设置容器的安全上下文 runAsGroup | 1001 |
skipper.podSecurityContext.fsGroup |
设置容器的安全上下文 runAsNonRoot | true |
文件系统组 |
设置容器的安全上下文 privileged | false |
skipper.containerSecurityContext.enabled |
设置容器的安全上下文 readOnlyRootFilesystem | true |
启用 Skipper 容器的安全上下文 |
设置容器的安全上下文 allowPrivilegeEscalation | false |
skipper.containerSecurityContext.seLinuxOptions |
要删除的功能列表 | ["ALL"] |
SELinux 选项 |
设置容器的安全上下文 seccomp 配置文件 | RuntimeDefault |
skipper.containerSecurityContext.runAsUser |
以用户身份运行 | small |
skipper.containerSecurityContext.runAsGroup |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
以组身份运行 |
启用启动探针 | false |
skipper.containerSecurityContext.runAsNonRoot |
启动探针的初始延迟秒数 | 120 |
以非 root 用户身份运行 |
启动探针的周期秒数 | 20 |
skipper.containerSecurityContext.privileged |
启动探针的超时秒数 | 1 |
特权模式 |
启动探针的失败阈值 | 6 |
skipper.containerSecurityContext.readOnlyRootFilesystem |
启动探针的成功阈值 | 1 |
只读根文件系统 |
启用活跃性探针 | true |
skipper.containerSecurityContext.allowPrivilegeEscalation |
活跃性探针的初始延迟秒数 | 120 |
允许权限提升 |
活跃性探针的周期秒数 | 20 |
skipper.containerSecurityContext.capabilities.drop |
活跃性探针的超时秒数 | 1 |
要删除的功能 |
活跃性探针的失败阈值 | 6 |
skipper.containerSecurityContext.seccompProfile.type |
活跃性探针的成功阈值 | 1 |
Seccomp 配置文件类型 |
启用就绪性探针 | true |
skipper.resourcesPreset |
就绪性探针的初始延迟秒数 | 120 |
根据一个通用预设设置容器资源(允许的值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 skipper.resources,则忽略此项(建议在生产环境中使用 skipper.resources)。 |
就绪性探针的周期秒数 | 20 |
skipper.resources |
就绪性探针的超时秒数 | 1 |
容器资源请求和限制 |
就绪性探针的失败阈值 | 6 |
skipper.startupProbe.enabled |
就绪性探针的成功阈值 | 1 |
启用启动探针 |
覆盖默认启动探针 | {} |
skipper.startupProbe.initialDelaySeconds |
覆盖默认活跃性探针 | {} |
启动探针的初始延迟时间(秒) |
覆盖默认就绪性探针 | {} |
skipper.startupProbe.periodSeconds |
指定是否应创建网络策略 | true |
启动探针的检查间隔时间(秒) |
不需要客户端标签即可连接 | true |
skipper.startupProbe.timeoutSeconds |
允许 Pod 访问任何端口范围和所有目标。 | true |
启动探针的超时时间(秒) |
kube-apiserver 可能的端点列表(限制到您的集群设置以提高安全性) | [] |
skipper.startupProbe.failureThreshold |
向 NetworkPolicy 添加额外的入口规则 | [] |
启动探针的失败阈值 |
向 NetworkPolicy 添加额外的入口规则 | [] |
skipper.startupProbe.successThreshold |
要匹配的标签以允许来自其他命名空间的流量 | {} |
启动探针的成功阈值 |
要匹配的 Pod 标签以允许来自其他命名空间的流量 | {} |
skipper.livenessProbe.enabled |
Kubernetes 服务类型 | ClusterIP |
启用活跃性探针 |
skipper.livenessProbe.initialDelaySeconds | 80 |
活跃性探针的初始延迟时间(秒) |
skipper.livenessProbe.periodSeconds | "" |
活跃性探针的检查间隔时间(秒) |
skipper.livenessProbe.timeoutSeconds | "" |
活跃性探针的超时时间(秒) |
启用客户端源 IP 保留 | 集群 |
skipper.livenessProbe.failureThreshold |
如果服务类型为 LoadBalancer ,则为负载均衡器 IP |
"" |
活跃性探针的失败阈值 |
skipper.livenessProbe.successThreshold | [] |
活跃性探针的成功阈值 |
要暴露的额外端口(通常与 sidecar 值一起使用) |
[] |
skipper.readinessProbe.enabled |
启用就绪性探针 | {} |
skipper.readinessProbe.initialDelaySeconds |
Kubernetes 服务的会话关联,可以是“None”或“ClientIP” | 无 |
就绪性探针的初始延迟时间(秒) |
sessionAffinity 的其他设置 | {} |
skipper.readinessProbe.periodSeconds |
就绪性探针的检查间隔时间(秒) | [] |
skipper.readinessProbe.timeoutSeconds |
就绪性探针的超时时间(秒) | [] |
skipper.readinessProbe.failureThreshold |
启用/禁用 Pod Disruption Budget 创建 | false |
就绪性探针的失败阈值 |
应保持调度的 Pod 的最小数量/百分比 | 1 |
skipper.readinessProbe.successThreshold |
可能不可用的 Pod 的最大数量/百分比 | "" |
就绪性探针的成功阈值 |
skipper.customStartupProbe | false |
自定义启动探针 |
skipper.customLivenessProbe | "" |
自定义活跃性探针 |
skipper.customReadinessProbe | "" |
自定义就绪性探针 |
目标 CPU 利用率百分比 | "" |
skipper.networkPolicy.enabled |
目标内存利用率百分比 | "" |
启用网络策略 |
skipper.networkPolicy.allowExternal | [] |
允许外部流量 |
skipper.networkPolicy.allowExternalEgress | [] |
允许外部出口流量 |
skipper.networkPolicy.kubeAPIServerPorts | false |
Kubernetes API 服务器端口 |
skipper.networkPolicy.extraIngress | 5005 |
额外的入口规则 |
skipper.networkPolicy.extraEgress | 额外的出口规则 |
skipper.networkPolicy.ingressNSMatchLabels |
入口流量的命名空间匹配标签 | 7577 |
部署器参数
名称 | 描述 | 值 |
---|---|---|
deployer.resourcesPreset |
根据一个通用预设设置容器资源(允许值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 deployer.resources,则忽略此项(建议在生产环境中使用 deployer.resources)。 | small |
deployer.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
deployer.readinessProbe.initialDelaySeconds |
就绪性探针的初始延迟秒数 | 120 |
deployer.livenessProbe.initialDelaySeconds |
活跃性探针的初始延迟秒数 | 90 |
deployer.nodeSelector |
要应用于流式应用程序部署的节点选择器,格式为“键:值” | "" |
deployer.tolerations |
流式应用程序容忍度 | [] |
deployer.volumeMounts |
流式应用程序额外卷挂载 | [] |
deployer.volumes |
流式应用程序额外卷 | [] |
deployer.environmentVariables |
流式应用程序环境变量 | [] |
deployer.podSecurityContext.enabled |
启用已部署的 Pod 批处理或流式 Pod 的 Pod 安全上下文 | true |
deployer.podSecurityContext.runAsUser |
设置数据流流容器的安全上下文 runAsUser | 1001 |
deployer.podSecurityContext.fsGroup |
设置数据流流容器的安全上下文 fsGroup | 1001 |
deployer.imagePullSecrets |
流式应用程序 imagePullSecrets | [] |
deployer.secretRefs |
流式应用程序 secretRefs | [] |
deployer.entryPointStyle |
入口点样式会影响应用程序属性如何传递到要部署的容器。允许值:exec(默认)、shell、boot | exec |
deployer.imagePullPolicy |
镜像拉取策略定义了何时应将 Docker 镜像拉取到本地注册表。允许值:IfNotPresent(默认)、Always、Never | IfNotPresent |
RBAC 参数
名称 | 描述 | 值 |
---|---|---|
serviceAccount.create |
为数据流服务器和 Skipper 服务器 Pod 启用 ServiceAccount 的创建 | true |
serviceAccount.name |
创建的 serviceAccount 的名称。如果未设置且 create 为 true,则使用 common.names.fullname 模板生成名称 | "" |
serviceAccount.automountServiceAccountToken |
为服务器服务帐户自动挂载服务帐户令牌 | false |
serviceAccount.annotations |
服务帐户的注释。作为模板进行评估。仅在 create 为 true 时使用。 |
{} |
rbac.create |
是否创建和使用 RBAC 资源 | true |
指标参数
名称 | 描述 | 值 |
---|---|---|
metrics.enabled |
启用 Prometheus 指标 | false |
metrics.image.registry |
Prometheus Rsocket 代理镜像仓库 | REGISTRY_NAME |
metrics.image.repository |
Prometheus Rsocket 代理镜像仓库地址 | REPOSITORY_NAME/prometheus-rsocket-proxy |
metrics.image.digest |
Prometheus Rsocket 代理镜像摘要,格式为 sha256:aa.... 请注意,如果设置此参数,将覆盖标签 | "" |
metrics.image.pullPolicy |
Prometheus Rsocket 代理镜像拉取策略 | IfNotPresent |
metrics.image.pullSecrets |
以数组形式指定 docker-registry 密钥名称 | [] |
metrics.resourcesPreset |
根据一个通用预设设置容器资源(允许的值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 metrics.resources,则忽略此项(建议在生产环境中使用 metrics.resources)。 | nano |
metrics.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
metrics.replicaCount |
要部署的 Prometheus Rsocket 代理副本数 | 1 |
metrics.podAffinityPreset |
Prometheus Rsocket 代理 Pod 亲和性预设。如果设置了 metrics.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
metrics.podAntiAffinityPreset |
Prometheus Rsocket 代理 Pod 反亲和性预设。如果设置了 metrics.affinity ,则忽略此项。允许的值:soft 或 hard |
soft |
metrics.nodeAffinityPreset.type |
Prometheus Rsocket 代理节点亲和性预设类型。如果设置了 metrics.affinity ,则忽略此项。允许的值:soft 或 hard |
"" |
metrics.nodeAffinityPreset.key |
要匹配的 Prometheus Rsocket 代理节点标签键。如果设置了 metrics.affinity ,则忽略此项。 |
"" |
metrics.nodeAffinityPreset.values |
要匹配的 Prometheus Rsocket 代理节点标签值。如果设置了 metrics.affinity ,则忽略此项。 |
[] |
metrics.affinity |
用于 Pod 分配的 Prometheus Rsocket 代理亲和性 | {} |
metrics.nodeSelector |
用于 Pod 分配的 Prometheus Rsocket 代理节点标签 | {} |
metrics.automountServiceAccountToken |
在 Pod 中挂载服务帐户令牌 | true |
metrics.hostAliases |
Prometheus 代理 Pod 主机别名 | [] |
metrics.tolerations |
用于 Pod 分配的 Prometheus Rsocket 代理容忍度 | [] |
metrics.podAnnotations |
Prometheus Rsocket 代理 Pod 的注释 | {} |
metrics.podLabels |
Prometheus 代理 Pod 的额外标签 | {} |
metrics.podSecurityContext.enabled |
启用 Prometheus 代理 Pod 的安全上下文 | true |
metrics.podSecurityContext.fsGroupChangePolicy |
设置文件系统组更改策略 | 始终 |
metrics.podSecurityContext.sysctls |
使用 sysctl 接口设置内核设置 | [] |
metrics.podSecurityContext.supplementalGroups |
设置文件系统额外组 | [] |
metrics.podSecurityContext.fsGroup |
设置 Prometheus 代理 Pod 的安全上下文 fsGroup | 1001 |
metrics.containerSecurityContext.enabled |
启用容器的安全上下文 | true |
metrics.containerSecurityContext.seLinuxOptions |
在容器中设置 SELinux 选项 | {} |
metrics.containerSecurityContext.runAsUser |
设置容器的安全上下文 runAsUser | 1001 |
metrics.containerSecurityContext.runAsGroup |
设置容器的安全上下文 runAsGroup | 1001 |
metrics.containerSecurityContext.runAsNonRoot |
设置容器的安全上下文 runAsNonRoot | true |
metrics.containerSecurityContext.privileged |
设置容器的安全上下文 privileged | false |
metrics.containerSecurityContext.readOnlyRootFilesystem |
设置容器的安全上下文 readOnlyRootFilesystem | true |
metrics.containerSecurityContext.allowPrivilegeEscalation |
设置容器的安全上下文 allowPrivilegeEscalation | false |
metrics.containerSecurityContext.capabilities.drop |
要删除的功能列表 | ["ALL"] |
metrics.containerSecurityContext.seccompProfile.type |
设置容器的安全上下文 seccomp 配置文件 | RuntimeDefault |
metrics.command |
覆盖默认容器命令(在使用自定义镜像时很有用) | [] |
metrics.args |
覆盖默认容器参数(在使用自定义镜像时很有用) | [] |
metrics.lifecycleHooks |
用于 Prometheus 代理容器,在启动之前或之后自动执行配置 | {} |
metrics.extraEnvVars |
包含要添加到 Prometheus 代理节点的额外环境变量的数组 | [] |
metrics.extraEnvVarsCM |
包含 Prometheus 代理节点额外环境变量的现有 ConfigMap 的名称 | "" |
metrics.extraEnvVarsSecret |
包含 Prometheus 代理节点额外环境变量的现有 Secret 的名称 | "" |
metrics.extraVolumes |
(可选)为 Prometheus 代理 Pod 指定额外的卷列表 | [] |
metrics.extraVolumeMounts |
(可选)为 Prometheus 代理容器指定额外的卷挂载列表 | [] |
metrics.containerPorts.http |
Prometheus 代理 HTTP 容器端口 | 8080 |
metrics.containerPorts.rsocket |
Prometheus 代理 Rsocket 容器端口 | 7001 |
metrics.startupProbe.enabled |
在 Prometheus 代理节点上启用启动探针 | false |
metrics.startupProbe.initialDelaySeconds |
启动探针的初始延迟秒数 | 10 |
metrics.startupProbe.periodSeconds |
启动探针的周期秒数 | 10 |
metrics.startupProbe.timeoutSeconds |
启动探针的超时秒数 | 1 |
metrics.startupProbe.failureThreshold |
启动探针的失败阈值 | 3 |
metrics.startupProbe.successThreshold |
启动探针的成功阈值 | 1 |
metrics.livenessProbe.enabled |
在 Prometheus 代理节点上启用活跃性探针 | true |
metrics.livenessProbe.initialDelaySeconds |
活跃性探针的初始延迟秒数 | 10 |
metrics.livenessProbe.periodSeconds |
活跃性探针的周期秒数 | 10 |
metrics.livenessProbe.timeoutSeconds |
活跃性探针的超时秒数 | 1 |
metrics.livenessProbe.failureThreshold |
活跃性探针的失败阈值 | 3 |
metrics.livenessProbe.successThreshold |
活跃性探针的成功阈值 | 1 |
metrics.readinessProbe.enabled |
在 Prometheus 代理节点上启用就绪性探针 | true |
metrics.readinessProbe.initialDelaySeconds |
就绪性探针的初始延迟秒数 | 10 |
metrics.readinessProbe.periodSeconds |
就绪性探针的周期秒数 | 10 |
metrics.readinessProbe.timeoutSeconds |
就绪性探针的超时秒数 | 1 |
metrics.readinessProbe.failureThreshold |
就绪性探针的失败阈值 | 3 |
metrics.readinessProbe.successThreshold |
就绪性探针的成功阈值 | 1 |
metrics.customStartupProbe |
自定义启动探针,用于覆盖默认探针 | {} |
metrics.customLivenessProbe |
自定义活跃性探针,用于覆盖默认探针 | {} |
metrics.customReadinessProbe |
自定义就绪性探针,用于覆盖默认探针 | {} |
metrics.sidecars |
向 Prometheus 代理 Pod 添加额外的边车容器 | [] |
metrics.initContainers |
向 Prometheus 代理 Pod 添加额外的初始化容器 | [] |
metrics.updateStrategy.type |
Prometheus 代理部署策略类型。 | RollingUpdate |
metrics.priorityClassName |
Prometheus Rsocket 代理 Pod 的优先级。 | "" |
metrics.schedulerName |
k8s 调度程序的名称(默认值以外) | "" |
metrics.topologySpreadConstraints |
用于 Pod 分配的拓扑分布约束 | [] |
metrics.networkPolicy.enabled |
指定是否应创建网络策略 | true |
metrics.networkPolicy.allowExternal |
不需要客户端标签即可连接 | true |
metrics.networkPolicy.allowExternalEgress |
允许 Pod 访问任何端口范围和所有目标。 | true |
metrics.networkPolicy.extraIngress |
向 NetworkPolicy 添加额外的入口规则 | [] |
metrics.networkPolicy.extraEgress |
向 NetworkPolicy 添加额外的入口规则 | [] |
metrics.networkPolicy.ingressNSMatchLabels |
要匹配的标签以允许来自其他命名空间的流量 | {} |
metrics.networkPolicy.ingressNSPodMatchLabels |
要匹配的 Pod 标签以允许来自其他命名空间的流量 | {} |
metrics.service.type |
Prometheus 代理服务类型 | ClusterIP |
metrics.service.ports.http |
Prometheus Rsocket 代理 HTTP 端口 | 8080 |
metrics.service.ports.rsocket |
Prometheus Rsocket 代理 Rsocket 端口 | 7001 |
metrics.service.nodePorts.http |
HTTP 的节点端口 | "" |
metrics.service.nodePorts.rsocket |
Rsocket 的节点端口 | "" |
metrics.service.clusterIP |
Prometheus 代理服务的集群 IP | "" |
metrics.service.loadBalancerIP |
Prometheus 代理服务的负载均衡器 IP | "" |
metrics.service.loadBalancerSourceRanges |
Prometheus 代理服务的负载均衡器来源 | [] |
metrics.service.externalTrafficPolicy |
Prometheus 代理服务的外部流量策略 | 集群 |
metrics.service.extraPorts |
要暴露的额外端口(通常与 sidecar 值一起使用) |
[] |
metrics.service.annotations |
Prometheus Rsocket 代理服务的注释 | {} |
metrics.service.sessionAffinity |
Kubernetes 服务的会话关联,可以是“None”或“ClientIP” | 无 |
metrics.service.sessionAffinityConfig |
sessionAffinity 的其他设置 | {} |
metrics.serviceMonitor.enabled |
如果为 true ,则创建 Prometheus Operator ServiceMonitor(还需要将 metrics.enabled 设置为 true ) |
false |
metrics.serviceMonitor.namespace |
如果与发布的命名空间不同,则在该命名空间中创建 ServiceMonitor | "" |
metrics.serviceMonitor.jobLabel |
目标服务上标签的名称,用作 Prometheus 中的作业名称。 | "" |
metrics.serviceMonitor.interval |
抓取指标的时间间隔。 | "" |
metrics.serviceMonitor.scrapeTimeout |
抓取结束后的超时时间 | "" |
metrics.serviceMonitor.relabelings |
在抓取之前应用于样本的 RelabelConfigs | [] |
metrics.serviceMonitor.metricRelabelings |
在摄取之前应用于样本的 MetricRelabelConfigs | [] |
metrics.serviceMonitor.selector |
ServiceMonitor 选择器标签 | {} |
metrics.serviceMonitor.labels |
ServiceMonitor 的额外标签 | {} |
metrics.serviceMonitor.honorLabels |
honorLabels 在与目标标签冲突时选择指标的标签 | false |
metrics.pdb.create |
启用/禁用 Pod Disruption Budget 创建 | false |
metrics.pdb.minAvailable |
应保持调度的 Pod 的最小数量/百分比 | 1 |
metrics.pdb.maxUnavailable |
可能不可用的 Pod 的最大数量/百分比 | "" |
metrics.autoscaling.enabled |
为 Prometheus Rsocket 代理启用自动缩放 | false |
metrics.autoscaling.minReplicas |
Prometheus Rsocket 代理副本的最小数量 | "" |
metrics.autoscaling.maxReplicas |
Prometheus Rsocket 代理副本的最大数量 | "" |
metrics.autoscaling.targetCPU |
目标 CPU 利用率百分比 | "" |
metrics.autoscaling.targetMemory |
目标内存利用率百分比 | "" |
初始化容器参数
名称 | 描述 | 值 |
---|---|---|
waitForBackends.enabled |
在启用流式传输时等待数据库和其他服务(例如 Kafka 或 RabbitMQ) | true |
waitForBackends.image.registry |
初始化容器 wait-for-backend 镜像仓库 | REGISTRY_NAME |
waitForBackends.image.repository |
初始化容器 wait-for-backend 镜像名称 | REPOSITORY_NAME/kubectl |
waitForBackends.image.digest |
初始化容器 wait-for-backend 镜像摘要,格式为 sha256:aa.... 请注意,如果设置此参数,将覆盖标签 | "" |
waitForBackends.image.pullPolicy |
初始化容器 wait-for-backend 镜像拉取策略 | IfNotPresent |
waitForBackends.image.pullSecrets |
以数组形式指定 docker-registry 密钥名称 | [] |
waitForBackends.containerSecurityContext.enabled |
启用容器的安全上下文 | true |
waitForBackends.containerSecurityContext.seLinuxOptions |
在容器中设置 SELinux 选项 | {} |
waitForBackends.containerSecurityContext.runAsUser |
设置容器的安全上下文 runAsUser | 1001 |
waitForBackends.containerSecurityContext.runAsGroup |
设置容器的安全上下文 runAsGroup | 1001 |
waitForBackends.containerSecurityContext.runAsNonRoot |
设置容器的安全上下文 runAsNonRoot | true |
waitForBackends.containerSecurityContext.privileged |
设置容器的安全上下文 privileged | false |
waitForBackends.containerSecurityContext.readOnlyRootFilesystem |
设置容器的安全上下文 readOnlyRootFilesystem | true |
waitForBackends.containerSecurityContext.allowPrivilegeEscalation |
设置容器的安全上下文 allowPrivilegeEscalation | false |
waitForBackends.containerSecurityContext.capabilities.drop |
要删除的功能列表 | ["ALL"] |
waitForBackends.containerSecurityContext.seccompProfile.type |
设置容器的安全上下文 seccomp 配置文件 | RuntimeDefault |
waitForBackends.resourcesPreset |
根据一个常见的预设设置容器资源(允许的值:none、nano、micro、small、medium、large、xlarge、2xlarge)。如果设置了 waitForBackends.resources,则忽略此项(建议在生产环境中使用 waitForBackends.resources)。 | nano |
waitForBackends.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
数据库参数
名称 | 描述 | 值 |
---|---|---|
mariadb.enabled |
启用/禁用 MariaDB 图表安装 | true |
mariadb.jdbcParameter.useMysqlMetadata |
使用 MariaDB useMysqlMetadata 参数。 | true |
mariadb.image.registry |
MariaDB 镜像仓库 | REGISTRY_NAME |
mariadb.image.repository |
MariaDB 镜像仓库 | REPOSITORY_NAME/mariadb |
mariadb.image.digest |
MariaDB 镜像摘要,格式为 sha256:aa.... 请注意,如果设置此参数,将覆盖标签 | "" |
mariadb.architecture |
MariaDB 架构。允许的值:standalone 或 replication |
standalone |
mariadb.auth.rootPassword |
MariaDB root 用户的密码 |
"" |
mariadb.auth.username |
要创建的新用户的用户名 | dataflow |
mariadb.auth.password |
新用户的密码 | change-me |
mariadb.auth.database |
要创建的数据库名称 | dataflow |
mariadb.auth.forcePassword |
强制用户在数据库中指定所需的密码 | false |
mariadb.auth.usePasswordFiles |
将凭据作为文件挂载,而不是使用环境变量 | false |
mariadb.initdbScripts |
指定在首次启动时要运行的脚本字典 | {} |
mariadb.primary.resourcesPreset |
根据一个常见的预设设置容器资源(允许的值:none、nano、small、medium、large、xlarge、2xlarge)。如果设置了 primary.resources,则忽略此项(建议在生产环境中使用 primary.resources)。 | micro |
mariadb.primary.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
flyway.enabled |
启用/禁用在启动时运行 Dataflow 和 Skipper 数据库创建脚本的 flyway | true |
externalDatabase.host |
外部数据库的主机 | 额外的出口规则 |
externalDatabase.port |
外部数据库端口号 | 3306 |
externalDatabase.driver |
JDBC 驱动程序类的完全限定名称 | "" |
externalDatabase.scheme |
方案是特定于供应商或共享的协议字符串,位于 URL 的“jdbc:”之后 | "" |
externalDatabase.hibernateDialect |
Dataflow/Skipper 服务器使用的 Hibernate 方言 | "" |
externalDatabase.password |
外部数据库密码(已弃用:请改用 dataflow.password 和 skipper.password) | "" |
externalDatabase.existingPasswordSecret |
包含数据库密码的现有密钥(已弃用:请改用 dataflow.existingSecret 和 skipper.existingSecret) | "" |
externalDatabase.existingPasswordKey |
包含数据库密码的现有密钥的键(已弃用:请改用 dataflow.existingSecretPasswordKey 和 skipper.existingSecretPasswordKey) | "" |
externalDatabase.dataflow.url |
dataflow 服务器的 JDBC URL。覆盖外部方案、主机、端口、密码和 dataflow.database 参数。 | "" |
externalDatabase.dataflow.database |
Dataflow 服务器要使用的现有数据库的名称。如果提供了 url,则忽略此项 | dataflow |
externalDatabase.dataflow.username |
Dataflow 服务器要使用的外部数据库中的现有用户名 | dataflow |
externalDatabase.dataflow.password |
上述用户名的密码。如果提供了现有密钥,则忽略此项 | "" |
externalDatabase.dataflow.existingSecret |
包含 Dataflow 服务器数据库凭据的现有密钥的名称 | "" |
externalDatabase.dataflow.existingSecretPasswordKey |
包含数据库密码的上述现有密钥的键,默认为 datasource-password |
"" |
externalDatabase.skipper.url |
skipper 的 JDBC URL。覆盖外部方案、主机、端口、数据库和 skipper.database 参数。 | "" |
externalDatabase.skipper.database |
Skipper 服务器要使用的现有数据库的名称。如果提供了 url,则忽略此项 | skipper |
externalDatabase.skipper.username |
Skipper 服务器要使用的外部数据库中的现有用户名 | skipper |
externalDatabase.skipper.password |
上述用户名的密码。如果提供了现有密钥,则忽略此项 | "" |
externalDatabase.skipper.existingSecret |
包含 Skipper 服务器数据库凭据的现有密钥的名称 | "" |
externalDatabase.skipper.existingSecretPasswordKey |
包含数据库密码的上述现有密钥的键,默认为 datasource-password |
"" |
RabbitMQ 图表参数
名称 | 描述 | 值 |
---|---|---|
rabbitmq.enabled |
启用/禁用 RabbitMQ 图表安装 | true |
rabbitmq.auth.username |
RabbitMQ 用户名 | user |
rabbitmq.resourcesPreset |
根据一个常见预设设置容器资源(允许的值:none、nano、small、medium、large、xlarge、2xlarge)。如果设置了 resources,则忽略此项(建议在生产环境中使用 resources)。 | micro |
rabbitmq.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
externalRabbitmq.enabled |
启用/禁用外部 RabbitMQ | false |
externalRabbitmq.host |
外部 RabbitMQ 的主机 | 额外的出口规则 |
externalRabbitmq.port |
外部 RabbitMQ 端口号 | 5672 |
externalRabbitmq.username |
外部 RabbitMQ 用户名 | guest |
externalRabbitmq.password |
外部 RabbitMQ 密码。它将保存在 Kubernetes 密钥中 | guest |
externalRabbitmq.vhost |
外部 RabbitMQ 虚拟主机。它将保存在 Kubernetes 密钥中 | "" |
externalRabbitmq.existingPasswordSecret |
包含 RabbitMQ 密码的现有密钥(已弃用:请改用 externalRabbitmq.existingSecret) | "" |
externalRabbitmq.existingSecret |
包含 RabbitMQ 凭据的现有密钥的名称 | "" |
externalRabbitmq.existingSecretPasswordKey |
上述包含 RabbitMQ 密码的现有密钥的键,默认为 password |
"" |
Kafka 图表参数
名称 | 描述 | 值 |
---|---|---|
kafka.enabled |
启用/禁用 Kafka 图表安装 | false |
kafka.controller.replicaCount |
Kafka 控制器+代理节点的数量 | 1 |
kafka.controller.resourcesPreset |
根据一个常见预设设置容器资源(允许的值:none、nano、small、medium、large、xlarge、2xlarge)。如果设置了 controller.resources,则忽略此项(建议在生产环境中使用 controller.resources)。 | small |
kafka.controller.resources |
为 CPU 或内存等不同资源设置容器请求和限制(对于生产工作负载至关重要) | {} |
kafka.extraConfig |
要附加到动态设置的 Kafka 额外配置 | offsets.topic.replication.factor=1 |
externalKafka.enabled |
启用/禁用外部 Kafka | false |
externalKafka.brokers |
外部 Kafka 代理 | localhost:9092 |
externalKafka.zkNodes |
外部 Zookeeper 节点 | localhost:2181 |
使用 --set key=value[,key=value]
参数为 helm install
指定每个参数。例如,
helm install my-release --set server.replicaCount=2 oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
上述命令安装了具有 2 个 Dataflow 服务器副本的 Spring Cloud Data Flow 图表。
或者,可以在安装图表时提供一个 YAML 文件,其中指定了参数的值。例如,
helm install my-release -f values.yaml oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。 提示:您可以使用默认的 values.yaml
故障排除
在本故障排除指南中查找有关如何处理与 Bitnami Helm 图表相关的常见错误的更多信息。
升级
如果您启用了 RabbitMQ 图表作为 Skipper 用于管理流内容的消息传递解决方案,则在升级时需要设置 rabbitmq.auth.password
和 rabbitmq.auth.erlangCookie
参数,以便准备/活动探测正常工作。检查 RabbitMQ 密钥以获取密码和 Erlang Cookie,然后您可以使用以下命令升级图表
到 28.0.0
此主要版本将 RabbitMQ 子图表更新到其最新主要版本 14.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 27.0.0
此主要版本更改了以下安全默认值
runAsGroup
从0
更改为1001
readOnlyRootFilesystem
设置为true
resourcesPreset
从none
更改为在我们的测试套件中工作的最小大小(注意:resourcesPreset
不适用于生产环境,而应使用适合您的用例的resources
)。global.compatibility.openshift.adaptSecurityContext
从disabled
更改为auto
。
这可能会破坏部署中使用的任何自定义或初始化脚本。如果是这种情况,请将默认值更改为以前的值。
此外,此主要版本将 MariaDB 图表版本提升至 18.x.x;升级过程中预计不会出现重大问题。
到 25.0.0
此主要版本将 Kafka 子图表更新到其最新主要版本 26.0.0。有关此子图表主要版本的更多信息,请参阅Kafka 升级说明。
到 24.0.0
此主要版本将 MariaDB 版本提升至 11.1。升级过程中预计不会出现重大问题。
到 23.0.0
此主要版本将 Kafka 子图表更新到其最新主要版本 25.0.0。有关此子图表主要版本的更多信息,请参阅Kafka 升级说明。
到 22.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 24.0.0。此新版本重构了 Kafka 图表架构,并且在升级过程中需要手动操作。有关此子图表主要版本的更多信息,请参阅Kafka 升级说明。
影响 spring-cloud-dataflow 图表默认值的最显着变化是
- 值
kafka.replicaCount
已重命名为kafka.controller.replicaCount
。 - 默认值为
1
的值kafka.offsetsTopicReplicationFactor
现在使用新值kafka.extraConfig
进行配置。
到 18.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 22.0.0。此新版本的 Kafka 默认使用 Kraft。有关此子图表主要版本的更多信息,请参阅Kafka 升级说明。
到 17.0.0
此主要版本将 MariaDB 版本提升至 10.11。请按照上游说明从 MariaDB 10.6 升级到 10.11。升级过程中预计不会出现重大问题。
到 16.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 21.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 15.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 20.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 14.0.0
此主要更新将 RabbitMQ 子图表更新到其最新主要版本 11.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 13.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 19.0.0。有关此子图表主要版本的更多信息,请参阅Kafka 升级说明。
到 12.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 18.0.0。升级过程中预计不会出现重大问题。
到 11.0.0
此图表将 RabbitMQ 版本提升至 3.10.x。升级过程中预计不会出现问题。
到 10.0.0
此主要更新将 Kafka 子图表更新到其最新主要版本 17.0.0。升级过程中预计不会出现重大问题。
到 9.0.0
此主要更新将 RabbitMQ 子图表更新到其最新主要版本 9.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 8.0.0
此主要版本将 MariaDB 版本提升至 10.6。请遵循上游说明从 MariaDB 10.5 升级到 10.6。升级过程中预计不会出现重大问题。
到 7.0.0
此主要版本将 Kafka 子图表更新到其最新主要版本 16.0.0。此处您可以找到有关该版本中引入的更改的更多信息。
到 6.0.0
此主要版本将 Kafka 子图表更新到其最新主要版本 15.x.x
,其中包含对支持值的若干更改,并将 Kafka 主要版本提升到 3.x
系列(查看升级说明以获取更多信息)。
要使用 Kafka 作为消息传递解决方案从 5.x 升级到 6.0.0,应通过维护 Kafka 2.x
系列来完成。为此,请按照以下说明操作(以下示例假设版本名称为 scdf,版本命名空间为 default)
-
获取当前版本中的凭据
export MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace default scdf-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d) export MARIADB_PASSWORD=$(kubectl get secret --namespace default scdf-mariadb -o jsonpath="{.data.mariadb-password}" | base64 -d)
-
使用相同的 Kafka 版本升级您的版本
$ export CURRENT_KAFKA_VERSION=$(kubectl exec scdf-kafka-0 -- bash -c 'echo $BITNAMI_IMAGE_VERSION') helm upgrade scdf oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow \ --set rabbitmq.enabled=false \ --set kafka.enabled=true \ --set kafka.image.tag=$CURRENT_KAFKA_VERSION \ --set mariadb.auth.password=$MARIADB_PASSWORD \ --set mariadb.auth.rootPassword=$MARIADB_ROOT_PASSWORD
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
到 5.0.0
此主要版本重命名了此图表中的多个值并添加了缺少的功能,以便与 Bitnami 图表存储库中的其余资产保持一致。
受影响的值
serviceMonitor.extraLabels
重命名为serviceMonitor.labels
。server.strategyType
和skikker.strategyType
已分别替换为server.updateStrategy
和skikker.updateStrategy
。虽然strategyType
被解释为字符串,但updateStrategy
被解释为对象。- 服务帐户令牌现在默认设置为自动挂载
false
。要更改此设置,请将值serviceAccount.automountServiceAccountToken
设置为true
。
此外,MariaDB 子图表也更新到了最新的主要版本 10.0.0,其中包含类似的更改。您可以在此处找到有关此版本中引入的更改的更多信息。
到 4.0.0
此主要版本将 Kafka 子图表更新为其最新的主要版本 14.0.0。您可以在此处找到有关此版本中引入的更改的更多信息。
到 3.0.0
此主要版本将 Kafka 子图表更新为其最新的主要版本 13.0.0。有关此子图表主要版本的更多信息,请参阅kafka 升级说明。
到 2.0.0
2020 年 11 月 13 日,Helm v2 支持正式结束,此主要版本是对 Helm Chart 应用必要更改的结果,以便能够合并 Helm v3 中添加的不同功能,并与 Helm 项目本身保持一致,关于 Helm v2 EOL。
此主要版本中引入了哪些更改?
- 此 Helm Chart 的先前版本使用
apiVersion: v1
(可由 Helm 2 和 3 安装),此 Helm Chart 已更新为apiVersion: v2
(仅可由 Helm 3 安装)。您可以在此处找到有关apiVersion
字段的更多信息。 - 将依赖项信息从 requirements.yaml 移动到 Chart.yaml
- 运行
helm dependency update
后,将生成一个 Chart.lock 文件,其中包含与先前 requirements.lock 中使用的结构相同的结构 - Chart.yaml 文件中存在的不同字段已按字母顺序以统一的方式为所有 Bitnami Helm Charts 排序
升级到此版本时的注意事项
- 如果您想从使用 Helm v3 安装的先前版本升级到此版本,则应该不会遇到任何问题。
- 如果您想使用 Helm v2 升级到此版本,则不支持此方案,因为此版本不再支持 Helm v2。
- 如果您使用 Helm v2 安装了先前版本,并且想使用 Helm v3 升级到此版本,请参阅有关从 Helm v2 迁移到 v3 的官方 Helm 文档。
有用链接
- https://docs.vmware.com/en/VMware-Tanzu-Application-Catalog/services/tutorials/GUID-resolve-helm2-helm3-post-migration-issues-index.html
- https://helm.kubernetes.ac.cn/docs/topics/v2_v3_migration/
- https://helm.kubernetes.ac.cn/blog/migrate-from-helm-v2-to-helm-v3/
v0.x.x
helm upgrade my-release oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow --set mariadb.rootUser.password=[MARIADB_ROOT_PASSWORD] --set rabbitmq.auth.password=[RABBITMQ_PASSWORD] --set rabbitmq.auth.erlangCookie=[RABBITMQ_ERLANG_COOKIE]
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
v1.x.x
helm upgrade my-release oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow --set mariadb.auth.rootPassword=[MARIADB_ROOT_PASSWORD] --set rabbitmq.auth.password=[RABBITMQ_PASSWORD] --set rabbitmq.auth.erlangCookie=[RABBITMQ_ERLANG_COOKIE]
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
到 1.0.0
MariaDB 依赖项版本已升级到引入多个不兼容性的新主版本。因此,除非使用外部数据库,否则不保证向后兼容性。查看MariaDB 升级说明了解更多信息。
要升级到1.0.0
,您需要重用用于保存先前版本中 MariaDB 数据的 PVC。为此,请按照以下说明操作(以下示例假设版本名称为dataflow
)
注意:在执行任何这些操作之前,请创建数据库备份。
获取凭据以及用于在当前版本上保存 MariaDB 数据的 PVC 的名称
export MARIADB_ROOT_PASSWORD=$(kubectl get secret --namespace default dataflow-mariadb -o jsonpath="{.data.mariadb-root-password}" | base64 -d)
export MARIADB_PASSWORD=$(kubectl get secret --namespace default dataflow-mariadb -o jsonpath="{.data.mariadb-password}" | base64 -d)
export MARIADB_PVC=$(kubectl get pvc -l app=mariadb,component=master,release=dataflow -o jsonpath="{.items[0].metadata.name}")
export RABBITMQ_PASSWORD=$(kubectl get secret --namespace default dataflow-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 -d)
export RABBITMQ_ERLANG_COOKIE=$(kubectl get secret --namespace default dataflow-rabbitmq -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 -d)
升级您的版本(保持版本不变),禁用 MariaDB 并将数据流副本缩减为 0
helm upgrade dataflow oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow --version 0.7.4 \
--set server.replicaCount=0 \
--set skipper.replicaCount=0 \
--set mariadb.enabled=false \
--set rabbitmq.auth.password=$RABBITMQ_PASSWORD \
--set rabbitmq.auth.erlangCookie=$RABBITMQ_ERLANG_COOKIE
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
最后,将您的版本升级到 1.0.0,重复使用现有的 PVC,并重新启用 MariaDB
helm upgrade dataflow oci://REGISTRY_NAME/REPOSITORY_NAME/spring-cloud-dataflow \
--set mariadb.primary.persistence.existingClaim=$MARIADB_PVC \
--set mariadb.auth.rootPassword=$MARIADB_ROOT_PASSWORD \
--set mariadb.auth.password=$MARIADB_PASSWORD \
--set rabbitmq.auth.password=$RABBITMQ_PASSWORD \
--set rabbitmq.auth.erlangCookie=$RABBITMQ_ERLANG_COOKIE
注意:您需要将占位符
REGISTRY_NAME
和REPOSITORY_NAME
替换为对您的 Helm 图表注册表和存储库的引用。例如,在 Bitnami 的情况下,您需要使用REGISTRY_NAME=registry-1.docker.io
和REPOSITORY_NAME=bitnamicharts
。
您应该会在 MariaDB 容器日志中看到以下几行
$ kubectl logs $(kubectl get pods -l app.kubernetes.io/instance=dataflow,app.kubernetes.io/name=mariadb,app.kubernetes.io/component=primary -o jsonpath="{.items[0].metadata.name}")
...
mariadb 12:13:24.98 INFO ==> Using persisted data
mariadb 12:13:25.01 INFO ==> Running mysql_upgrade
...
许可证
版权所有 © 2024 Broadcom。“Broadcom”一词指的是 Broadcom Inc. 和/或其子公司。
根据 Apache 许可证 2.0 版(“许可证”)获得许可;除非符合许可证,否则您不得使用此文件。您可以在以下网址获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证下许可和限制的特定语言,请参阅许可证。
预期输出
发出 helm install
命令后,您应该会看到类似于以下内容的输出
NAME: my-release
LAST DEPLOYED: Sun Nov 22 21:12:29 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
** Please be patient while the chart is being deployed **
Spring Cloud Data Flow 图表是使用以下组件部署的
- Spring Cloud Data Flow 服务器
- Spring Cloud Skipper 服务器
您可以通过集群内的以下 DNS 名称访问 Spring Cloud Data Flow
my-release-spring-cloud-dataflow-server.default.svc.cluster.local (port 8080)
要从集群外部访问 Spring Cloud Data Flow 仪表板,请运行以下命令
-
通过运行以下命令获取 Data Flow 仪表板 URL
export SERVICEPORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-release-spring-cloud-dataflow-server) kubectl port-forward --namespace default svc/my-release-spring-cloud-dataflow-server ${SERVICEPORT}:${SERVICEPORT} & echo "http://127.0.0.1:${SERVICEPORT}/dashboard"
- 打开浏览器并使用获取的 URL 访问 Data Flow 仪表板。
如果您愿意,可以通过将以下 set
参数传递给 helm install
来更改 Spring Cloud Data Flow 服务类型
--set server.service.type=ServiceType
其中 ServiceType
将是一个有效的服务名称(例如 LoadBalancer
、NodePort
等)。
LoadBalancer IP 可能需要几分钟才能可用。您可以通过运行 kubectl get svc -w my-release-spring-cloud-dataflow-server
来观察服务器的状态
如果您使用不支持负载均衡器的 Minikube,则可以使用以下命令获取服务器的 URL
minikube service --url my-release-spring-cloud-dataflow-server
您现在已经在 Kubernetes 集群的默认命名空间中创建了一个新版本。应用程序及其所需服务需要几分钟才能启动。您可以通过发出 kubectl get pod -w
命令来检查状态。您需要等待 READY
列为所有 pod 显示 1/1
。
当所有 pod 都准备就绪后,您可以通过访问 http://<SERVICE_ADDRESS>/dashboard
来访问 Spring Cloud Data Flow 仪表板,其中 <SERVICE_ADDRESS>
是之前显示的 kubectl
或 minikube
命令返回的地址。
版本兼容性
以下列表显示了 Spring Cloud Data Flow 与相应 Helm Chart 版本的版本兼容性
官方 Helm 存储库中已弃用的图表映射
SCDF 版本 | 图表版本 |
---|---|
SCDF-K8S-Server 1.7.x | 1.0.x |
SCDF-K8S-Server 2.0.x | 2.2.x |
SCDF-K8S-Server 2.1.x | 2.3.x |
SCDF-K8S-Server 2.2.x | 2.4.x |
SCDF-K8S-Server 2.3.x | 2.5.x |
SCDF-K8S-Server 2.4.x | 2.6.x |
SCDF-K8S-Server 2.5.x | 2.7.x |
SCDF-K8S-Server 2.6.x | 2.8.x |
Bitnami 图表映射
SCDF 版本 | 图表版本 |
---|---|
SCDF-K8S-Server 2.6.x | 1.1.x |
SCDF-K8S-Server 2.7.x | 2.0.x |
注册预构建应用程序
所有预构建的流应用程序
- 都可作为 Apache Maven 工件或 Docker 镜像使用。
- 使用 RabbitMQ 或 Apache Kafka。
- 支持通过 Prometheus 和 InfluxDB 进行监控。
- 包含用于 UI 中的应用程序属性的元数据以及 shell 中的代码补全。
您可以使用 app register
功能单独注册应用程序,也可以使用 app import
功能批量注册应用程序。还有一些 dataflow.spring.io
链接,它们代表特定版本的预构建应用程序组,这对于入门很有用。
您可以使用 UI 或 shell 注册应用程序。即使我们只使用两个预构建的应用程序,我们也会注册全套的预构建应用程序。
在 Kubernetes 上安装 Data Flow 的最简单方法是使用 Helm 图表,该图表使用 RabbitMQ 作为默认的消息中间件。导入 RabbitMQ 版本应用程序的命令如下
dataflow:>app import --uri https://dataflow.springframework.org.cn/rabbitmq-docker-latest
如果您在 Helm 图表中设置了 kafka.enabled=true
,或者按照基于手动 kubectl
的安装说明在 Kubernetes 上安装 Data Flow 并选择使用 Kafka 作为消息中间件,请将上述 URL 中的 rabbitmq
更改为 kafka
。
Kubernetes 的 Data Flow 服务器仅支持使用指向 Docker 资源的 --uri
属性注册的应用程序。但是,我们支持 --metadata-uri
属性的 Maven 资源,该属性用于列出每个应用程序支持的属性。例如,以下应用程序注册是有效的
app register --type source --name time --uri docker://springcloudstream/time-source-rabbit:{docker-time-source-rabbit-version} --metadata-uri maven://org.springframework.cloud.stream.app:time-source-rabbit:jar:metadata:{docker-time-source-rabbit-version}
使用 Maven、HTTP 或文件资源或可执行 jar(通过使用以 maven://
、http://
或 file://
为前缀的 --uri
属性)注册的任何应用程序都**_不受支持_**。
应用程序和服务器属性
本节介绍如何自定义应用程序的部署。您可以使用许多属性来影响已部署应用程序的设置。属性可以按每个应用程序应用,也可以在所有已部署应用程序的相应服务器配置中应用。
按每个应用程序设置的属性始终优先于设置为服务器配置的属性。这种安排允许您按每个应用程序覆盖全局服务器级属性。
所有已部署任务的属性定义在 src/kubernetes/server/server-config.yaml
文件中,Streams 的属性定义在 src/kubernetes/skipper/skipper-config-(binder).yaml
文件中。将 (binder)
替换为您正在使用的消息中间件,例如 rabbit
或 kafka
。
内存和 CPU 设置
应用程序使用默认的内存和 CPU 设置进行部署。如果需要,可以调整这些值。以下示例显示如何将 Limits
设置为 CPU
的 1000m
和内存的 1024Mi
,并将 Requests
设置为 CPU
的 800m
和内存的 640Mi
deployer.<app>.kubernetes.limits.cpu=1000m
deployer.<app>.kubernetes.limits.memory=1024Mi
deployer.<app>.kubernetes.requests.cpu=800m
deployer.<app>.kubernetes.requests.memory=640Mi
这些值将导致使用以下容器设置
Limits:
cpu: 1
memory: 1Gi
Requests:
cpu: 800m
memory: 640Mi
您还可以控制全局设置 cpu
和 memory
的默认值。
以下示例显示如何设置 Streams 和 Tasks 的 CPU 和内存
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
limits:
memory: 640mi
cpu: 500m
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
limits:
memory: 640mi
cpu: 500m
到目前为止,我们使用的设置仅影响容器的设置。它们不会影响容器中 JVM 进程的内存设置。如果要设置 JVM 内存设置,可以提供一个环境变量来实现。有关详细信息,请参阅下一节。
环境变量
要影响给定应用程序的环境设置,可以使用 spring.cloud.deployer.kubernetes.environmentVariables
部署器属性。例如,生产环境中的一个常见需求是影响 JVM 内存参数。您可以使用 JAVA_TOOL_OPTIONS
环境变量来实现,如下所示
deployer.<app>.kubernetes.environmentVariables=JAVA_TOOL_OPTIONS=-Xmx1024m
environmentVariables
属性接受逗号分隔的字符串。如果环境变量包含的值也是逗号分隔的字符串,则必须将其括在单引号中,例如
spring.cloud.deployer.kubernetes.environmentVariables=spring.cloud.stream.kafka.binder.brokers='somehost:9092, anotherhost:9093'
这样做会覆盖所需 <app>
的 JVM 内存设置(将 <app>
替换为应用程序的名称)。
活跃性和就绪性探针
liveness
和 readiness
探针分别使用名为 /health
和 /info
的路径。它们都使用 10
的 delay
,以及分别使用 60
和 10
的 period
。您可以在部署流时使用部署器属性更改这些默认值。活跃性和就绪性探针仅适用于 Streams。
以下示例通过设置部署程序属性来更改 liveness
探针(将 <app>
替换为您的应用程序名称)
deployer.<app>.kubernetes.livenessProbePath=/health
deployer.<app>.kubernetes.livenessProbeDelay=120
deployer.<app>.kubernetes.livenessProbePeriod=20
您可以按如下方式将相同内容声明为流的服务器全局配置的一部分
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
livenessProbePath: /health
livenessProbeDelay: 120
livenessProbePeriod: 20
同样,您可以将 liveness
替换为 readiness
以覆盖默认的 readiness
设置。
默认情况下,端口 8080 用作探测端口。您可以通过设置部署程序属性来更改 liveness
和 readiness
探测端口的默认值,如下所示
deployer.<app>.kubernetes.readinessProbePort=7000
deployer.<app>.kubernetes.livenessProbePort=7000
您可以按如下方式将相同内容声明为流的全局配置的一部分
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
readinessProbePort: 7000
livenessProbePort: 7000
默认情况下,liveness
和 readiness
探测路径使用 Spring Boot 2.x+ 执行器端点。要使用 Spring Boot 1.x 执行器端点路径,您必须调整 liveness
和 readiness
值,如下所示(将 <app>
替换为您的应用程序名称)
deployer.<app>.kubernetes.livenessProbePath=/health
deployer.<app>.kubernetes.readinessProbePath=/info
要针对每个应用程序自动将 liveness
和 readiness
端点设置为默认的 Spring Boot 1.x 路径,您可以设置以下属性
deployer.<app>.kubernetes.bootMajorVersion=1
您可以使用存储在 Kubernetes 密钥 中的凭据来访问受保护的探测端点。您可以使用现有密钥,前提是凭据包含在密钥 data
块的 credentials
密钥名称下。您可以在每个应用程序的基础上配置探测身份验证。启用后,它将使用相同的凭据和身份验证类型应用于 liveness
和 readiness
探测端点。目前,仅支持 Basic
身份验证。
要创建新密钥,请执行以下操作
-
使用用于访问受保护探测端点的凭据生成 base64 字符串。
基本身份验证以
username:password
格式将用户名和密码编码为 base64 字符串。以下示例(包括输出,您应该将
user
和pass
替换为您的值)显示了如何生成 base64 字符串echo -n "user:pass" | base64 dXNlcjpwYXNz
-
使用编码后的凭据,创建一个文件(例如,
myprobesecret.yml
),其中包含以下内容apiVersion: v1 kind: Secret metadata: name: myprobesecret type: Opaque data: credentials: GENERATED_BASE64_STRING
- 将
GENERATED_BASE64_STRING
替换为之前生成的 base64 编码值。 -
使用
kubectl
创建密钥,如下所示kubectl create -f ./myprobesecret.yml secret "myprobesecret" created
-
设置以下部署程序属性以在访问探测端点时使用身份验证,如下所示
deployer.<app>.kubernetes.probeCredentialsSecret=myprobesecret
将
<app>
替换为要应用身份验证的应用程序的名称。
使用 SPRING_APPLICATION_JSON
您可以使用 SPRING_APPLICATION_JSON
环境变量来设置 Data Flow 服务器属性(包括 Maven 存储库设置的配置),这些属性在所有 Data Flow 服务器实现中都是通用的。这些设置位于部署 YAML 的容器 env
部分的服务器级别。以下示例显示了如何执行此操作
env:
- name: SPRING_APPLICATION_JSON
value: |-
{
"maven": {
"local-repository": null,
"remote-repositories": {
"repo1": {
"url": "https://repo.spring.io/libs-snapshot"
}
}
}
}
私有 Docker 镜像仓库
您可以针对每个应用程序从私有镜像仓库中提取 Docker 镜像。首先,您必须在集群中创建一个密钥。请按照 从私有镜像仓库中提取镜像 指南创建密钥。
创建密钥后,您可以使用 imagePullSecret
属性设置要使用的密钥,如下所示
deployer.<app>.kubernetes.imagePullSecret=mysecret
将 <app>
替换为您的应用程序名称,并将 mysecret
替换为您之前创建的密钥名称。
您还可以在全局服务器级别配置镜像拉取密钥。
以下示例展示了如何为流和任务执行此操作
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
imagePullSecret: mysecret
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
imagePullSecret: mysecret
将 mysecret
替换为您之前创建的密钥名称。
卷挂载密钥
Data Flow 使用存储在容器镜像标签中的应用程序元数据。要访问私有注册表中的元数据标签,您必须扩展 Data Flow 部署配置并将注册表密钥挂载为密钥属性源
spec:
containers:
- name: scdf-server
...
volumeMounts:
- name: mysecret
mountPath: /etc/secrets/mysecret
readOnly: true
...
volumes:
- name: mysecret
secret:
secretName: mysecret
注解
您可以为每个应用程序添加 Kubernetes 对象的注解。支持的对象类型为 pod Deployment
、Service
和 Job
。注解以 key:value
格式定义,允许多个注解之间用逗号分隔。有关注解的更多信息和用例,请参阅注解。
以下示例展示了如何配置应用程序以使用注解
deployer.<app>.kubernetes.podAnnotations=annotationName:annotationValue
deployer.<app>.kubernetes.serviceAnnotations=annotationName:annotationValue,annotationName2:annotationValue2
deployer.<app>.kubernetes.jobAnnotations=annotationName:annotationValue
将 <app>
替换为您的应用程序名称和注解的值。
入口点样式
入口点样式会影响应用程序属性传递到要部署的容器的方式。当前支持三种样式
exec
(默认):在部署请求中将所有应用程序属性和命令行参数作为容器参数传递。应用程序属性将转换为--key=value
的格式。shell
:将所有应用程序属性和命令行参数作为环境变量传递。每个应用程序和命令行参数属性都将转换为大写字符串,并将.
字符替换为_
。boot
:创建一个名为SPRING_APPLICATION_JSON
的环境变量,其中包含所有应用程序属性的 JSON 表示形式。部署请求中的命令行参数将设置为容器参数。
在容器上使用 docker shell
入口点时,请注意其对应用程序 SIGTERM 的影响,如 Docker 文档 中的摘录所述。
在所有情况下,在服务器级别配置和每个应用程序基础上定义的环境变量都将按原样设置到容器上。
您可以按如下方式配置应用程序
deployer.<app>.kubernetes.entryPointStyle=<Entry Point Style>
将 <app>
替换为您的应用程序名称,并将 <Entry Point Style>
替换为您所需的入口点样式。
您还可以在全局服务器级别配置入口点样式。
以下示例显示了如何对流执行此操作
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
entryPointStyle: entryPointStyle
以下示例显示了如何对任务执行此操作
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
entryPointStyle: entryPointStyle
将 entryPointStyle
替换为所需的入口点样式。
您应该选择 exec
或 shell
作为入口点样式,以对应于容器 Dockerfile
中 ENTRYPOINT
语法的定义方式。有关 exec
与 shell
的更多信息和用例,请参阅 Docker 文档的 ENTRYPOINT 部分。
使用 boot
入口点样式对应于使用 exec
样式的 ENTRYPOINT
。部署请求中的命令行参数将传递到容器,并将应用程序属性映射到 SPRING_APPLICATION_JSON
环境变量而不是命令行参数。
建议您在启动 Spring Batch/Boot 应用程序时使用 exec
入口点样式,或在应用程序中实现您自己的设置作业参数的方法。这是因为 shell
入口点样式会将命令行参数转换为环境变量,这会阻止 Spring Boot 从命令行参数创建作业参数。这可以 在此处 看到。
当您使用 boot
入口点样式时,deployer.<app>.kubernetes.environmentVariables
属性不得包含 SPRING_APPLICATION_JSON
。
部署服务帐户
您可以通过属性为应用程序部署配置自定义服务帐户。您可以使用现有服务帐户或创建新服务帐户。创建服务帐户的一种方法是使用 kubectl
,如下所示
kubectl create serviceaccount myserviceaccountname
serviceaccount "myserviceaccountname" created
然后,您可以配置单个应用程序,如下所示
deployer.<app>.kubernetes.deploymentServiceAccountName=myserviceaccountname
将 <app>
替换为您的应用程序名称,并将 myserviceaccountname
替换为您的服务帐户名称。
您还可以在全局服务器级别配置服务帐户名称。
以下示例显示了如何对流执行此操作
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
deploymentServiceAccountName: myserviceaccountname
以下示例显示了如何对任务执行此操作
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
deploymentServiceAccountName: myserviceaccountname
将 myserviceaccountname
替换为要应用于所有部署的服务帐户名称。
镜像拉取策略
镜像拉取策略定义了何时应将 Docker 镜像拉取到本地注册表。目前,支持三种策略
IfNotPresent
(默认):如果镜像已存在,则不拉取。Always
:始终拉取镜像,无论它是否已存在。Never
:从不拉取镜像。仅使用已存在的镜像。
以下示例显示了如何单独配置应用程序
deployer.<app>.kubernetes.imagePullPolicy=Always
将 <app>
替换为您的应用程序名称,并将 Always
替换为您所需的镜像拉取策略。
您可以在全局服务器级别配置镜像拉取策略。
以下示例显示了如何对流执行此操作
data:
application.yaml: |-
spring:
cloud:
skipper:
server:
platform:
kubernetes:
accounts:
default:
imagePullPolicy: Always
以下示例显示了如何对任务执行此操作
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
imagePullPolicy: Always
将 Always
替换为您所需的镜像拉取策略。
部署标签
您可以在与 Deployment 相关的对象上设置自定义标签。有关标签的更多信息,请参阅 标签。标签以 键:值
格式指定。
以下示例显示了如何单独配置应用程序
deployer.<app>.kubernetes.deploymentLabels=myLabelName:myLabelValue
将 <app>
替换为您的应用程序名称,将 myLabelName
替换为您的标签名称,并将 myLabelValue
替换为您的标签值。
此外,您还可以应用多个标签,如下所示
deployer.<app>.kubernetes.deploymentLabels=myLabelName:myLabelValue,myLabelName2:myLabelValue2
NodePort
应用程序使用 Service
类型 ClusterIP 进行部署,这是默认的 Kubernetes Service
类型(除非另有定义)。ClusterIP
服务只能从集群内部访问。
要将已部署的应用程序公开到外部,一种选择是使用 NodePort
。有关更多信息,请参阅 NodePort 文档。
以下示例展示了如何使用 Kubernetes 分配的端口单独配置应用程序
deployer.<app>.kubernetes.createNodePort=true
将 <app>
替换为您的应用程序名称。
此外,您可以定义用于 NodePort
Service
的端口,如下所示
deployer.<app>.kubernetes.createNodePort=31101
将 <app>
替换为您的应用程序名称,并将 31101
的值替换为您想要的端口。
手动定义端口时,该端口必须尚未被使用,并且必须在定义的 NodePort
范围内。根据 NodePort,默认端口范围为 30000-32767。