概述
前面,在 Docker Swarm集群
我们尝试过设置环境变量给Java
传递参数
这次尝试下在 Kubernetes
集群下进行这个操作
镜像
镜像和上次的一样,代码如下
@SpringBootApplication
public class DemoApplication {
private static final Logger LOGGER = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
Map<String, String> m = System.getenv();
m.forEach( (k, v) -> {
LOGGER.info("key {}, value {}", k, v);
});
LOGGER.info("--------------------------------------" );
Properties p = System.getProperties();
p.keySet().forEach( k -> {
String v = (String) p.get(k);
LOGGER.info("key {}, value {}", k, v);
});
SpringApplication.run(DemoApplication.class, args);
}
}
yaml
配置
##################################################################################################
# 测试 yaml 配置环境变量
##################################################################################################
apiVersion: v1
kind: Service # 定义一个服务
metadata:
name: test-env-dev-service
labels:
app: test-env-dev
spec:
ports:
- port: 8080 # port是service对外暴露的端口,targetPort是容器暴露的端口,如果不写 targetPort, 那么就默认和port 一样,这个是必填的,不写报错,所以随便写一个
name: http
selector:
app: test-env-dev # 这个service 把所有的 labels 为“app: test-env-dev” 的pod选中,抽象为一个service,统一对外提供服务
---
apiVersion: extensions/v1beta1
kind: Deployment # 定义部署,多个 Deployment 可以组成一个 service
metadata:
name: test-env-dev-v1
spec:
replicas: 1 #副本数量
template:
metadata:
labels:
app: test-env-dev #定义一个标签,可以被service 使用
version: v1
spec:
imagePullSecrets:
- name: geek-secret #pull 私有镜像的时候,使用的密钥文件
containers:
- name: test-env-dev
image: registry.cn-shenzhen.aliyuncs.com/cuishiwen/b-async-task-dev:latest
imagePullPolicy: Always # Always:不管镜像是否存在都会进行一次拉取,适合我们标记为 latest的私有镜像
env:
- name: container_type
value: async-task
---
注意最后三行
env:
- name: container_type
value: async-task
最后日志输出为
image.png
网友评论