Skip to content
Advertisement

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

I have a Spring batch application with few jobs and it is being executed as highlighted below

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 

I have defined my docker file like mentioned below

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

I want to deploy/run this dockerized application on Azure Kubernetes.

I have defined my POD.YAML as mentioned below

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

How do I deploy the POD with the required cmd args – like “-jar /appl/myapp/my-bat-spr-jobs-.jar  updtTablJob” or “-cp /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-.jar com.demo.jobs.mappingApp  jsonToQueue”?

should I just run the image without defining the POD definition? something like below?

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"

My intention is to spin up the container, execute the job based on the runtime arg & destroy the container.

Answer

You can pass in the running parameters through the command parameter or the args parameter (even env)

As follows:

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. if use command

values.yaml

command:
  - java
  - -jar
  - /appl/myapp/my-bat-spr-jobs-*.jar
  - updtTablJob 
  1. if use args

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. if use env

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 "
Advertisement