{"action":"created","issue":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13216","labels_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13216/labels{/name}","comments_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13216/comments","events_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13216/events","html_url":"https://github.com/kubernetes/kubernetes/pull/13216","id":103325182,"number":13216,"title":"[Proposal] Component Registration","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/availability","name":"area/availability","color":"a10d01"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/area/cluster-lifecycle","name":"area/cluster-lifecycle","color":"d4c5f9"},{"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/HA","name":"area/HA","color":"bfd4f2"},{"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/area/storage","name":"area/storage","color":"006b75"},{"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/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/kubectl","name":"component/kubectl","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/component/scheduler","name":"component/scheduler","color":"0052cc"},{"url":"https://api.github.com/repos/kubernetes/kubernetes/labels/help-wanted","name":"help-wanted","color":"006b75"},{"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/size/L","name":"size/L","color":"ee9900"},{"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":"lavalamp","id":647318,"avatar_url":"https://avatars.githubusercontent.com/u/647318?v=3","gravatar_id":"","url":"https://api.github.com/users/lavalamp","html_url":"https://github.com/lavalamp","followers_url":"https://api.github.com/users/lavalamp/followers","following_url":"https://api.github.com/users/lavalamp/following{/other_user}","gists_url":"https://api.github.com/users/lavalamp/gists{/gist_id}","starred_url":"https://api.github.com/users/lavalamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lavalamp/subscriptions","organizations_url":"https://api.github.com/users/lavalamp/orgs","repos_url":"https://api.github.com/users/lavalamp/repos","events_url":"https://api.github.com/users/lavalamp/events{/privacy}","received_events_url":"https://api.github.com/users/lavalamp/received_events","type":"User","site_admin":false},"milestone":null,"comments":72,"created_at":"2015-08-26T17:27:59Z","updated_at":"2015-09-16T21:41:21Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/kubernetes/kubernetes/pulls/13216","html_url":"https://github.com/kubernetes/kubernetes/pull/13216","diff_url":"https://github.com/kubernetes/kubernetes/pull/13216.diff","patch_url":"https://github.com/kubernetes/kubernetes/pull/13216.patch"},"body":"Design proposal based on conversations started in #11908, followed by a proof of concept implementation #12324.\r\n\r\nMoving discussion to this PR to get everyone on the same page with the current status of the proposal.\r\n\r\nFeel free to markup the proposal document with line comment or post more general questions/comments in the PR comments.\r\n\r\nSee the [rendered markdown](https://github.com/mesosphere/kubernetes/blob/component-registration-proposal/docs/proposals/component-registration.md)."},"comment":{"url":"https://api.github.com/repos/kubernetes/kubernetes/issues/comments/140902373","html_url":"https://github.com/kubernetes/kubernetes/pull/13216#issuecomment-140902373","issue_url":"https://api.github.com/repos/kubernetes/kubernetes/issues/13216","id":140902373,"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-09-16T21:41:21Z","updated_at":"2015-09-16T21:41:21Z","body":"The Service model currently only contains explicit addresses in the Spec. The target addresses are implicit, determined by joining a Service with other models (Pods or Endpoints currently, Pods or ExternalServiceTargets in the proposal). I considered adding the target addresses to the Status, but the target addresses are complex enough (as shown by Endpoints) and mutable enough (especially considering that they each have their own array of conditions) that it would have made the Service model way too deep and expensive to query.\r\n\r\nThat's why we proposed an external top-level (namespaced) model (ExternalServiceTargets). That way the user can join the data depending on their needs. There is a desire for making those joins server-side, to be more efficient and easier to query, but I don't think we should store the data joined (denormalized).\r\n\r\nI commented on this a bit in the Next Steps section."}}