2016-09-21 4 views
1

Рекомендованный метод управления контейнерами конфигурации среды, работающими в контейнере, осуществляется с использованием configmap. See the docs here.Kubernetes: Конфигурация управляющей среды

Это замечательно, хотя у нас есть контейнеры, для которых требуется огромное количество переменных окружения, это будет только расширяться в будущем. Используя предписанный метод 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

В настоящее время на данный момент нацелен на 1,5, цель которого составляет proposal. Как было предложено, вы могли бы вытащить все переменные из 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

Именно то, что мы должны были бы. Любой ETA на v1.5 хахаа? – AndrewMcLagan

+1

Конец 2016 года, так что, надеюсь, не слишком долго ждать, предполагая, что это действительно делает его. –

Смежные вопросы