{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18610","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18610/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18610/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18610/events","html_url":"https://github.com/kubernetes/kubernetes/issues/18610","id":121822995,"number":18610,"title":"[Component Registration] Phase 1 - Simplify Endpoints","user":{"login":"karlkfi","id":3980984,"avatar_url":"https://avatars.githubusercontent.com/u/3980984?v=3","gravatar_id":"","url":"https://api.github.com/users/karlkfi","html_url":"https://github.com/karlkfi","followers_url":"https://api.github.com/users/karlkfi/followers","following_url":"https://api.github.com/users/karlkfi/following{/other_user}","gists_url":"https://api.github.com/users/karlkfi/gists{/gist_id}","starred_url":"https://api.github.com/users/karlkfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karlkfi/subscriptions","organizations_url":"https://api.github.com/users/karlkfi/orgs","repos_url":"https://api.github.com/users/karlkfi/repos","events_url":"https://api.github.com/users/karlkfi/events{/privacy}","received_events_url":"https://api.github.com/users/karlkfi/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/api","name":"area/api","color":"e1ed21"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/extensibility","name":"area/extensibility","color":"ffaa04"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/monitoring","name":"area/monitoring","color":"fef2c0"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/apiserver","name":"component/apiserver","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/controller-manager","name":"component/controller-manager","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/kubelet","name":"component/kubelet","color":"0052cc"},{"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/kind/design","name":"kind/design","color":"c7def8"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/kind/enhancement","name":"kind/enhancement","color":"c7def8"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/kind/feature","name":"kind/feature","color":"c7def8"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/api","name":"team/api","color":"d2b48c"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/team/mesosphere","name":"team/mesosphere","color":"d2b48c"}],"state":"open","locked":false,"assignee":{"login":"karlkfi","id":3980984,"avatar_url":"https://avatars.githubusercontent.com/u/3980984?v=3","gravatar_id":"","url":"https://api.github.com/users/karlkfi","html_url":"https://github.com/karlkfi","followers_url":"https://api.github.com/users/karlkfi/followers","following_url":"https://api.github.com/users/karlkfi/following{/other_user}","gists_url":"https://api.github.com/users/karlkfi/gists{/gist_id}","starred_url":"https://api.github.com/users/karlkfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karlkfi/subscriptions","organizations_url":"https://api.github.com/users/karlkfi/orgs","repos_url":"https://api.github.com/users/karlkfi/repos","events_url":"https://api.github.com/users/karlkfi/events{/privacy}","received_events_url":"https://api.github.com/users/karlkfi/received_events","type":"User","site_admin":false},"milestone":null,"comments":1,"created_at":"2015-12-12T01:18:17Z","updated_at":"2015-12-12T01:37:15Z","closed_at":null,"body":"Phase 1 of [phased changes](https://github.com/mesosphere/kubernetes/blob/component-registration-proposal/docs/proposals/component-registration.md#phased-changes) from the Component Registration proposal: #13216\r\n\r\n1. Add a new API resource (ExternalServiceProvider) that represents a non-pod service provider\r\n  - Require specification of a network route (host[:port])\r\n  - Allow specification liveness and readiness probe methods\r\n  - Allow storage of the last known status (list of conditions)\r\n2. Add (or modify) a controller (e.g. EndpointsController) to probe ExternalServiceProviders and update their status\r\n3. Update EndpointsController to manage Endpoints based on both Pod and ExternalServiceProvider status\r\n4. Update kubectl to allow management of ExternalServiceProviders\r\n\r\nEndpoints should continue to be reverse compatible. It must continue to be possible for users or automated agents to specify Endpoints. However, the primary usage pattern going forward should be for users/agents to create ExternalServiceProviders instead and let an automated process (controller) handle updating Endpoints from the ExternalServiceProviders.\r\n\r\nOne primary goal for this change is to allow the distinction between Spec and Status when inquiring about external endpoints, and the robustness and extensibility of multiple Spec permutations and Status conditions that that design enables. The Endpoints API resource has an \"clever\" design for its original purpose, but it's become evident trying to extend it that it is now both confusing and hard to use, as-is. We would like to transition Endpoints to being primarily a read-only resource from the user's perspective, generated and updated by k8s components/controllers/addons.\r\n\r\nAnother primary goal of this change is that with the increased flexibility that ExternalServiceProvider provides, it can be used to represent k8s components that are not hosted on k8s. This would be done with labels, and will be pursued in subsequent Component Registration phases.\r\n\r\nAs a secondary goal, the addition of ExternalServiceProviders allows users to generate lists of ExternalServiceProviders and Pods with similar labels. This will be useful for bootstrapping, especially, as components may be initially deployed as ExternalServiceProviders and then migrate to being Pods. Having these resources be similar in API makes this kind of process easier. In a later phase, it will also enable improving the expressiveness of the Service API to represent both internal and external service providers more dynamically (e.g aggregate status)."},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/164094466","html_url":"https://github.com/kubernetes/kubernetes/issues/18610#issuecomment-164094466","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/18610","id":164094466,"user":{"login":"karlkfi","id":3980984,"avatar_url":"https://avatars.githubusercontent.com/u/3980984?v=3","gravatar_id":"","url":"https://api.github.com/users/karlkfi","html_url":"https://github.com/karlkfi","followers_url":"https://api.github.com/users/karlkfi/followers","following_url":"https://api.github.com/users/karlkfi/following{/other_user}","gists_url":"https://api.github.com/users/karlkfi/gists{/gist_id}","starred_url":"https://api.github.com/users/karlkfi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karlkfi/subscriptions","organizations_url":"https://api.github.com/users/karlkfi/orgs","repos_url":"https://api.github.com/users/karlkfi/repos","events_url":"https://api.github.com/users/karlkfi/events{/privacy}","received_events_url":"https://api.github.com/users/karlkfi/received_events","type":"User","site_admin":false},"created_at":"2015-12-12T01:37:15Z","updated_at":"2015-12-12T01:37:15Z","body":"Work & review will be in a PR, of course, but I wanted to make sure we were all on the same page for this truncated proposal of just Component Registration Phase 1.\r\n\r\nBulk subscribing parties that may be interested. Feel free to unsubscribe. Just trying to avoid the word of mouth baton handoff chain that happened with the original proposal.\r\n\r\nProposal Reviewers: @jbeda @lavalamp @smarterclayton @bgrant0607 @brendandburns\r\nProposal Commenters: @gmarek @timothysc  @davidopp @thockin @roberthbailey @fabioy @pmorie\r\nRelated Groups: @kubernetes/kube-api @kubernetes/kubectl @kubernetes/goog-control-plane "}}