Enhancements: Support services that reference an external service

Created on 19 Jul 2016  Â·  35Comments  Â·  Source: kubernetes/enhancements

Description

Services should be able to reference an external DNS address instead of only pods, which will allow application authors to reference services that exist off platform, on other clusters, or locally.

Owner @rata

Progress Tracker

  • [x] Before Alpha

    • [x] Design Approval

    • [x] [Design Proposal](https://github.com/kubernetes/kubernetes/pull/29073)

    • [x] Initial API review (if API). Maybe same PR as design doc. PR-NUMBER



      • Any code that changes an API (/pkg/apis/...)


      • cc @kubernetes/api



    • [x] Identify shepherd (your SIG lead and/or [email protected] will be able to help you). My Shepherd is: @smarterclayton + @thockin



      • A shepherd is an individual who will help acquaint you with the process of getting your feature into the repo, identify reviewers and provide feedback on the feature. They are _not_ (necessarily) the code reviewer of the feature, or tech lead for the area.


      • The shepherd is _not_ responsible for showing up to Kubernetes-PM meetings and/or communicating if the feature is on-track to make the release goals. That is still your responsibility.



    • [x] Identify secondary/backup contact point. My Secondary Contact Point is: _replace.[email protected]_ (and/or GH Handle)

    • [x] Write (code + tests + docs) then get them merged. https://github.com/kubernetes/kubernetes/pull/30599

    • [ ] Code needs to be disabled by default. Verified by code OWNERS

    • [x] Minimal testing

    • [x] Minimal docs



      • cc @kubernetes/docs on docs PR


      • cc @kubernetes/feature-reviewers on this issue to get approval before checking this off


      • New apis: _Glossary Section Item_ in the docs repo: kubernetes/kubernetes.github.io



    • [x] Update release notes

  • [x] Before Beta

    • [x] Testing is sufficient for beta

    • [x] User docs with tutorials

    • _Updated walkthrough / tutorial_ in the docs repo: kubernetes/kubernetes.github.io

    • cc @kubernetes/docs on docs PR

    • cc @kubernetes/feature-reviewers on this issue to get approval before checking this off

    • [x] Thorough API review

    • cc @kubernetes/api

  • [x] Before Stable

    • [x] docs/proposals/foo.md moved to docs/design/foo.md

    • cc @kubernetes/feature-reviewers on this issue to get approval before checking this off

    • [x] Soak, load testing

    • [x] detailed user docs and examples

    • cc @kubernetes/docs

    • cc @kubernetes/feature-reviewers on this issue to get approval before checking this off

_FEATURE_STATUS is used for feature tracking and to be updated by @kubernetes/feature-reviewers._
FEATURE_STATUS: IN_DEVELOPMENT

More advice:

Design

Coding

  • Use as many PRs as you need. Write tests in the same or different PRs, as is convenient for you.
  • As each PR is merged, add a comment to this issue referencing the PRs. Code goes in the http://github.com/kubernetes/kubernetes repository,
    and sometimes http://github.com/kubernetes/contrib, or other repos.
  • When you are done with the code, apply the "code-complete" label.
  • When the feature has user docs, please add a comment mentioning @kubernetes/feature-reviewers and they will
    check that the code matches the proposed feature and design, and that everything is done, and that there is adequate
    testing. They won't do detailed code review: that already happened when your PRs were reviewed.
    When that is done, you can check this box and the reviewer will apply the "code-complete" label.

Docs

  • [ ] Write user docs and get them merged in.
  • User docs go into http://github.com/kubernetes/kubernetes.github.io.
  • When the feature has user docs, please add a comment mentioning @kubernetes/docs.
  • When you get LGTM, you can check this checkbox, and the reviewer will apply the "docs-complete" label.
sinetwork

Most helpful comment

Thanks for working on this feature, it's been very helpful.

All 35 comments

@rata do you think you'll be able to code this in time for 1.4?

On Mon, Jul 25, 2016 at 07:58:11AM -0700, Andy Goldstein wrote:

@rata do you think you'll be able to code this in time for 1.4?

My plan was to start working on this on Tuesday, as I have an exam on Tuesday at
university. IS this too late?

I think the change can be not so hard, for the quick look I had at th code (it
seems we just created a skydns backend in kube-dns, and seems is easy to add
another type response, CNAME, for what I looked).

But if you are concerned about this, please go ahead and work on this! I can
maybe join later and test or something :-)

@rata that should be fine. I was just checking in. Thanks!

@smarterclayton @rata which SIG is responsible for this feature?

I would assume network

@ncdc thanks

@ncdc @smarterclayton @thockin I'm more busy than I expected (at $DAYJOB and university) and I'm not sure I'll make it on time on this. Do you want to start working on this, and if I have some time maybe jump on this later?

I'm really really sorry, and I wish I could work on this, but I'm already late (planned to start 2 days ago) and more busy than I expected. I think it's better to say this early so this gets implemented in 1.4. But I'm really really sorry :-/

@smarterclayton Do you think you can find someone else to tackle? Or should we just punt to 1.5.

I'm also working on node-local services, so perhaps I can help with this. That way, I can blame myself for the ensuing rebases. :-)

@therc thanks again! :)

@therc thank you for your help, assigned you as an assignee.

In a meeting today, it was mentioned that this is missing v1.4. I'm moving to the v1.5 milestone. Please bring back to v1.4 if that's not accurate.

