k3s/pkg/api
Kubernetes Submit Queue e9bd805888 Merge pull request #31026 from erictune/betainit
Automatic merge from submit-queue

Move init-container feature from alpha to beta.

```release-note
Moved init-container feature from alpha to beta.

In 1.3, an init container is specified with this annotation key
on the pod or pod template: `pods.alpha.kubernetes.io/init-containers`.

In 1.4, either that key or this key: pods.beta.kubernetes.io/init-containers`,
can be used.

When you GET an object, you will see both annotation keys with the same values.

You can safely roll back from 1.4 to 1.3, and things with init-containers
will still work (pods, deployments, etc).

If you are running 1.3, only use the alpha annotation, or it may be lost when
rolling forward.

The status has moved from annotation key
`pods.beta.kubernetes.io/init-container-statuses` to
`pods.beta.kubernetes.io/init-container-statuses`.
Any code that inspects this annotation should be changed to use the new key.

State of Initialization will continue to be reported in both pods.alpha.kubernetes.io/initialized
and in `podStatus.conditions.{status: "True", type: Initialized}`
```

Mini-design for this change:

Goals:
1. A user can create an object with the beta annotation
  on 1.4, and it works.  The fact that the annotation has beta
  in it communicates to the user that the feature is beta,
  and so the user should have confidence in using it.  Preferably,
  when the user gets the annotation back, he see the beta
  annotation.
1) If someone had an existing alpha object in their apiserver,
  such as a RS with a pod template with an init-containers
  annotation on it, it should continue to work (init containers
  run) when stack upgraded to 1.4.
2) If someone is using a chart or blog post that has alpha
  annotation on it and they create it on a 1.4 cluster, it should
  work.
3) If someone had something with an init container in 1.4
  and they roll back stack to 1.3, it should not silently stop
  working (init containers don't run anymore).

To meet all these, we mirror an absent beta label from the alpha
key and vice versa.  If they are out of sync, we use the alpha
one. We do this in conversion since there was already logic there.

In 1.3 code, all annotations are preserved across a round trip
(v1 -> api -> v1), and the alpha annotation turns into the internal
field that kubelet uses.

In 1.4 code, the alpha annotation is always preserved across
a round trip, and a beta annotation is always set equal to
the alpha one, after a round trip.

Currently, the kubelet always sees the object after a round trip
when it GETs it.  But, we don't want to rely on that behavior,
since it will break when fastpath is implemented.

So, we rely on this:
all objects either are created with an alpha annotation (1.3 or 1.4
code) or are created with a beta annotation under 1.4.  In the later
case, they are round tripped at creation time, and so get both
annotations.  So all subsequent GETs see both labels.
2016-08-21 05:04:11 -07:00
..
annotations Use Go canonical import paths 2016-07-16 13:48:21 -04:00
endpoints Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
errors storage error: precondition failure should return invalid object error 2016-07-24 20:21:42 -07:00
install fix register.go files up + add test import 2016-08-11 17:06:54 -07:00
meta Convert() should accept the new conversion Context value 2016-08-18 14:45:20 -04:00
pod Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
resource Update generated files due to dependency shift. 2016-08-09 10:41:09 -05:00
rest Plumb context to strategy methods 2016-08-08 22:33:25 -04:00
service Run goimports 2016-08-02 15:12:39 +03:00
testapi Introduce GroupVersioner for capturing desired target version 2016-08-18 14:45:00 -04:00
testing Merge pull request #30529 from hongchaodeng/r1 2016-08-20 00:24:40 -07:00
unversioned make labels, fields expose selectable requirements 2016-08-20 10:10:51 -07:00
util Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
v1 Merge pull request #31026 from erictune/betainit 2016-08-21 05:04:11 -07:00
validation Add spec.nodeName and spec.serviceAccountName to downward env var 2016-08-20 15:50:36 -04:00
OWNERS
context.go Merge pull request #25307 from derekwaynecarr/set_uid_from_context 2016-07-20 09:58:51 -07:00
context_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
conversion.go fix register.go files up + add test import 2016-08-11 17:06:54 -07:00
conversion_test.go Turn pkg/api/pod_example.json into go struct to avoid noise in pprof 2016-07-12 20:36:48 +02:00
copy_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
deep_copy_test.go Update etcd default ports for v3, and validate tests 2016-08-17 07:49:19 -05:00
defaults.go fix register.go files up + add test import 2016-08-11 17:06:54 -07:00
doc.go Use Go canonical import paths 2016-07-16 13:48:21 -04:00
field_constants.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
generate.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
generate_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
helpers.go make labels, fields expose selectable requirements 2016-08-20 10:10:51 -07:00
helpers_test.go Use PreferAvoidPods annotation to avoid pods being scheduled to specific node. 2016-07-13 17:07:46 +08:00
mapper.go Adding events to federation apiserver 2016-08-12 10:48:19 -07:00
meta.go Refactor uuid into its own pkg 2016-07-30 00:07:02 -04:00
meta_test.go Refactor uuid into its own pkg 2016-07-30 00:07:02 -04:00
node_example.json
ref.go move api.OjbectReference.ObjectKind() to ref.go 2016-07-14 23:02:05 -07:00
ref_test.go Use make as the main build tool 2016-07-12 21:52:00 -07:00
register.go fix register.go files up + add test import 2016-08-11 17:06:54 -07:00
replication_controller_example.json Initial Quobyte support 2016-08-18 17:13:50 +02:00
requestcontext.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
resource_helpers.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
resource_helpers_test.go Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
serialization_proto_test.go Convert() should accept the new conversion Context value 2016-08-18 14:45:20 -04:00
serialization_test.go Convert() should accept the new conversion Context value 2016-08-18 14:45:20 -04:00
types.generated.go Add ExternalName to ServiceSpec 2016-08-19 11:30:57 -07:00
types.go Add spec.nodeName and spec.serviceAccountName to downward env var 2016-08-20 15:50:36 -04:00
zz_generated.deepcopy.go Add ExternalName to ServiceSpec 2016-08-19 11:30:57 -07:00