如何在 creating/running pods 时在 kubectl 中传递运行时参数?

How to pass the runtime arguments in kubectl while creating/running the pods?

我有一个 Spring 批处理应用程序,作业很少,它正在执行,如下突出显示

java -jar /appl/myapp/my-bat-spr-jobs-*.jar  updtTablJob 
 
java -cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp  jsonToQueue 

我已经定义了我的 docker 文件,如下所述

FROM openjdk:8-jre-alpine
ENV my-bat-spr-jobs.jar
WORKDIR /root/apps
COPY . /appl/myapp
ENTRYPOINT ["java "]

我想在 Azure Kubernetes 上deploy/run这个docker化的应用程序。

我已经定义了我的 POD.YAML 如下所述

apiVersion: v1
kind: Pod
metadata:
 name: my_app
 labels:
  app: my_app
spec:
 containers:
  - name: my_app
    image: docker:5000/path_to_my_custom_image

如何使用所需的 cmd args 部署 POD - 例如“-jar /appl/myapp/my-bat-spr-jobs-.jar updtTablJob”或“-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-.jar com.demo.jobs.mappingAppjsonToQueue"?

我应该只 运行 图像而不定义 POD 定义吗?像下面这样的东西?

kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-jar /appl/myapp/my-bat-spr-jobs-*.jar  updtTablJob"

kubectl run -ti --rm test --image=path_to_my_custom_image --namespace default -- sh -c "-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp  jsonToQueue"

我的目的是启动容器,根据 运行time arg 执行作业并销毁容器。

可以通过command参数或者args参数(甚至env)传入运行参数

如下:

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: "test"
spec:
  template:
    spec:
      containers:
        - name: "test"
          image: "test:v1.0"
          {{- if .Values.command }}
          command:
            {{ toYaml .Values.command | nindent 12 }}
          {{- end }}
          {{- if .Values.args }}
          args:
            {{ toYaml .Values.args | nindent 12 }}
          {{- end }}
          {{- if .Values.env }}
          env:
            {{ toYaml .Values.env | nindent 12 }}
          {{- end }}
  1. 如果使用命令

values.yaml

command:
  - java
  - -jar
  - /appl/myapp/my-bat-spr-jobs-*.jar
  - updtTablJob 
  1. 如果使用参数

values.yaml

args:
  - -cp
  - /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp
  - jsonToQueue 
  1. 如果使用环境

values.yaml

args:
  - $env0
  - $env1
  - $env2

env:
  - name: "env0"
    value: "-cp"
  - name: "env1"
    value: "/opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp"
  - name: "env2"
    value: "jsonToQueue "