Two more things needed: rejecting Ports (as already agreed with @thockin) and teaching kubectl about the new field.

@therc Can you make sure the last few tickboxes are OK to be checked?

Targeting GA in 1.5.

This is mostly working already in 1.4, but it occurred to me that there's no way to create such a service from the command line without using a YAML/JSON file.

kubectl expose doesn't feel exactly right, because the whole point of ExternalName services is that there are no pods to be exposed. If that's still the way it's going to be done, the command line syntax will have to be changed from (-f FILENAME | TYPE NAME) ... to (-f FILENAME | --external-name NAME | TYPE NAME) ....

Opening an issue for that.

kubectl create service is the correct command tree to explore

On Thu, Oct 13, 2016 at 9:04 AM, Rudi C [email protected] wrote:

This is mostly working already in 1.4, but it occurred to me that there's
no way to create such a service from the command line without using a
YAML/JSON file.

kubectl expose doesn't feel exactly right, because the whole point of
ExternalName services is that there are no pods to be exposed. If that's
still the way it's going to be done, the command line syntax will have to
be changed from (-f FILENAME | TYPE NAME) ... to (-f FILENAME |
--external-name NAME | TYPE NAME) ....

Opening an issue for that.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/features/issues/33#issuecomment-253558868,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFVgVPmK08AXwK1Yw0eao88qgktxZ2Qiks5qzlaXgaJpZM4JQHJ2
.

Thanks for working on this feature, it's been very helpful.

@therc I don't think the CLI for this went in, did it? Any reason to not call what we have GA, anyway? Are you active on the CLI part or should we just open a new issue for it?

This is stable in 1.5? Are there docs?

The CLI did not, but the API change is in 1.4.

http://kubernetes.io/docs/user-guide/services/ - search for "ExternalName"

On Mon, Dec 12, 2016 at 6:28 PM, Jimmy Cuadra notifications@github.com
wrote:

This is stable in 1.5? Are there docs?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/features/issues/33#issuecomment-266617653,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFVgVKpwQ33RKcvMjd5az7o6_WdQP_VUks5rHgLcgaJpZM4JQHJ2
.

@smarterclayton @therc can you confirm the feature development has been completed and issue can be closed?

@therc Can we count on you for CLI wrapup? would love to close this...

@thockin @therc sooo, any final decision?

@therc ping?

On Thu, Jan 5, 2017 at 9:24 AM, Ihor Dvoretskyi notifications@github.com
wrote:

@thockin https://github.com/thockin @therc https://github.com/therc
sooo, any final decision?

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/features/issues/33#issuecomment-270702990,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFVgVB2ih9pim5d_LqxYdYzkyz-NZe7fks5rPSdKgaJpZM4JQHJ2
.

Just got back from vacation and a hectic office move, working my way through email backlog.
I can pick up any leftover items, but I think kubectl create support was implemented by @AdoHe in https://github.com/kubernetes/kubernetes/pull/34789
Was there anything else you had in mind? My next related step was allowing the built-in kubernetes.default service to also be an ExternalName service, to pave the way for a migration to api.kube-system or something along those lines. But if you have something else that's higher priority, I can tackle that first.

Oh, great, I missed that :) Can you cross-check the un-ticked boxes on
here, and if everything is done, we can close this out?

On Tue, Jan 24, 2017 at 9:27 AM, Rudi C notifications@github.com wrote:

Just got back from vacation and a hectic office move, working my way
through email backlog.
I can pick up any leftover items, but I think kubectl create support was
implemented by @AdoHe https://github.com/AdoHe in
kubernetes/kubernetes#34789
https://github.com/kubernetes/kubernetes/pull/34789
Was there anything else you had in mind? My next related step was allowing
the built-in kubernetes.default service to also be an ExternalName
service, to pave the way for a migration to api.kube-system or something
along those lines. But if you have something else that's higher priority, I
can tackle that first.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kubernetes/features/issues/33#issuecomment-274874963,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFVgVF0ojvj2dhIgnMo1TSq-xF7Qmqvzks5rVjSBgaJpZM4JQHJ2
.

Unfortunately, I think only Clayton or another owner can edit the issue description. I just went through the checklist and it looks to me like everything can be ticked off.

Regarding "detailed docs and examples", I have something with more use cases, originally for internal use, that I have almost entirely re-purposed as a blog post. I'm not sure how kosher it is to add links from Kubernetes docs to random external blog posts; I suspect not very, given link rot and the like. Perhaps I could re-adapt it again as a tutorial in the docs repo? This issue can be closed anyway.

DONE

@therc @thockin does this feature target 1.6 (as per @mdelio modified milestone) or it has been finally implemented in 1.5 yet?

If this is still 1.6, I'd like to reopen it and keep in this state during the release.

The main feature is in 1.5 already and can be used through YAML files. It's the kubectl support that will land in 1.6. I think it'd be worthy of a 1.5 cherrypick.

@idvoretskyi @therc yes, the kubectl support land in 1.6, shall we cherrypick it against 1.5?

We don't typically backport new features

Get it~

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AndiLi99 picture AndiLi99  Â·  13Comments

liggitt picture liggitt  Â·  7Comments

povsister picture povsister  Â·  5Comments

andrewsykim picture andrewsykim  Â·  12Comments

justinsb picture justinsb  Â·  11Comments