Automatic merge from submit-queue
Extend secrets volumes with path control
As per [1] this PR extends secrets mapped into volume with:
* key-to-path mapping the same way as is for configmap. E.g.
```
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "mypod",
"namespace": "default"
},
"spec": {
"containers": [{
"name": "mypod",
"image": "redis",
"volumeMounts": [{
"name": "foo",
"mountPath": "/etc/foo",
"readOnly": true
}]
}],
"volumes": [{
"name": "foo",
"secret": {
"secretName": "mysecret",
"items": [{
"key": "username",
"path": "my-username"
}]
}
}]
}
}
```
Here the ``spec.volumes[0].secret.items`` added changing original target ``/etc/foo/username`` to ``/etc/foo/my-username``.
* secondly, refactoring ``pkg/volumes/secrets/secrets.go`` volume plugin to use ``AtomicWritter`` to project a secret into file.
[1] https://github.com/kubernetes/kubernetes/blob/master/docs/design/configmap.md#changes-to-secret
PLEASE NOTE: This document applies to the HEAD of the source tree
If you are using a released version of Kubernetes, you should refer to the docs that go with that version.
The latest release of this document can be found [here](http://releases.k8s.io/release-1.2/docs/README.md).Documentation for other releases can be found at releases.k8s.io.
Kubernetes Documentation: releases.k8s.io/HEAD
-
The User's guide is for anyone who wants to run programs and services on an existing Kubernetes cluster.
-
The Cluster Admin's guide is for anyone setting up a Kubernetes cluster or administering it.
-
The Developer guide is for anyone wanting to write programs that access the Kubernetes API, write plugins or extensions, or modify the core code of Kubernetes.
-
The Kubectl Command Line Interface is a detailed reference on the
kubectlCLI. -
The API object documentation is a detailed description of all fields found in core API objects.
-
An overview of the Design of Kubernetes
-
There are example files and walkthroughs in the examples folder.
-
If something went wrong, see the troubleshooting document for how to debug. You should also check the known issues for the release you're using.
-
To report a security issue, see Reporting a Security Issue.