Merge pull request #41931 from jessfraz/pip

Automatic merge from submit-queue (batch tested with PRs 41931, 39821, 41841, 42197, 42195)

Admission Controller: Add Pod Preset

Based off the proposal in https://github.com/kubernetes/community/pull/254

cc @pmorie @pwittrock 

TODO:
- [ ] tests



**What this PR does / why we need it**: Implements the Pod Injection Policy admission controller

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes #

**Special notes for your reviewer**:

**Release note**:

```release-note
Added new Api `PodPreset` to enable defining cross-cutting injection of Volumes and Environment into Pods.
```
This commit is contained in:
Kubernetes Submit Queue
2017-03-01 20:07:54 -08:00
committed by GitHub
147 changed files with 18508 additions and 363 deletions

View File

@@ -17691,6 +17691,155 @@ func GetOpenAPIDefinitions(ref openapi.ReferenceCallback) map[string]openapi.Ope
},
Dependencies: []string{},
},
"k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPreset": {
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "PodPreset is a policy resource that defines additional runtime requirements for a Pod.",
Properties: map[string]spec.Schema{
"kind": {
SchemaProps: spec.SchemaProps{
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds",
Type: []string{"string"},
Format: "",
},
},
"apiVersion": {
SchemaProps: spec.SchemaProps{
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources",
Type: []string{"string"},
Format: "",
},
},
"metadata": {
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"),
},
},
"spec": {
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPresetSpec"),
},
},
},
},
},
Dependencies: []string{
"k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta", "k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPresetSpec"},
},
"k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPresetList": {
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "PodPresetList is a list of PodPreset objects.",
Properties: map[string]spec.Schema{
"kind": {
SchemaProps: spec.SchemaProps{
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds",
Type: []string{"string"},
Format: "",
},
},
"apiVersion": {
SchemaProps: spec.SchemaProps{
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#resources",
Type: []string{"string"},
Format: "",
},
},
"metadata": {
SchemaProps: spec.SchemaProps{
Description: "Standard list metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata",
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta"),
},
},
"items": {
SchemaProps: spec.SchemaProps{
Description: "Items is a list of schema objects.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPreset"),
},
},
},
},
},
},
Required: []string{"items"},
},
},
Dependencies: []string{
"k8s.io/apimachinery/pkg/apis/meta/v1.ListMeta", "k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPreset"},
},
"k8s.io/kubernetes/pkg/apis/settings/v1alpha1.PodPresetSpec": {
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{
Description: "PodPresetSpec is a description of a pod injection policy.",
Properties: map[string]spec.Schema{
"selector": {
SchemaProps: spec.SchemaProps{
Description: "Selector is a label query over a set of resources, in this case pods. Required.",
Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector"),
},
},
"env": {
SchemaProps: spec.SchemaProps{
Description: "Env defines the collection of EnvVar to inject into containers.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/api/v1.EnvVar"),
},
},
},
},
},
"envFrom": {
SchemaProps: spec.SchemaProps{
Description: "EnvFrom defines the collection of EnvFromSource to inject into containers.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/api/v1.EnvFromSource"),
},
},
},
},
},
"volumes": {
SchemaProps: spec.SchemaProps{
Description: "Volumes defines the collection of Volume to inject into the pod.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/api/v1.Volume"),
},
},
},
},
},
"volumeMounts": {
SchemaProps: spec.SchemaProps{
Description: "VolumeMounts defines the collection of VolumeMount to inject into containers.",
Type: []string{"array"},
Items: &spec.SchemaOrArray{
Schema: &spec.Schema{
SchemaProps: spec.SchemaProps{
Ref: ref("k8s.io/kubernetes/pkg/api/v1.VolumeMount"),
},
},
},
},
},
},
},
},
Dependencies: []string{
"k8s.io/apimachinery/pkg/apis/meta/v1.LabelSelector", "k8s.io/kubernetes/pkg/api/v1.EnvFromSource", "k8s.io/kubernetes/pkg/api/v1.EnvVar", "k8s.io/kubernetes/pkg/api/v1.Volume", "k8s.io/kubernetes/pkg/api/v1.VolumeMount"},
},
"k8s.io/kubernetes/pkg/apis/storage/v1beta1.StorageClass": {
Schema: spec.Schema{
SchemaProps: spec.SchemaProps{