application

application

通用Helm图表优化Kubernetes应用部署

这是一个通用Helm图表,专为部署无状态、仅创建命名空间范围资源的Kubernetes应用设计。支持部署和CronJob运行模式,无需特权容器或自定义资源。图表提供全面配置选项,涵盖部署策略、资源管理、健康检查、存储、服务暴露和入口设置等,简化应用部署流程,提高管理效率。

HelmKubernetes应用部署容器化DevOpsGithub开源项目

许可证: MIT

应用程序

用于以下类型应用程序的通用 Helm Chart:

  • 无状态
  • 仅创建命名空间范围的资源(例如,不需要 CRB - 集群角色绑定)
  • 不需要特权容器
  • 不调用底层 Kubernetes API 或不使用底层 etcd 作为数据库来定义自定义资源
  • 作为部署或 CronJob 运行

安装 Chart

要在 test 命名空间中以 my-application 为发布名称安装 chart:

helm repo add stakater https://stakater.github.io/stakater-charts
helm repo update
helm install my-application stakater/application --namespace test

卸载 Chart

要卸载 chart:

helm delete <chart-名称>

参数

名称描述
applicationName应用程序名称application
namespaceOverride用自定义值覆盖默认发布命名空间application
labels.group定义应用程序组的标签com.stakater.platform
labels.team定义团队的标签stakater

部署参数

名称描述
deployment.enabled在 Helm Chart 部署中启用部署true
deployment.strategy更新部署的策略RollingUpdate
deployment.reloadOnChange如果更新了挂载的 ConfigMap/Secret,则重新加载部署true
deployment.nodeSelector选择要部署此应用程序的节点{}
deployment.hostAliases向 Pod 的 /etc/hosts 文件添加条目,在 DNS 和其他选项不适用时提供 Pod 级别的主机名解析覆盖[]
deployment.additionalLabels部署的附加标签{}
deployment.podLabels添加到 Pod 上的附加标签,用于服务的标签选择器{}
deployment.annotations部署上的注释{}
deployment.additionalPodAnnotations此部署创建的 Pod 上添加的附加 Pod 注释{}
deployment.replicas要创建的副本数``
deployment.imagePullSecrets用于拉取镜像的 Secret""
deployment.env传递给应用容器的环境变量{}
deployment.volumes要添加到 Pod 的卷{}
deployment.volumeMounts卷的挂载路径{}
deployment.revisionHistoryLimit保留允许回滚的旧历史记录数量2
deployment.command部署主容器的命令[]
deployment.args部署主容器的参数[]
deployment.priorityClassName定义 Pod 调度的优先级类""
deployment.tolerations节点的污点容忍[]
deployment.affinityPod/节点的亲和性[]
deployment.topologySpreadConstraints拓扑分布约束定义[]
deployment.ports主容器的端口[]
deployment.securityContextPod 的安全上下文{}
deployment.additionalContainers除初始化容器和应用容器外添加额外的容器[]
deployment.containerSecurityContext在容器级别添加安全上下文{}
deployment.terminationGracePeriodSeconds优雅终止超时时间``
deployment.lifecycle容器生命周期管理,用于优雅启动和关闭程序{}

部署资源参数

名称描述
deployment.resources应用程序 Pod 的资源请求和限制见下文
请求和限制
  resources:
    limits:
      memory: 256Mi
      cpu: 0.5
    requests:
      memory: 128Mi
      cpu: 0.1

部署初始化容器参数

名称描述
deployment.initContainers在应用容器之前运行的初始化容器{}

部署 fluentd 参数

名称描述
deployment.fluentdConfigAnnotationsfluentd 配置的注释{}

部署镜像参数

名称描述
deployment.image.repository应用程序镜像的仓库repository/image-name
deployment.image.tag应用程序镜像的标签null
deployment.image.digest应用程序镜像的摘要``
deployment.image.pullPolicy应用程序镜像的拉取策略IfNotPresent

部署 envFrom 参数

