如何使用 Helm Chart 部署 Spring Batch 应用程序

问题描述 投票:0回答:1

我正在尝试使用 helm 在 k8s 中部署我的 spring-batch 应用程序。

我的应用程序在资源文件夹中有许多 application.yaml 文件,如下所示:

job:
  name: my-job
  isActive: true
  ..... other stuff

现在我创建了一个具有以下骨架的图表模板:

 batch
   templates
      configmap.yaml
      job.yaml
      pvc.yaml
      secret.yaml
      serviceaccount.yaml
   Chart.yaml
   values.yaml
 values
   test
     values.yaml

我的configmap.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "helm-job.fullname" . }}-config
  labels: {{ include "helm-job.labels" . | indent 4 }}
data:
  application.yaml: {{ toYaml .Values.application | indent 2 | trim }}

我的价值观.yaml:

application: |-
  job:
    name: test

我正在使用以下命令安装此图表:

helm升级--安装批处理--命名空间测试--值 ./values/test/values.yaml /values.yaml ./batch

安装命令后,当我尝试使用以下命令查看我的 pod 的环境变量时:

kubectl exec -it mypod -n 测试——环境

我明白了:

job.name 不像 env 变量那样转换,对此有同样的建议吗? 我哪里做错了?

更新

添加

spec:
  containers:
  env: |+
  {{ .Files.Get "values/application.yaml" | indent 4 }} 

在我的 job.yaml 中,我收到此错误:

错误:无法从发布清单构建 kubernetes 对象:验证“”时出错:验证数据时出错:ValidationError(Job.spec.template.spec.containers[0].env):io.k8s.api.core 的类型无效。 v1.Container.env:得到“字符串”,期望“数组”

spring-boot kubernetes spring-batch kubernetes-helm
1个回答
0
投票

您得到的与您的 Helm 定义一致。

如果要在 pod 内使用环境变量,则应将

env
定义添加到声明 pod 的文件中;在你的情况下,它应该是
job.yaml
文件。因此,添加这些行:

spec:
  containers:
  env:
    - name: {{ .Values.application.name }}
      value: {{ .Values.application.value }}

values.yaml
文件中声明:

application:
  name: JOB_NAME
  value: test

或者,您可以使用外部文件

application.yaml
以及名称和值列表:

- name1: JOB1
  value: value1
- name: JOB2
  value: value2

并将它们加载到

job.yaml
文件中:

spec:
  containers:
  env: |+
{{ .Files.Get "values/application.yaml" | indent 4 }} 
© www.soinside.com 2019 - 2024. All rights reserved.