Skip to content

Commit

Permalink
Proposal: config data volume source
Browse files Browse the repository at this point in the history
  • Loading branch information
pmorie committed Nov 20, 2015
1 parent b125502 commit 62f7220
Showing 1 changed file with 69 additions and 1 deletion.
70 changes: 69 additions & 1 deletion docs/proposals/config_data.md
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,36 @@ type ConfigDataSelector struct {

### Volume Source

The volume source will be addressed in a follow-up PR.
A new `ConfigDataVolumeSource` type of volume source containing the `ConfigData` object will be
added to the `VolumeSource` struct in the API:

```go
package api

type VolumeSource struct {
// other fields omitted
ConfigData *ConfigDataVolumeSource `json:"configData,omitempty"`
}

// ConfigDataVolumeSource represents a volume that holds configuration data
type ConfigDataVolumeSource struct {
// A list of config data keys to project into the volume in files
Files []ConfigDataVolumeFile `json:"files"`
}

// ConfigDataVolumeFile represents a single file containing config data
type ConfigDataVolumeFile struct {
ConfigDataSelector `json:",inline"`

// The relative path name of the file to be created.
// Must not be absolute or contain the '..' path. Must be utf-8 encoded.
// The first item of the relative path must not start with '..'
Path string `json:"path"`
}
```

**Note:** The update logic used in the downward API volume plug-in will be extracted and re-used in
the volume plug-in for `ConfigData`.

## Examples

Expand Down Expand Up @@ -237,6 +266,45 @@ spec:
key: etcdctl_peers
```

### Consuming `ConfigData` as Volumes

`redis-volume-config` is intended to be used as a volume containing a config file:

```yaml
apiVersion: extensions/v1beta1
kind: ConfigData
metadata:
name: redis-volume-config
data:
redis.conf: "pidfile /var/run/redis.pid\nport6379\ntcp-backlog 511\n databases 1\ntimeout 0\n"
```

The following pod consumes the `redis-volume-config` in a volume:

```yaml
apiVersion: v1
kind: Pod
metadata:
name: config-volume-example
spec:
containers:
- name: redis
image: kubernetes/redis
command: "redis-server /mnt/config-data/etc/redis.conf"
ports:
- containerPort: 6379
volumeMounts:
- name: config-data-volume
mountPath: /mnt/config-data
volumes:
- name: config-data-volume
configData:
files:
- path: "etc/redis.conf"
configDataName: redis-volume-config
key: redis.conf
```

### Future Improvements

In the future, we may add the ability to specify an init-container that can watch the volume
Expand Down

0 comments on commit 62f7220

Please sign in to comment.