2016-09-21 96 views
1

通過使用configmap來管理在容器中運行的環境配置容器的管理方法。 See the docs hereKubernetes:管理環境配置

雖然我們的容器需要大量的環境變量,但這是很好的,這隻會在未來擴展。使用規定的configmap方法,這變得不方便且難以管理。

例如一個簡單的deplyment文件將成爲巨大的:

apiVersion: v1 
kind: Service 
metadata: 
    name: my-app-api 
    labels: 
    name: my-app-api 
    environment: staging 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 80 
     targetPort: 80 
     protocol: TCP 
     name: http 
    selector: 
    name: my-app-api 
    environment: staging 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: my-app-api 
spec: 
    replicas: 2 
    revisionHistoryLimit: 10 
    template: 
    metadata: 
     labels: 
     name: my-app-api 
     environment: staging 
    spec: 
     containers: 
     - name: my-app-api 
     imagePullPolicy: Always 
     image: myapp/my-app-api:latest 
     ports: 
      - containerPort: 80 
     env: 
      - name: API_HOST 
       value: XXXXXXXXXXX 
      - name: API_ENV 
       value: XXXXXXXXXXX 
      - name: API_DEBUG 
       value: XXXXXXXXXXX 
      - name: API_KEY 
       value: XXXXXXXXXXX 
      - name: EJ_API_ENDPOINT 
       value: XXXXXXXXXXX 
      - name: WEB_HOST 
       value: XXXXXXXXXXX 
      - name: AWS_ACCESS_KEY 
       value: XXXXXXXXXXX 
      - name: AWS_SECRET_KEY 
       value: XXXXXXXXXXX 
      - name: CDN 
       value: XXXXXXXXXXX 
      - name: STRIPE_KEY 
       value: XXXXXXXXXXX 
      - name: STRIPE_SECRET 
       value: XXXXXXXXXXX 
      - name: DB_HOST 
       value: XXXXXXXXXXX 
      - name: MYSQL_ROOT_PASSWORD 
       value: XXXXXXXXXXX 
      - name: MYSQL_DATABASE 
       value: XXXXXXXXXXX 
      - name: REDIS_HOST 
       value: XXXXXXXXXXX 
     imagePullSecrets: 
     - name: my-registry-key 

是否有備用容易注入中央環境配置?

UPDATE

這提出了1.5雖然沒有獲得晉級,看起來像它會被包含在1.6。手指交叉...

回答

0

有一個proposal目前針對1.5,旨在使這更容易。如所提出的那樣,您可以一次性從一個ConfigMap中取出所有變量,而不必分別拼出每個變量。

如果實現,這將允許你做這樣的事情:

警告:這並不實際工作呢!

ConfigMap:

apiVersion: v1 
data: 
    space-ships: 1 
    ship-type: battle-cruiser 
    weapon: laser-cannon 
kind: ConfigMap 
metadata: 
    name: space-config 

部署:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: space-simulator 
spec: 
    template: 
    metadata: 
     labels: 
     app: space-simulator 
    spec: 
     containers: 
     - name: space-simulator 
     image: foo/space-simulator 
     # This is the magic piece that would allow you to avoid all that boilerplate! 
     - envFrom: 
     configMap: space-config 
+0

我們需要什麼。 v1.5版本的任何ETA哈哈? – AndrewMcLagan

+1

2016年底,所以希望不要太久等待,假設這實際上是成功的。 –