Merge pull request #168 from fraenkel/env-files
Initial --from-env-file proposal
This commit is contained in:
commit
d35f65d083
|
@ -0,0 +1,84 @@
|
|||
# Kubectl create configmap/secret --env-file
|
||||
|
||||
## Goals
|
||||
|
||||
Allow a Docker environment file (.env) to populate an entire `ConfigMap` or `Secret`.
|
||||
The populated `ConfigMap` or `Secret` can be referenced by a pod to load all
|
||||
the data contained within.
|
||||
|
||||
## Design
|
||||
|
||||
The `create configmap` subcommand would add a new option called
|
||||
`--from-env-file`. The option will accept a single file. The option may not be
|
||||
used in conjunction with `--from-file` or `--from-literal`.
|
||||
|
||||
The `create secret generic` subcommand would add a new option called
|
||||
`--from-env-file`. The option will accept a single file. The option may not be
|
||||
used in conjunction with `--from-file` or `--from-literal`.
|
||||
|
||||
### Environment file specification
|
||||
|
||||
An environment file consists of lines to be in VAR=VAL format. Lines beginning
|
||||
with # (i.e. comments) are ignored, as are blank lines. Any whitespace in
|
||||
front of the VAR is removed. VAR must be a valid C_IDENTIFIER. If the line
|
||||
consists of just VAR, then the VAL will be given a value from the current
|
||||
environment.
|
||||
|
||||
Any ill-formed line will be flagged as an error and will prevent the
|
||||
`ConfigMap` or `Secret` from being created.
|
||||
|
||||
[Docker's environment file processing](https://github.com/docker/docker/blob/master/runconfig/opts/envfile.go)
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
$ cat game.env
|
||||
enemies=aliens
|
||||
lives=3
|
||||
enemies_cheat=true
|
||||
enemies_cheat_level=noGoodRotten
|
||||
secret_code_passphrase=UUDDLRLRBABAS
|
||||
secret_code_allowed=true
|
||||
secret_code_lives=30
|
||||
```
|
||||
|
||||
Create configmap from an env file:
|
||||
```
|
||||
kubectl create configmap game-config --from-env-file=./game.env
|
||||
```
|
||||
|
||||
The populated configmap would look like:
|
||||
```
|
||||
$ kubectl get configmaps game-config -o yaml
|
||||
|
||||
apiVersion: v1
|
||||
data:
|
||||
enemies: aliens
|
||||
lives: 3
|
||||
enemies_cheat: true
|
||||
enemies_cheat_level: noGoodRotten
|
||||
secret_code_passphrase: UUDDLRLRBABAS
|
||||
secret_code_allowed: true
|
||||
secret_code_lives: 30
|
||||
```
|
||||
|
||||
Create secret from an env file:
|
||||
```
|
||||
kubectl create secret generic game-config --from-env-file=./game.env
|
||||
```
|
||||
|
||||
The populated secret would look like:
|
||||
```
|
||||
$ kubectl get secret game-config -o yaml
|
||||
|
||||
apiVersion: v1
|
||||
type: Opaque
|
||||
data:
|
||||
enemies: YWxpZW5z
|
||||
enemies_cheat: dHJ1ZQ==
|
||||
enemies_cheat_level: bm9Hb29kUm90dGVu
|
||||
lives: Mw==
|
||||
secret_code_allowed: dHJ1ZQ==
|
||||
secret_code_lives: MzA=
|
||||
secret_code_passphrase: VVVERExSTFJCQUJBUw==
|
||||
```
|
Loading…
Reference in New Issue