我正在尝试在kubernetes集群上运行带有nginx的docker容器。我正在为所有其他容器使用环境变量服务发现,所以我想保持它的一致性,而不是因为这个而不必将skydns之类的东西带到混合中。是否可以访问nginx中的环境变量,以便我可以告诉它代理传递给kubernetes服务?
答案 0 :(得分:1)
这下面的shell脚本是由Docker容器运行的吗?
答案 1 :(得分:0)
你的意思是在nginx的配置文件中以这种方式使用env var的值?我过去做的一件事是有一个由Docker容器运行的run.sh配置脚本,该容器使用env变量在模板文件中为nginx配置实现子站 - 这是你的意思吗?
答案 2 :(得分:0)
执行hacky HEREDOC存在大量问题,包括它只进行一次服务发现(并不比硬编码好多少)。因此,当环境变量发生变化时,我的解决方案最终使用confd模板nginx并重新启动nginx。这是confd的链接:https://github.com/kelseyhightower/confd
答案 3 :(得分:0)
将包含的配置文件保存在作为卷安装的ConfigMap中也应该有效。
您可能需要更改配置文件的结构。
答案 4 :(得分:-1)
在规范中,您可以定义环境变量,例如
spec:
containers:
- name: kibana-logging
image: gcr.io/google_containers/kibana:1.3
livenessProbe:
name: kibana-liveness
httpGet:
path: /
port: 5601
initialDelaySeconds: 30
timeoutSeconds: 5
env:
- name: "ELASTICSEARCH_URL"
value: "http://elasticsearch-logging:9200"
ports:
- containerPort: 5601
name: kibana-port
protocol: TCP
这将导致环境变量ELASTICSEARCH_URL设置为http://elasticsearch-logging:9200。这对你有用吗?
干杯,
萨特南