4

目前,我们正在构建带有入口点的 Docker 镜像,并将该镜像传递给 Kubernetes 部署。

有什么方法可以将入口点直接动态传递给 Kubernetes,以便它启动 Spring Boot 应用程序?

在 Kubernetes 中直接传递这个入口点有哪些不同的方法?

### Runtime image ###
FROM openjdk:8-jre-alpine

#Set working dir
WORKDIR /test

# Copy the executable JAR
COPY /*.jar /test/

# Run the app
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Djsversion=1.0 -D<variable>=<service-1> -D<variable>=<service-2>   -jar  *.jar
4

4 回答 4

3

您可以command在 k8s 部署清单中使用:

containers:
- name: mycontainer
  env:
  - name: NAME
    value: VALUE
  command: [ "java"]
  args: ["-jar", "-D..."]
于 2019-12-13T16:56:00.940 回答
1

如果您使用的是 JAVA 版本 9+,请注意 env 变量的名称已JAVA_OPTS更改。

此线程中的更多内容https://stackoverflow.com/a/52989562/8918153

于 2021-08-05T14:25:38.390 回答
1

您还可以将它与您希望传递到 docker 容器的其余环境变量一起包含在您的 kubernetes 部署 yaml 文件中:

- name: JAVA_OPTS
  value: >-
        -Djava.security.egd=file:/dev/./urandom 
        -Djsversion=1.0 -D<variable>=<service-1> -D<variable>=<service-2>
- name: SERVER_PORT
  value: 8080
于 2020-05-09T10:09:39.077 回答
0

您可以在 pod 的配置中将它们设置为环境变量

env:
      - name: MY_POD_IP
        valueFrom:
          fieldRef:
            fieldPath: status.podIP
      - name: profile
        value: "dev"

然后像这样在Dockerfile中使用它们

CMD ["sh", "-c", "java -jar -Dspring.profiles.active=$profile rest.war"]
于 2019-12-13T16:52:48.777 回答