java - 创建/运行 Pod 时如何在 kubectl 中传递运行时参数?
问题描述
我有一个很少有作业的 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 上部署/运行这个 dockerized 应用程序。
我已经定义了我的 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.mappingApp jsonToQueue"?
我应该只运行图像而不定义 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"
我的意图是启动容器,根据运行时参数执行作业并销毁容器。
解决方案
可以通过command参数或者args参数(甚至env)传入运行参数
如下:
部署.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 }}
- 如果使用命令
值.yaml
command:
- java
- -jar
- /appl/myapp/my-bat-spr-jobs-*.jar
- updtTablJob
- 如果使用参数
值.yaml
args:
- -cp
- /opt/mqm/java/lib/com.ibm.mq.allclient.jar:/appl/myapp/my-bat-spr-jobs-*.jar com.demo.jobs.mappingApp
- jsonToQueue
- 如果使用环境
值.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 "
推荐阅读
- c# - 将 c++ 非托管代码编组为 c# 托管代码的替代方法
- r - R将函数向量应用于数据框
- c# - 在指向另一个页面的表单上创建自定义动态链接
- django - 服务器是否在主机“localhost”上运行 Django 和 PostgreSQL 连接?
- reactjs - 我应该在反应选择器中检查数组是否为空
- docker - 循环与 Falco 崩溃
- java - 如何使用 selenium-java 点击 href 链接
- java - 我无法在 json 中获取对象的数据
- c# - 在不打开新窗口的情况下导航到另一个 wpf
- css - Angular:如何在 ng-template 中显示模态对话框(图表)