nginx.conf 可以访问环境变量吗?
Can nginx.conf access environment variables?
我正在尝试 运行 一个 docker 容器与 kubernetes 集群上的 nginx。我正在为我的所有其他容器使用环境变量服务发现,所以我想保持它的一致性,而不必仅仅因为这个而将 skydns 之类的东西混入其中。是否可以访问 nginx 中的环境变量,以便我可以告诉它代理传递给 kubernetes 服务?
在规范中,您可以定义一个环境变量,例如
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。这对你有用吗?
干杯,
萨特南
你的意思是在 nginx 的配置文件中使用以这种方式设置的环境变量的值?我过去做过的一件事是 run.sh 配置脚本,它是 Docker 容器的 运行,它使用 env 变量来影响 nginx 配置模板文件中的变电站 - - 你是这个意思吗?
这个 shell 脚本怎么样,下面是 Docker 容器 运行?
做骇人听闻的 HEREDOC 有很多问题,包括它只有一次服务发现(并不比硬编码好多少)。所以我的解决方案最终是使用 confd 来模板化 nginx 并在环境变量更改时重新启动 nginx。这是要确认的 link:https://github.com/kelseyhightower/confd
在作为卷安装的 ConfigMap 中保留包含的配置文件也应该有效。
尽管如此,您可能需要更改配置文件的结构。
我正在尝试 运行 一个 docker 容器与 kubernetes 集群上的 nginx。我正在为我的所有其他容器使用环境变量服务发现,所以我想保持它的一致性,而不必仅仅因为这个而将 skydns 之类的东西混入其中。是否可以访问 nginx 中的环境变量,以便我可以告诉它代理传递给 kubernetes 服务?
在规范中,您可以定义一个环境变量,例如
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。这对你有用吗?
干杯,
萨特南
你的意思是在 nginx 的配置文件中使用以这种方式设置的环境变量的值?我过去做过的一件事是 run.sh 配置脚本,它是 Docker 容器的 运行,它使用 env 变量来影响 nginx 配置模板文件中的变电站 - - 你是这个意思吗?
这个 shell 脚本怎么样,下面是 Docker 容器 运行?
做骇人听闻的 HEREDOC 有很多问题,包括它只有一次服务发现(并不比硬编码好多少)。所以我的解决方案最终是使用 confd 来模板化 nginx 并在环境变量更改时重新启动 nginx。这是要确认的 link:https://github.com/kelseyhightower/confd
在作为卷安装的 ConfigMap 中保留包含的配置文件也应该有效。
尽管如此,您可能需要更改配置文件的结构。