kubernetes/api/swagger-spec
Kubernetes Submit Queue 26caa84d09
Merge pull request #63445 from ericchiang/deprecate-git-repo-volume
Automatic merge from submit-queue (batch tested with PRs 63445, 63820). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.

core v1: deprecate the gitRepo volume type

gitRepo stopped accepting new features nearly 2 years ago https://github.com/kubernetes/kubernetes/issues/17676#issuecomment-228650586 and today this behavior can easily be achieved through an init container. The kubelet shelling out to git in the host namespace can also be a security issue on un-trusted repos, as was demonstrated by [CVE-2017-1000117](https://groups.google.com/forum/#!topic/kubernetes-announce/CTLXJ74cu8M). Our own documentation even alludes to this volume type being removed in the future:

> In the future, such volumes may be moved to an even more decoupled model, rather than extending the Kubernetes API for every such use case.

https://kubernetes.io/docs/concepts/storage/volumes/#gitrepo

Closes https://github.com/kubernetes/kubernetes/issues/60999

```release-note-action-required
The GitRepo volume type is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container.
```

/release-note-action-required

Instead of this:

```yaml
apiVersion: v1
kind: Pod
metadata:
  name: server
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /mypath
      name: git-volume
  volumes:
  - name: git-volume
    gitRepo:
      repository: "git@somewhere:me/my-git-repository.git"
      revision: "22f1d8406d464b0c0874075539c1f2e96c253775"
```

Do this:

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: git-clone
data:
  git-clone.sh: |
    #!/bin/sh -e
    git clone $1 $3
    cd $3
    git reset --hard $2
---
apiVersion: v1
kind: Pod
metadata:
  name: server
spec:
  initContainers:
  - name: git-clone
    image: alpine/git # Any image with git will do
    command:
    - /usr/local/git/git-clone.sh
    args:
    - "https://somewhere/me/my-git-repository.git"
    - "22f1d8406d464b0c0874075539c1f2e96c253775"
    - "/mypath"
    volumeMounts:
    - name: git-clone
      mountPath: /usr/local/git
    - name: git-repo
      mountPath: /mypath
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /mypath
      name: git-volume
  volumes:
  - name: git-volume
    emptyDir: {}
  - name: git-clone
    configMap:
      name: git-clone
      defaultMode: 0755
```
2018-05-31 16:20:07 -07:00
..
admissionregistration.k8s.io_v1alpha1.json Clarify that ListOptions.Timeout is not conditional on inactivity 2018-02-05 17:04:03 -05:00
admissionregistration.k8s.io_v1beta1.json Run hack/update-all.sh 2018-04-13 10:19:58 -07:00
admissionregistration.k8s.io.json generated 2018-05-21 18:04:54 -07:00
api.json Update docs/ URLs to point to proper locations 2017-06-05 22:13:54 -07:00
apis.json generated 2018-05-21 18:04:54 -07:00
apps_v1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
apps_v1alpha1.json fixed some bad url 2018-01-10 22:05:00 +08:00
apps_v1beta1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
apps_v1beta2.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
apps.json generated 2018-05-21 18:04:54 -07:00
authentication.k8s.io_v1.json Update deletionTimestamp with information about finalizer effect 2017-11-03 10:48:48 +08:00
authentication.k8s.io_v1beta1.json Update deletionTimestamp with information about finalizer effect 2017-11-03 10:48:48 +08:00
authentication.k8s.io.json generated 2018-05-21 18:04:54 -07:00
authorization.k8s.io_v1.json autogenerated 2017-11-03 13:46:29 -07:00
authorization.k8s.io_v1beta1.json autogenerated 2017-11-03 13:46:29 -07:00
authorization.k8s.io.json generated 2018-05-21 18:04:54 -07:00
autoscaling_v1.json Clarify that ListOptions.Timeout is not conditional on inactivity 2018-02-05 17:04:03 -05:00
autoscaling_v2beta1.json Autogenerated code for HPA external metrics 2018-02-22 14:45:06 +01:00
autoscaling.json generated 2018-05-21 18:04:54 -07:00
batch_v1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
batch_v1beta1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
batch_v2alpha1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
batch.json generated 2018-05-21 18:04:54 -07:00
BUILD Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
certificates.k8s.io_v1beta1.json generated 2018-05-18 18:42:39 -07:00
certificates.k8s.io.json generated 2018-05-21 18:04:54 -07:00
events.k8s.io_v1beta1.json auto-generated 2018-02-11 11:04:15 +08:00
events.k8s.io.json generated 2018-05-21 18:04:54 -07:00
extensions_v1beta1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
extensions.json generated 2018-05-21 18:04:54 -07:00
logs.json Update generated proto and swagger docs 2016-09-12 18:47:03 -07:00
networking.k8s.io_v1.json Regenerate files 2018-02-28 08:27:39 -05:00
networking.k8s.io.json generated 2018-05-21 18:04:54 -07:00
policy_v1alpha1.json Update docs/ URLs to point to proper locations 2017-06-05 22:13:54 -07:00
policy_v1beta1.json Autogenerated changes. 2018-03-21 11:21:17 +01:00
policy.json generated 2018-05-21 18:04:54 -07:00
rbac.authorization.k8s.io_v1.json Indicate clusterrolebinding, rolebinding subjects are optional fields 2018-03-02 16:04:57 +09:00
rbac.authorization.k8s.io_v1alpha1.json Indicate clusterrolebinding, rolebinding subjects are optional fields 2018-03-02 16:04:57 +09:00
rbac.authorization.k8s.io_v1beta1.json Indicate clusterrolebinding, rolebinding subjects are optional fields 2018-03-02 16:04:57 +09:00
rbac.authorization.k8s.io.json generated 2018-05-21 18:04:54 -07:00
resourceListing.json Generated 2018-05-12 02:01:09 -04:00
scheduling.k8s.io_v1alpha1.json autogenerated files 2018-02-18 18:20:10 -08:00
scheduling.k8s.io_v1beta1.json Generated 2018-05-12 02:01:09 -04:00
scheduling.k8s.io.json generated 2018-05-21 18:04:54 -07:00
settings.k8s.io_v1alpha1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
settings.k8s.io.json generated 2018-05-21 18:04:54 -07:00
storage.authorization.k8s.io_v1beta1.json generated code for moving StorageClass 2016-09-06 08:41:17 -04:00
storage.k8s.io_v1.json Clarify that ListOptions.Timeout is not conditional on inactivity 2018-02-05 17:04:03 -05:00
storage.k8s.io_v1alpha1.json Clarify that ListOptions.Timeout is not conditional on inactivity 2018-02-05 17:04:03 -05:00
storage.k8s.io_v1beta1.json Clarify that ListOptions.Timeout is not conditional on inactivity 2018-02-05 17:04:03 -05:00
storage.k8s.io.json generated 2018-05-21 18:04:54 -07:00
v1.json Merge pull request #63445 from ericchiang/deprecate-git-repo-volume 2018-05-31 16:20:07 -07:00
version.json update autogenerated 2016-08-18 14:14:52 -07:00