名称描述
deployment.envFrom从 ConfigMap 或 Secret 中获取的环境变量{}
deployment.envFrom.type数据类型,即 Configmap 或 Secret``
deployment.envFrom.nameConfigmap 或 Secret 的名称,如果设置为空,则设置为应用程序名称``
deployment.envFrom.nameSuffixConfigmap 或 Secret 的后缀名称,applicationName 作为前缀附加``

部署探针参数

启动探针

启动探针表明 Pod 已成功初始化。如果指定,则在此探针成功完成之前不会执行其他探针。

名称描述
deployment.startupProbe.enabled启用启动探针false
deployment.startupProbe.failureThreshold当探针失败时,Kubernetes 在放弃之前会尝试 failureThreshold 次30
deployment.startupProbe.periodSeconds每隔 periodSeconds 秒执行一次探针10
deployment.startupProbe.successThreshold探针在失败后被视为成功所需的最小连续成功次数。
deployment.startupProbe.timeoutSeconds探针超时的秒数。
deployment.startupProbe.httpGet基于 HTTP Get 请求的操作描述path: '/path' port: 8080
deployment.startupProbe.execKubelet 执行指定命令来执行探针{}
就绪探针

容器服务就绪状态的周期性探测。如果探测失败,容器将从服务端点中移除。

名称描述
deployment.readinessProbe.enabled启用就绪探针true
deployment.readinessProbe.failureThreshold当探针失败时,Kubernetes 在放弃之前会尝试 failureThreshold 次3
deployment.readinessProbe.periodSeconds每隔 periodSeconds 秒执行一次探针10
deployment.readinessProbe.successThreshold探针在失败后被视为成功所需的最小连续成功次数。1
deployment.readinessProbe.timeoutSeconds探针超时的秒数。1
deployment.readinessProbe.initialDelaySeconds容器启动后延迟多少秒才进行存活或就绪探测10
deployment.readinessProbe.httpGet基于 HTTP Get 请求的操作描述path: '/path' port: 8080
deployment.readinessProbe.execKubelet 执行指定命令来执行探针{}
存活探针

容器存活状态的周期性探测。如果探测失败,容器将被重启。

名称描述
deployment.livenessProbe.enabled启用存活探针true
deployment.livenessProbe.failureThreshold当探针失败时,Kubernetes 在放弃之前会尝试 failureThreshold 次3
deployment.livenessProbe.periodSeconds每隔 periodSeconds 秒执行一次探针10
deployment.livenessProbe.successThreshold探针在失败后被视为成功所需的最小连续成功次数。1
deployment.livenessProbe.timeoutSeconds探针超时的秒数。1
deployment.livenessProbe.initialDelaySeconds容器启动后延迟多少秒才进行存活或就绪探测10
deployment.livenessProbe.httpGet基于 HTTP Get 请求的操作描述path: '/path' port: 8080
deployment.livenessProbe.execKubelet 执行指定命令来执行探针{}

部署 OpenshiftOAuthProxy 参数

名称描述
deployment.openshiftOAuthProxy.enabled添加 Openshift OAuth 代理作为边车容器false
deployment.openshiftOAuthProxy.port应用端口,代理应该转发到此端口8080
deployment.openshiftOAuthProxy.secretName包含 TLS 证书的 Secret 名称openshift-oauth-proxy-tls
deployment.openshiftOAuthProxy.imageoauth 边车容器的镜像openshift/oauth-proxy:latest
deployment.openshiftOAuthProxy.disableTLSArg如果禁用,将使用 --http-address=:8081 而不是 --https-address=:8443false

部署 DNS 参数

名称描述
deployment.dnsConfig启用 Pod 干扰预算{}

PodDisruptionBudget 参数

名称描述
pdb.enabled启用 Pod 干扰预算false
pdb.minAvailable驱逐后必须可用的 Pod 数量。如果同时设置了 minAvailable 和 maxUnavailable,则优先选择 minAvailable1
pdb.maxUnavailable驱逐后可以不可用的 Pod 数量。需要提供 minAvailable 或 maxUnavailable 之一``

持久化参数

