mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-07 19:23:40 +00:00
Proposal: config data volume source
This commit is contained in:
parent
b12550273e
commit
62f7220d6b
@ -173,7 +173,36 @@ type ConfigDataSelector struct {
|
|||||||
|
|
||||||
### Volume Source
|
### 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
|
## Examples
|
||||||
|
|
||||||
@ -237,6 +266,45 @@ spec:
|
|||||||
key: etcdctl_peers
|
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
|
### Future Improvements
|
||||||
|
|
||||||
In the future, we may add the ability to specify an init-container that can watch the volume
|
In the future, we may add the ability to specify an init-container that can watch the volume
|
||||||
|
Loading…
Reference in New Issue
Block a user