2015-06-18 187 views
1

我正嘗試在kubernetes集羣上運行帶有nginx的docker容器。我爲所有其他容器使用了環境變量服務發現,所以我想保持它的一致性,而不必因爲這個而將諸如skydns之類的東西帶入混合。是否有可能訪問nginx中的環境變量,以便我可以告訴它代理傳遞給kubernetes服務?nginx.conf可以訪問環境變量嗎?

+0

[此服務器默認問題] [1]應該包含您的問題的答案。 [1]:http://serverfault.com/questions/577370/how-can-i-use-environment-variables-in-nginx-conf –

+0

這工作,但相當哈克,我沒看到那,但我希望有這樣做的「kubernetes方式」。 –

回答

0

做了hacky HEREDOC的問題很多,包括只有一次服務發現(沒有比硬編碼好得多)。所以我的解決方案最終使用confd來模板nginx,並在環境變量發生變化時重新啓動nginx。這裏是指向confd的鏈接:https://github.com/kelseyhightower/confd

0

在規範中,您可以定義一個環境變量,例如

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。這會爲你工作嗎?

乾杯,

薩特南

+0

不,我知道我可以做到這一點,它使用的是我在想的nginx中可以使用的環境。 –

0

你的意思是在nginx的配置文件使用的環境變量設置的值以這種方式?我過去做過的一件事就是擁有一個由Docker容器運行的run.sh配置腳本,該腳本使用env變量在模板文件中爲nginx配置生成變電站 - 是嗎?

+0

這不是100%清楚你在說什麼,你能舉個例子嗎?但是要回答你的問題,是的,我希望在我的nginx配置中使用這些環境變量。 –

0

將ConfigMap中包含的配置文件保存爲卷也應該工作。

雖然您可能需要更改配置文件的結構。