Kops: external-dns for kops

Created on 1 Oct 2017  路  25Comments  路  Source: kubernetes/kops

Owners have discussed this multiple times, but I am not finding an issue for this. I did find the issue in the external-dns project https://github.com/kubernetes-incubator/external-dns/issues/221.

The thought is that we would like to rely on external dns, so that our dns is far more flexible. Add a cloud provider and we could have dns support for it before we even have the provider, for instance. You want you dns in GCE and you cluster in aws, we can do that theoretically.

Background

We have two components that manage dns for our system.

  1. Protokube manages etcd dns so that we can have ha
  2. dns-controller manages control plane API dns for us, and people also use it for services and ingress as well.

Todo

  1. What gaps of support do we have with external dns with protokube? Can we vendor external dns and approach it that way?
  2. What gaps do we have with external dns and API? We have dns records for round robin master dns, we have records for loadbalancer, API and bastions.
  3. Do we have used cases that dns-controller provides that are not met by external-dns
  4. How do we do upgrades and rollbacks?
  5. How do we test?
  6. What API changes should we make in kops to support dns in aws, but a cluster in GCE? Very real world use case.
areDNS lifecyclrotten

Most helpful comment

  • multiple targets
  • internal alias records (for nodes)
  • node source
  • pod source
  • internal/external annotations
  • dns-contoller backwards compatibility for service, ingress, node, pod sources.
  • record caching so we don't get rate-limited

All 25 comments

@gambol99 @blakebarnett @sethpollack @geojaz @robinpercy @justinsb et al

What am I missing here?

Seems like it would make sense to just replace dns-controller with it first, then separately add support to protokube to use it? Have all the feature gaps between this and dns-controller been filled?

@blakebarnett someone needs to build a feature list for both and compare them ;) I do not know which features if any we are missing

The issue you linked in here does a pretty good job :)

And https://github.com/kubernetes/kops/blob/master/protokube/README.md has a section about dns and protokube

There are still a couple of comments on the linked issue that need to be resolved / documented.

support kops' internal/external annotations, find out what they do first

  • multiple targets
  • internal alias records (for nodes)
  • node source
  • pod source
  • internal/external annotations
  • dns-contoller backwards compatibility for service, ingress, node, pod sources.
  • record caching so we don't get rate-limited

I have an open PR for multiple targets https://github.com/kubernetes-incubator/external-dns/pull/326

And I already have the code for alias records, node source, pod source, and dns-contoller backwards compatibility, they just depend on each other so I need to open the PR's one at a time.

As for internal/external annotations @justinsb do we need that support? Or can that be limited to the backwards compatibility?

Also caching would be nice, but not sure if thats a blocker.

@sethpollack Kops compatibility is the main part of our next milestone. Sorry for the delay in reviewing the PR. We will look at at whenever there's time.

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

Prevent issues from auto-closing with an /lifecycle frozen comment.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or @fejta.
/lifecycle stale

/remove-lifecycle stale

So does this mean this won't get done?

The bot stuff?

If Kops moves to external-dns for internal stuff too (I think that would be great) but in my opinion there would need to be a way to support split horizon. Currently this is done by running two instances of external-dns on a cluster. Using --annotation-filter (I think?) you can have the public external-dns only add public records for a service that should be public and a catch-all external-dns that is limited to private zones.

I think this could be implemented by external-dns that comes with Kops in the future following the dns: private directive (where private could be private, public and maybe auto (equivalent to no --aws-zone-type flag in external-dns)

Then a further external-dns instance can be started manually outside of Kops for public / other zones.

Most of this is thinking out loud but may be worth adding to the to do. Just putting external-dns on a Kops cluster that picks up ALL hostnames by default and puts them in an auto-detected zone will break a lot of peoples setups.

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

/remove-lifecycle rotten

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle rotten

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

@fejta-bot: Closing this issue.

In response to this:

Rotten issues close after 30d of inactivity.
Reopen the issue with /reopen.
Mark the issue as fresh with /remove-lifecycle rotten.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

Was this page helpful?
0 / 5 - 0 ratings