{"action":"opened","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/65790","repository_url":"https://api.github.com/repos/kubernetes/kubernetes","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/65790/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/65790/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/65790/events","html_url":"https://github.com/kubernetes/kubernetes/issues/65790","id":338082411,"node_id":"MDU6SXNzdWUzMzgwODI0MTE=","number":65790,"title":"[CRD] No-op conversion should not be the default conversion","user":{"login":"mbohlool","id":1613024,"node_id":"MDQ6VXNlcjE2MTMwMjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1613024?v=4","gravatar_id":"","url":"https://api.github.com/users/mbohlool","html_url":"https://github.com/mbohlool","followers_url":"https://api.github.com/users/mbohlool/followers","following_url":"https://api.github.com/users/mbohlool/following{/other_user}","gists_url":"https://api.github.com/users/mbohlool/gists{/gist_id}","starred_url":"https://api.github.com/users/mbohlool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbohlool/subscriptions","organizations_url":"https://api.github.com/users/mbohlool/orgs","repos_url":"https://api.github.com/users/mbohlool/repos","events_url":"https://api.github.com/users/mbohlool/events{/privacy}","received_events_url":"https://api.github.com/users/mbohlool/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"mbohlool","id":1613024,"node_id":"MDQ6VXNlcjE2MTMwMjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1613024?v=4","gravatar_id":"","url":"https://api.github.com/users/mbohlool","html_url":"https://github.com/mbohlool","followers_url":"https://api.github.com/users/mbohlool/followers","following_url":"https://api.github.com/users/mbohlool/following{/other_user}","gists_url":"https://api.github.com/users/mbohlool/gists{/gist_id}","starred_url":"https://api.github.com/users/mbohlool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbohlool/subscriptions","organizations_url":"https://api.github.com/users/mbohlool/orgs","repos_url":"https://api.github.com/users/mbohlool/repos","events_url":"https://api.github.com/users/mbohlool/events{/privacy}","received_events_url":"https://api.github.com/users/mbohlool/received_events","type":"User","site_admin":false},"assignees":[{"login":"mbohlool","id":1613024,"node_id":"MDQ6VXNlcjE2MTMwMjQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1613024?v=4","gravatar_id":"","url":"https://api.github.com/users/mbohlool","html_url":"https://github.com/mbohlool","followers_url":"https://api.github.com/users/mbohlool/followers","following_url":"https://api.github.com/users/mbohlool/following{/other_user}","gists_url":"https://api.github.com/users/mbohlool/gists{/gist_id}","starred_url":"https://api.github.com/users/mbohlool/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mbohlool/subscriptions","organizations_url":"https://api.github.com/users/mbohlool/orgs","repos_url":"https://api.github.com/users/mbohlool/repos","events_url":"https://api.github.com/users/mbohlool/events{/privacy}","received_events_url":"https://api.github.com/users/mbohlool/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-07-03T23:14:12Z","updated_at":"2018-07-03T23:14:12Z","closed_at":null,"author_association":"MEMBER","body":"In designing new conversions for CRDs we realized we would have a problem on the downgrade path if we default to no-op conversion all the time (as we do in 1.11). Assume we add some other conversions, e.g. webhook conversion. User defines two version and a conversion webhook to convert v1 to v2, assuming v1 is the storage version. The schema for v1 and v2 could be completely different and a controller/client working with v1 can fail unexpectedly if we give it v2 object (or vice versa). Now if for some reason the master is downgraded to 1.11, the default conversion will kick in and v1 and v2 object will have the same schema which fail some clients/controllers in a hard-to-debug manner.\r\n\r\nOne possible solution is to add a Conversion Strategy and set it to no-op by default in 1.11.1:\r\n\r\n```\r\n...\r\nspec:\r\n  conversion:\r\n    strategy: no-op\r\n...\r\n```\r\n\r\nand set this strategy to something else if we introduced a new conversion like webhook:\r\n\r\n```\r\n...\r\nspec:\r\n  conversion:\r\n    strategy: external\r\n...\r\n```\r\n\r\nnow if we switch back to 1.11, the strategy value `external` is unrecognized and API server should stop serving CRD with proper error messages/channel (e.g. a condition)."}}
{"actor":{"display_login":"mbohlool"}}