名称描述
persistence.enabled启用持久化false
persistence.mountPVC是否将创建的 PVC 挂载到部署中false
persistence.mountPath如果设置了 persistence.mountPVC,则在部署中挂载卷的位置/
persistence.namePVC 的名称。``
persistence.accessMode卷的访问模式ReadWriteOnce
persistence.storageClass卷的存储类-
名称描述
---------------------------------------------------------------------------------------------------------------------------------------
secret.enabled启用 secretfalse
secret.additionalLabelssecret 的标签{}
secret.annotationssecret 的注释{}
secret.files带后缀的 secret 文件映射及其包含的数据{}
secret.files.[name].stringData允许在 secret 中提供明文内容{}
secret.files.[name].data允许在 secret 中提供将被 base64 编码的文本内容{}
secret.files.[name].encodedData允许在 secret 中提供已经 base64 编码的文本内容{}

ServiceMonitor 参数

名称描述
serviceMonitor.enabled启用 serviceMonitorfalse
serviceMonitor.additionalLabelsserviceMonitor 的标签{}
serviceMonitor.annotationsserviceMonitor 的注释{}
serviceMonitor.jobLabel用于应用选择器的作业标签k8s-app
serviceMonitor.endpointsPrometheus 抓取的端点数组- interval: 5s<br>  path: /actuator/prometheus<br>  port: http

自动伸缩参数

名称描述
autoscaling.enabled启用水平 Pod 自动伸缩false
autoscaling.additionalLabels水平 Pod 自动伸缩的标签{}
autoscaling.annotations水平 Pod 自动伸缩的注释{}
autoscaling.minReplicas启用自动伸缩时设置最小副本数1
autoscaling.maxReplicas启用自动伸缩时设置最大副本数10
autoscaling.metrics启用自动伸缩时的 HPA 指标配置{}

VPA - 垂直 Pod 自动伸缩参数

名称描述
vpa.enabled启用垂直 Pod 自动伸缩false
vpa.additionalLabels垂直 Pod 自动伸缩的标签{}
vpa.annotations垂直 Pod 自动伸缩的注释{}
vpa.containerPolicies单个容器的容器策略[]

EndpointMonitor 参数

Stakater IngressMonitorController EndpointMonitor 参数

