{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/15878","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/15878/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/15878/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/15878/events","html_url":"https://github.com/kubernetes/kubernetes/issues/15878","id":112219886,"number":15878,"title":"UpdateApplyAnnotation stores large annotation on every kubectl operation","user":{"login":"liggitt","id":980082,"avatar_url":"https://avatars.githubusercontent.com/u/980082?v=3","gravatar_id":"","url":"https://api.github.com/users/liggitt","html_url":"https://github.com/liggitt","followers_url":"https://api.github.com/users/liggitt/followers","following_url":"https://api.github.com/users/liggitt/following{/other_user}","gists_url":"https://api.github.com/users/liggitt/gists{/gist_id}","starred_url":"https://api.github.com/users/liggitt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/liggitt/subscriptions","organizations_url":"https://api.github.com/users/liggitt/orgs","repos_url":"https://api.github.com/users/liggitt/repos","events_url":"https://api.github.com/users/liggitt/events{/privacy}","received_events_url":"https://api.github.com/users/liggitt/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/app-config-deployment","name":"area/app-config-deployment","color":"fb6420"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/kubectl","name":"component/kubectl","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/ux","name":"team/ux","color":"d2b48c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":7,"created_at":"2015-10-19T19:54:20Z","updated_at":"2015-10-19T23:52:04Z","closed_at":null,"body":"https://github.com/kubernetes/kubernetes/pull/14626 is adding the full object serialization as an annotation on almost every mutating kubectl operation. This is doubling serialization size unnecessarily, and breaking any objects that were close to the annotation size limit. What benefit is this providing? The `apply` command should be able to do a 3-way merge between the current state of the API object and the desired state client-side. Not doing so means that `kubectl apply` isn't useful against objects created by older clients, or objects created or modified by non-kubectl clients."},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/149379261","html_url":"https://github.com/kubernetes/kubernetes/issues/15878#issuecomment-149379261","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/15878","id":149379261,"user":{"login":"smarterclayton","id":1163175,"avatar_url":"https://avatars.githubusercontent.com/u/1163175?v=3","gravatar_id":"","url":"https://api.github.com/users/smarterclayton","html_url":"https://github.com/smarterclayton","followers_url":"https://api.github.com/users/smarterclayton/followers","following_url":"https://api.github.com/users/smarterclayton/following{/other_user}","gists_url":"https://api.github.com/users/smarterclayton/gists{/gist_id}","starred_url":"https://api.github.com/users/smarterclayton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/smarterclayton/subscriptions","organizations_url":"https://api.github.com/users/smarterclayton/orgs","repos_url":"https://api.github.com/users/smarterclayton/repos","events_url":"https://api.github.com/users/smarterclayton/events{/privacy}","received_events_url":"https://api.github.com/users/smarterclayton/received_events","type":"User","site_admin":false},"created_at":"2015-10-19T23:52:04Z","updated_at":"2015-10-19T23:52:04Z","body":"Since this halves the space available for annotations on every resource, I\nthink it should be more narrowly scoped.  Doubling the annotation size I\nthink puts us above the etcd 2.0 value limit.\n\nOn Oct 19, 2015, at 6:22 PM, Brian Grant <notifications@github.com> wrote:\n\n@liggitt <https://github.com/liggitt> Access to historic resourceVersions\nvia the API is not sufficient. @jackgr <https://github.com/jackgr> or I\nshould write up a design doc at some point, but you can see a concrete\nexample here: #13007 (comment)\n<https://github.com/kubernetes/kubernetes/pull/13007#discussion_r38440152>\n\nWe could make apply opt-in by only creating the annotations in apply, and\notherwise only updating them if they already exist.\n\nRe. performance: The impact was not measured, no. I'm not concerned so much\nabout the performance of apply itself. In general, we need to move\neverything towards writing and reading (#1459\n<https://github.com/kubernetes/kubernetes/issues/1459>) just the parts of\nresources they need to touch.\n\nNote that pods, which should be the most numerous and most frequently\nupdated resources, should not normally have the annotations applied, since\nusers should be creating pods via controllers.\n\n—\nReply to this email directly or view it on GitHub\n<https://github.com/kubernetes/kubernetes/issues/15878#issuecomment-149364427>\n.\n"}}