Kubernetes:pipe理环境configuration

用于pipe理在pod中运行的环境configuration容器的reccomended方法是通过使用configmap 。 看到这里的文档 。

虽然我们的容器需要大量的环境variables,但是这是非常好的,这只会在未来扩展。 使用规定的configuration图方法,这变得unweildy和难以pipe理。

例如一个简单的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 

是否有备用容易注入中央环境configuration?

UPDATE

这是1.5提议,虽然没有削减,看起来将被列入1.6 。 手指交叉…

有一个目前针对1.5的提案旨在使这更容易。 正如所提出的那样,您可以一次性从一个ConfigMap中取出所有variables,而不必分别拼写每个variables。

如果实施,它可以让你做这样的事情:

警告:这实际上并没有工作!

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