{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31026","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31026/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31026/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31026/events","html_url":"https://github.com/kubernetes/kubernetes/pull/31026","id":172218075,"number":31026,"title":"Move init-container feature from alpha to beta.","user":{"login":"erictune","id":8105590,"avatar_url":"https://avatars.githubusercontent.com/u/8105590?v=3","gravatar_id":"","url":"https://api.github.com/users/erictune","html_url":"https://github.com/erictune","followers_url":"https://api.github.com/users/erictune/followers","following_url":"https://api.github.com/users/erictune/following{/other_user}","gists_url":"https://api.github.com/users/erictune/gists{/gist_id}","starred_url":"https://api.github.com/users/erictune/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/erictune/subscriptions","organizations_url":"https://api.github.com/users/erictune/orgs","repos_url":"https://api.github.com/users/erictune/repos","events_url":"https://api.github.com/users/erictune/events{/privacy}","received_events_url":"https://api.github.com/users/erictune/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/cla:%20yes","name":"cla: yes","color":"bfe5bf"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/kind/api-change","name":"kind/api-change","color":"c7def8"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/lgtm","name":"lgtm","color":"15dd18"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/release-note","name":"release-note","color":"c2e0c6"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/size/M","name":"size/M","color":"eebb00"}],"state":"open","locked":false,"assignee":{"login":"dchen1107","id":7740897,"avatar_url":"https://avatars.githubusercontent.com/u/7740897?v=3","gravatar_id":"","url":"https://api.github.com/users/dchen1107","html_url":"https://github.com/dchen1107","followers_url":"https://api.github.com/users/dchen1107/followers","following_url":"https://api.github.com/users/dchen1107/following{/other_user}","gists_url":"https://api.github.com/users/dchen1107/gists{/gist_id}","starred_url":"https://api.github.com/users/dchen1107/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dchen1107/subscriptions","organizations_url":"https://api.github.com/users/dchen1107/orgs","repos_url":"https://api.github.com/users/dchen1107/repos","events_url":"https://api.github.com/users/dchen1107/events{/privacy}","received_events_url":"https://api.github.com/users/dchen1107/received_events","type":"User","site_admin":false},"assignees":[{"login":"dchen1107","id":7740897,"avatar_url":"https://avatars.githubusercontent.com/u/7740897?v=3","gravatar_id":"","url":"https://api.github.com/users/dchen1107","html_url":"https://github.com/dchen1107","followers_url":"https://api.github.com/users/dchen1107/followers","following_url":"https://api.github.com/users/dchen1107/following{/other_user}","gists_url":"https://api.github.com/users/dchen1107/gists{/gist_id}","starred_url":"https://api.github.com/users/dchen1107/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dchen1107/subscriptions","organizations_url":"https://api.github.com/users/dchen1107/orgs","repos_url":"https://api.github.com/users/dchen1107/repos","events_url":"https://api.github.com/users/dchen1107/events{/privacy}","received_events_url":"https://api.github.com/users/dchen1107/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/22","html_url":"https://github.com/kubernetes/kubernetes/milestones/v1.4","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/milestones/22/labels","id":1777384,"number":22,"title":"v1.4","description":"https://github.com/kubernetes/features/blob/master/release-1.4/Release-1.4.md","creator":{"login":"bgrant0607","id":7725777,"avatar_url":"https://avatars.githubusercontent.com/u/7725777?v=3","gravatar_id":"","url":"https://api.github.com/users/bgrant0607","html_url":"https://github.com/bgrant0607","followers_url":"https://api.github.com/users/bgrant0607/followers","following_url":"https://api.github.com/users/bgrant0607/following{/other_user}","gists_url":"https://api.github.com/users/bgrant0607/gists{/gist_id}","starred_url":"https://api.github.com/users/bgrant0607/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bgrant0607/subscriptions","organizations_url":"https://api.github.com/users/bgrant0607/orgs","repos_url":"https://api.github.com/users/bgrant0607/repos","events_url":"https://api.github.com/users/bgrant0607/events{/privacy}","received_events_url":"https://api.github.com/users/bgrant0607/received_events","type":"User","site_admin":false},"open_issues":205,"closed_issues":307,"state":"open","created_at":"2016-05-19T18:50:19Z","updated_at":"2016-08-21T11:40:57Z","due_on":"2016-09-15T00:00:00Z","closed_at":null},"comments":6,"created_at":"2016-08-19T20:51:46Z","updated_at":"2016-08-21T12:03:43Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/31026","html_url":"https://github.com/kubernetes/kubernetes/pull/31026","diff_url":"https://github.com/kubernetes/kubernetes/pull/31026.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/31026.patch"},"body":"```release-note\r\nMoved init-container feature from alpha to beta.\r\n\r\nIn 1.3, an init container is specified with this annotation key\r\non the pod or pod template: `pods.alpha.kubernetes.io/init-containers`.\r\n\r\nIn 1.4, either that key or this key: pods.beta.kubernetes.io/init-containers`,\r\ncan be used.\r\n\r\nWhen you GET an object, you will see both annotation keys with the same values.\r\n\r\nYou can safely roll back from 1.4 to 1.3, and things with init-containers\r\nwill still work (pods, deployments, etc).\r\n\r\nIf you are running 1.3, only use the alpha annotation, or it may be lost when\r\nrolling forward.\r\n\r\nThe status has moved from annotation key\r\n`pods.beta.kubernetes.io/init-container-statuses` to\r\n`pods.beta.kubernetes.io/init-container-statuses`.\r\nAny code that inspects this annotation should be changed to use the new key.\r\n\r\nState of Initialization will continue to be reported in both pods.alpha.kubernetes.io/initialized\r\nand in `podStatus.conditions.{status: \"True\", type: Initialized}`\r\n```\r\n\r\nMini-design for this change:\r\n\r\nGoals:\r\n1. A user can create an object with the beta annotation\r\n  on 1.4, and it works.  The fact that the annotation has beta\r\n  in it communicates to the user that the feature is beta,\r\n  and so the user should have confidence in using it.  Preferably,\r\n  when the user gets the annotation back, he see the beta\r\n  annotation.\r\n1) If someone had an existing alpha object in their apiserver,\r\n  such as a RS with a pod template with an init-containers\r\n  annotation on it, it should continue to work (init containers\r\n  run) when stack upgraded to 1.4.\r\n2) If someone is using a chart or blog post that has alpha\r\n  annotation on it and they create it on a 1.4 cluster, it should\r\n  work.\r\n3) If someone had something with an init container in 1.4\r\n  and they roll back stack to 1.3, it should not silently stop\r\n  working (init containers don't run anymore).\r\n\r\nTo meet all these, we mirror an absent beta label from the alpha\r\nkey and vice versa.  If they are out of sync, we use the alpha\r\none. We do this in conversion since there was already logic there.\r\n\r\nIn 1.3 code, all annotations are preserved across a round trip\r\n(v1 -> api -> v1), and the alpha annotation turns into the internal\r\nfield that kubelet uses.\r\n\r\nIn 1.4 code, the alpha annotation is always preserved across\r\na round trip, and a beta annotation is always set equal to\r\nthe alpha one, after a round trip.\r\n\r\nCurrently, the kubelet always sees the object after a round trip\r\nwhen it GETs it.  But, we don't want to rely on that behavior,\r\nsince it will break when fastpath is implemented.\r\n\r\nSo, we rely on this:\r\nall objects either are created with an alpha annotation (1.3 or 1.4\r\ncode) or are created with a beta annotation under 1.4.  In the later\r\ncase, they are round tripped at creation time, and so get both\r\nannotations.  So all subsequent GETs see both labels.\n\n<!-- Reviewable:start -->\n---\nThis change is [<img src=\"https://reviewable.kubernetes.io/review_button.svg\" height=\"34\" align=\"absmiddle\" alt=\"Reviewable\"/>](https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/31026)\n<!-- Reviewable:end -->\n"},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/241253700","html_url":"https://github.com/kubernetes/kubernetes/pull/31026#issuecomment-241253700","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/31026","id":241253700,"user":{"login":"k8s-bot","id":12551979,"avatar_url":"https://avatars.githubusercontent.com/u/12551979?v=3","gravatar_id":"","url":"https://api.github.com/users/k8s-bot","html_url":"https://github.com/k8s-bot","followers_url":"https://api.github.com/users/k8s-bot/followers","following_url":"https://api.github.com/users/k8s-bot/following{/other_user}","gists_url":"https://api.github.com/users/k8s-bot/gists{/gist_id}","starred_url":"https://api.github.com/users/k8s-bot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/k8s-bot/subscriptions","organizations_url":"https://api.github.com/users/k8s-bot/orgs","repos_url":"https://api.github.com/users/k8s-bot/repos","events_url":"https://api.github.com/users/k8s-bot/events{/privacy}","received_events_url":"https://api.github.com/users/k8s-bot/received_events","type":"User","site_admin":false},"created_at":"2016-08-21T12:03:43Z","updated_at":"2016-08-21T12:03:43Z","body":"GCE e2e build/test **passed** for commit 6e5a7f9441a3eb4a7b09d935c59c8d16977dae5d.\n* [Test Results](https://k8s-gubernator.appspot.com/build/kubernetes-jenkins/pr-logs/pull/31026/kubernetes-pull-build-test-e2e-gce/55052)\n* [Build Log](http://pr-test.k8s.io/31026/kubernetes-pull-build-test-e2e-gce/55052/build-log.txt)\n* [Test Artifacts](https://console.developers.google.com/storage/browser/kubernetes-jenkins/pr-logs/pull/31026/kubernetes-pull-build-test-e2e-gce/55052/artifacts/)\n* [Internal Jenkins Results](http://goto.google.com/prkubekins/job/kubernetes-pull-build-test-e2e-gce//55052)\n\n"}}
{"actor":{"display_login":"k8s-bot"}}