2016-09-21 91 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年底,所以希望不要太久等待,假设这实际上是成功的。 –