nginx.conf可以访问环境变量吗?

时间:2015-06-18 15:21:11

标签: nginx docker environment-variables kubernetes

我正在尝试在kubernetes集群上运行带有nginx的docker容器。我正在为所有其他容器使用环境变量服务发现,所以我想保持它的一致性,而不是因为这个而不必将skydns之类的东西带到混合中。是否可以访问nginx中的环境变量,以便我可以告诉它代理传递给kubernetes服务?

5 个答案:

答案 0 :(得分:1)

答案 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。这对你有用吗?

干杯,

萨特南