名称描述
endpointMonitor.enabled为 IMC 启用 endpointMonitor (https://github.com/stakater/IngressMonitorController)false
endpointMonitor.additionalLabelsendpointMonitor 的标签{}
endpointMonitor.annotationsendpointMonitor 的注释{}
endpointMonitor.additionalConfigendpointMonitor 的额外配置{}

SealedSecret 参数

名称描述
sealedSecret.enabled启用 sealed secretfalse
sealedSecret.additionalLabelssealed secret 的标签{}
sealedSecret.annotations适用于在 files 下创建的所有 sealed secrets 的注释{}
sealedSecret.files包含名称和加密数据的 secret 文件映射{}
sealedSecret.files.[name].annotations适用于通过 sealed secret 创建的 secret 的注释{}
sealedSecret.files.[name].labels适用于通过 sealed secret 创建的 secret 的标签{}
sealedSecret.files.[name].type通过 sealed secret 创建的 secret 类型Opaque
sealedSecret.files.[name].clusterWide设置为 true 时,为通过 sealed secret 创建的 secret 添加注释 sealedsecrets.bitnami.com/cluster-wide: true,将 secret 范围设置为集群范围。false

Cert-manager 证书参数

名称描述
certificate.enabled启用证书自定义资源false
certificate.enabled启用证书自定义资源false
certificate.additionalLabels证书自定义资源的附加标签{}
certificate.annotations证书自定义资源的注释{}
certificate.secretName此证书资源将自动创建和管理的 secret 资源名称tls-cert
certificate.duration证书请求的"持续时间"(即生命周期)8760h0m0s
certificate.renewBeforecert-manager 开始尝试续签证书的时间,即当前颁发证书的 notAfter 时间之前的时间量720h0m0s
certificate.subject证书的完整 X509 名称规范{}
certificate.commonNameDER 编码 CSR 中指定的通用名称admin-app
certificate.keyAlgorithm此证书对应私钥的私钥算法rsa
certificate.keyEncoding此证书私钥的私钥加密标准(PKCS)编码pkcs1
certificate.keySize此证书对应私钥的密钥位大小2048
certificate.isCA将此证书标记为有效的证书签名false
certificate.usages证书请求的 x509 用途集{}
certificate.dnsNames要在证书上设置的 DNS 主题备用名称列表{}
certificate.ipAddresses要在证书上设置的 IP 地址主题备用名称列表{}
certificate.uriSANs要在证书上设置的 URI 主题备用名称列表{}
certificate.emailSANs要在证书上设置的电子邮件主题备用名称列表{}
certificate.privateKey.enabled为证书启用私钥false
certificate.privateKey.rotationPolicy表示在颁发证书时应如何生成或获取私钥Always
certificate.issuerRef.name此证书的颁发者引用。被引用资源的名称ca-issuer
certificate.issuerRef.kind被引用资源的类型ClusterIssuer
certificate.keystores.enabled启用密钥库配置。密钥库配置存储在 secretName Secret 资源中的其他密钥库输出格式false
certificate.keystores.pkcs12.create为证书启用 PKCS12 密钥库创建。PKCS12 配置在 spec.secretName Secret 资源中存储 PKCS12 密钥库的选项true
certificate.keystores.pkcs12.key要使用的 Secret 资源数据字段中的条目键test_key
certificate.keystores.pkcs12.name被引用的 Secret 资源的名称test-creds
certificate.keystores.jks.create为证书启用 jks 密钥库创建。JKS 配置在 spec.secretName Secret 资源中存储 JKS 密钥库的选项false
certificate.keystores.jks.key要使用的 Secret 资源数据字段中的条目键test_key
certificate.keystores.jks.name被引用的 Secret 资源的名称test-creds

Alertmanager 配置参数

名称描述
alertmanagerConfig.enabled为此应用启用 alertmanagerConfig(将合并到基本配置中)false
alertmanagerConfig.selectionLabels用于在 alertmanager 基本配置中选择此配置进行合并的标签alertmanagerConfig: "workload"
alertmanagerConfig.spec.route与资源命名空间匹配的警报的 Alertmanager 路由定义。它将作为一级路由添加到生成的 Alertmanager 配置中{}
alertmanagerConfig.spec.receivers接收器列表[]
alertmanagerConfig.spec.inhibitRulesInhibitRule 定义了一个抑制规则,允许在其他警报已经触发时静音警报[]

PrometheusRule 参数

名称描述
prometheusRule.enabled为此应用启用 prometheusRulefalse
prometheusRule.additionalLabelsKubernetes 标签对象,这些附加标签将添加到 PrometheusRule CRD{}
prometheusRule.spec.groups要添加的 PrometheusRules 及其组[]

SecretProviderClass 参数

名称描述
secretProviderClass.enabled启用 Secret Provider Class 自定义资源false
secretProviderClass.nameSecret Provider Class
job.jobs 中每个 job 对象的作业参数
名称描述
<name>.image.repository作业容器镜像的仓库
<name>.image.tag作业容器镜像的标签
<name>.image.digest作业容器镜像的摘要
<name>.image.imagePullPolicy作业容器镜像的拉取策略
<name>.command作业容器的命令
<name>.args作业容器的参数
<name>.resources作业容器的资源
<name>.additionalLabels作业的额外标签
<name>.annotations作业的注解
<name>.volumeMounts作业的卷挂载
<name>.volumes作业的卷
<name>.nodeSelector作业的节点选择器
<name>.affinity作业的亲和性
<name>.tolerations作业的容忍度
<name>.restartPolicy作业的重启策略
<name>.imagePullSecrets作业的镜像拉取密钥
<name>.activeDeadlineSeconds作业的活动截止时间(秒)
<name>.backoffLimit作业的退避限制
<name>.additionalPodAnnotations作业 Pod 的额外注解
<name>.additionalPodLabels作业 Pod 的额外标签
<name>.topologySpreadConstraints作业 Pod 的拓扑分布约束
<name>.securityContext作业 Pod 的安全上下文

ConfigMap、Secret、SealedSecret 和 ExternalSecret 的命名约定

ConfigMap、Secret、SealedSecret 和 ExternalSecret 的名称格式为 {{ template "application.name" $ }}-{{ $nameSuffix }},其中:

  • {{ template "application.name" }} 是一个辅助函数,如果存在则输出 .Values.applicationName,否则返回图表名称作为输出
  • nameSuffixsecret.filesconfigMap.filessealedSecret.filesexternalSecret.files 中的每个键

例如,如果我们有以下值文件:

applicationName: helloworld # {{ template "application.name" $ }}

configMap:
  files:
    config: # {{ $nameSuffix }}
      key: value

那么 configmap 的名称将是 helloworld-config

在应用程序图表中使用环境变量

为了在部署或 cronjob 中使用环境变量,你需要在 env 值中以键/值对的形式提供环境变量,其中键是环境变量的键,值在不同情况下有所不同

  • 对于简单的键/值环境变量,只需提供 value: <value>

     env:
        KEY:
          value: MY_VALUE
    
  • ConfigMap 获取环境变量值

    假设我们从应用程序图表创建了 configmap

    applicationName: my-application
    configMap:
      enabled: true
      files:
        application-config:
          LOG: DEBUG
          VERBOSE: v1
    

    要从上面创建的 configmap 获取环境变量值,我们需要添加以下内容

    env:
     APP_LOG_LEVEL:
      valueFrom:
        configMapKeyRef:
          name: my-application-appication-config
          key: LOG
    

    要从 ConfigMap 获取所有环境变量键/值,其中 configmap 键作为环境变量的键,值作为值

      envFrom:
       application-config-env:
         type: configmap
         nameSuffix: application-config
    

    你可以提供 nameSuffix,这意味着在前缀 <applicationName>- 之后添加的名称,或者使用 name 提供 configmap 的静态名称。

  • Secret 获取环境变量值

    假设我们从应用程序图表创建了 secret

     applicationName: my-application
     secret:
       enabled: true
       files:
          db-credentials:
            PASSWORD: skljd#2Qer!!
            USER: postgres
    

    要从上面创建的 secret 获取环境变量值,我们需要添加以下内容

      env:
         KEY:
          valueFrom:
           secretKeyRef:
             name: my-application-db-credentials
             key: USER
    

    要从 Secret 获取环境变量值,其中 secret 键作为环境变量的键,值作为值

    envFrom:
      database-credentials:
         type: secret
         nameSuffix: db-credentials
    

    你可以提供 nameSuffix,这意味着在前缀 <applicationName>- 之后添加的名称,或者使用 name 提供 secret 的静态名称

    注意: envFrom 后的第一个键仅用于唯一标识 envFrom 块中的不同对象。确保保持其唯一性和相关性

配置探针

要禁用存活或就绪探针,将 enabled 的值设置为 false

  livenessProbe:
    enabled: false

默认情况下,探针处理程序类型是 httpGet。你只需要根据需要覆盖 portpath

  livenessProbe:
    enabled: true
    httpGet:
      path: '/path'
      port: 8080

要使用 exec 处理程序,你可以在 values.yaml 中定义 livenessProbe.exec 字段。

  livenessProbe:
    enabled: true
    exec:
      command:
        - cat
        - /tmp/healthy

编辑推荐精选

讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

TRELLIS

TRELLIS

用于可扩展和多功能 3D 生成的结构化 3D 潜在表示

TRELLIS 是一个专注于 3D 生成的项目,它利用结构化 3D 潜在表示技术,实现了可扩展且多功能的 3D 生成。项目提供了多种 3D 生成的方法和工具,包括文本到 3D、图像到 3D 等,并且支持多种输出格式,如 3D 高斯、辐射场和网格等。通过 TRELLIS,用户可以根据文本描述或图像输入快速生成高质量的 3D 资产,适用于游戏开发、动画制作、虚拟现实等多个领域。

下拉加载更多