2015-11-03 69 views
2

我們正在將我們的ruby微服務移動到kubernetes,並且我們用於在config/application.yml中保存特定於環境的配置。使用kubernetes,您可以爲每個服務創建特定於環境的文件,例如config/kubernetes/production.yml如何使用kubernetes配置環境特定的應用程序配置

儘管kubernetes pod配置文件能夠容納環境變量,但您似乎無法在其中保存結構化數據。

舉一個例子,在application.yml我們有

development: &development 
    process: 
    notifier: 
     type: 'terminal-notifier' 
    ... 

production: &production 
    process: 
    notifier: 
     type: 'airbrake' 
     api_key: 'xxxx' 
     host: 'xxx.xxx.com' 
    ... 

是否合理,繼續這種做法與kubernetes並在application.yml破壞環境了或根本kubernetes有其他最佳實踐置備吊艙結構化配置?

注意,直到所有的服務都遷移,我們基本上保持配置爲這樣:

kubernetes_staging: 
    <<: *staging 
    ... 
+1

將它的工作有一個配置/ application.yml文件,並將它放入您的碼頭工人的形象,並使用相同的圖像爲各類吊艙,然後控制通過改變'-e'參數來使用哪個環境?例如: '.spec.container []。command:[「rails」「server」「-e」,「production」]' –

+0

這就是我們現在正在做的事情。我們通過設置「RUN_ENV」環境變量來指定kubernetes配置中的參數。所以我想用rails的方式保持最佳做法? – user1047833

+1

我對Rails沒有任何經驗,所以我不能說那個。 –

回答

1

你可以做到這幾個方面,一個是繼續做你在一個單一的文件做什麼另一個是使用標籤來指定要使用哪個環境的配置,另一個是使用命名空間。我個人推薦命名空間,這樣你可以爲每個環境分別創建.yml文件,這些文件可能會使同一個pod旋轉,但是具有不同的配置,因此要執行此操作,您需要使用staging,prod等命名空間。命名空間也是讓同一個kubernetes集羣具有分段和生產概念的好方法。另外,您可以爲某些名稱空間指定權限。

下面是關於命名空間的文檔https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/design/namespaces.md