-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Add new external-dns addon for exposing ingress & LoadBalancer external IPs to the host #9000
Conversation
Thanks for your pull request. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please follow instructions at https://git.k8s.io/community/CLA.md#the-contributor-license-agreement to sign the CLA. It may take a couple minutes for the CLA signature to be fully registered; after that, please reply here with a new comment and we'll verify. Thanks.
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. I understand the commands that are listed here. |
Welcome @segevfiner! |
Hi @segevfiner. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. 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. |
Can one of the admins verify this patch? |
/assign @josedonizetti |
hi @segevfiner this seems to be an interesting addon, do you mind pulling upstream and putting an example output in the description how to use this addon? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if you please put steps in the description how to use this addon with example output this would be a good addon, if you can also document if it works with all drivers or only VM drivers?
To make this operational, we still need to somehow set the
But I wasn't sure how to get the addon infrastructure of minikube render that into a templated deployment spec. The rest of the stuff in the TODO list I left in the PR description are about polishing this as far as I remember. For trying it out:
And you should be able to query the created DNS server for it, but we need to fix the expose to host thing so you can do so from the host. See for my initial POC of this #8980 (comment) for more information. I only tested this with VM drivers, it likely suffers from whatever issue that prevent the ingress addon from working, that I don't fully understand, on the docker driver, as this too tries to expose a port via the host machine. Though it tries to do so differently using |
9e607d5
to
46e50b2
Compare
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: segevfiner The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
hi @segevfiner thanks for this PR, do you mind adding a tutorial of using this new addon with examples |
I will once we can get it fully working, I need help with the last issue I described here: #9000 (comment) The rest of the things mentioned in the PR description are about polishing it, stuff that I wasn't sure about and only someone more familiar with this project might be able to help with. |
@segevfiner Keep up the great work! 👍 This is a fantastic idea. It's also PR 9,000 :) |
is this ready to merge? |
See the PR description for the list of remaining tasks. The major ones being figuring out how to handle |
Codecov Report
@@ Coverage Diff @@
## master #9000 +/- ##
=======================================
Coverage 29.05% 29.05%
=======================================
Files 171 171
Lines 10443 10443
=======================================
Hits 3034 3034
Misses 6987 6987
Partials 422 422 |
@segevfiner: PR needs rebase. 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. |
@segevfiner Is this still something you're working on? |
@segevfiner I'm going to close this PR due to long duration without activity, but feel free to reopen if you have time to work on this again. |
(off-topic: @spowelljr you must have had a reminder or something, didn't you? Because you closed this PR almost exactly 1 week after you last commented, off by only +3 minutes!) |
@bl-ue That's a really good observation! But actually there's no reminder, every Wednesday 11-12 PST minikube maintainers do through PRs and issues to comment/label/close. The 3 minute difference is somewhat of a coincidence, but would have been within an hour if that makes sense. |
Yeah that does make sense. Thank you! |
An initial version of an addon for
external-dns. Based on ExternalDNS for CoreDNS with minikube. Cobbled together from that tutorial, upstream helm charts, and the way minikube/kubeadm deploy etcd & CoreDNS. Those manifests probably
need some reviewing and tweaking (See TODO below)
Add an addon for installing external DNS. See https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/coredns.md which uses CoreDNS as the DNS server.
Unlike ingress-dns, which is minikube specific:
Some notes about configuring the host that also apply for ingress-dns:
systemd-resolved
, you can usesystemd.network
units for configuring DNS domain specific DNS servers. Using theDomains
&DNS
keys in a new network unit matching the required interface. I used it before, but don't remember the details.At this point it is still WIP/incomplete, I will need some help from someone to finish this according to the TODO list below and any other feedback.
TODO
readinessProbe
/livenessProbe
, what times, thresholds should be used, are the scripts, endpoints correct, etc. (I kinda copied them from somewhere and they are not necessarily optimal)readinessProbe
for etcd breaks it because the headless service doesn't register it until it is ready but it queries for it to become ready, At first I tried just disabling it, but that also didn't always work, not sure why, so I addedpublishNotReadyAddresses
to the service, which might be correct anyhow, though not sure if I should then add a separate service that does not publish unready addresses, though it is a single node deployment so might not matter much either way.priorityClass
?tolerations
?resources
correctly.hostPath
instead of PVC for etcd? or maybe make it ephemeral and not use a volume at all?app
?ClusterIP
service and use that instead, might not matter much for a single node.cluster.local
, which is not desired on the host, had to explicitlyexcept
it. Not sure if that's the best config. I can't justdnsPolicy: Default
like the in-cluster CoreDNS because the CoreDNS server needs to resolve the etcd server address.hostPort
to expose it. This also requireshostIP
due to having another DNS server listening on localhost on theminikube
VM, this needs to be set automatically but I'm not sure how to add such a template parameter, as in: where to extract it from inside minikube. Just usinghostNetwork
will be problematic with accessing etcd.README.md
explaining how to configure host, etc. Likeingress-dns
has. Maybe also an example, though upstream examples using the appropriate domain should work too.test
, we might want to make that configurable.ingress
&ingress-dns
on Docker driver, so might need the same provisions and documentation as them.fixes #8980