-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Latest ingress-gce does not work with a new ingress resource #606
Comments
I should add i see no modifications append to the ingress at any point |
Adding that i have he following role for tiller
and installed cert-manager with
|
Also, despite the annotations on the ingress cert-manager seems to spawn a http resolver - another pod i assume to intercept the calls rather than modifying the ingress
If i install via
and deploy just the issuer, i get
|
I suspect it's caused by a recent change in k8s: Previously loadbalancer-controller logs the non-exist secret and then proceeds to create the /.well-known/acme-challenge/... path rule in gclb. Once this rule is created, the self check will pass then cert-manager will obtain the new cert and create the secret. But now the loadbalancer-controller just gets stuck waiting the secret to be created without creating the path rules in gclb. The walkaround is just to manually create the secret first (must be in valid format, we just copied the secret from our staging cluster). After that cert-manager will do the normal acme workflow and update the k8s secret and gclb. |
Also running into this :( |
@chengji77 thanks very much for digging that out - I had not seen this change 😬 I have made a comment here: kubernetes/ingress-gce#112 (comment) It's a real shame to see yet another divergence in how ingress controllers behave 😢 this will indeed break both kube-lego and cert-manager when used with GCLB, unless some form of certificate already exists (this must be expired or nearing expiry in order for cert-manager to trigger renewal) |
I followed the workaround mentioned above and while my ingress is able to pull the manually created (and bogus) secret, I am still getting failed self checks immediately following the pull of the secret. |
It's also worth noting that the ACME server will refuse to validate domain ownership by HTTPS (regardless whether it is valid or invalid). You must make sure the challenge endpoint is accessible over http on port 80 (you can test this using |
So what I am hearing is that the ingress must come completely online before the self check will stop failing (and the secret gets re-generated)? |
Yes, it will take 10 minutes or so for any changes to your load balancers to be performed anyway. You will need to supply a certificate that is nearing expiry (within 30d of expiry) the first time you issue a certificate, from what I understand of the problem. It doesn't matter which CA signed the cert, and it can be self signed too. This will then: a) cause ingress-gce to serve with the provided, nearing expiry cert. |
Must the ingress controller be completely online before this will pass? I completely nuked the deployment and reapplied (cert, issuer, ingress, etc.. everything except the manually created cert noted as a workaround ) and I am still getting a failed selfcheck |
@thebigredgeek you need to be very patient when using GCLB's - they are extremely slow to update. |
Ok, so if the cert is set to expire in 365 this won't work. So it sounds like i need to create a closer-to-expiry cert |
Correct - FWIW, this is not how we expect users to use cert-manager with GCLB ingresses, and is a regression caused by kubernetes/ingress-gce#112 that we need to fix 😄 |
Yeah I saw that. No worries, and thanks for your help so far! |
If i create a cert that is already expired, that should work too yeah? |
@thebigredgeek What I did was to use a cert from our staging environment, which doesn't contain the domain for prod. This also triggered cert-manager to renew the cert. |
@munnerz seems to still be happening 30 minutes later :(. It shouldn't take this long to self correct, should it? |
@thebigredgeek nope - are you on Kubernetes slack? Can you send over your full cert-manager logs, as well as the output of We can then update this issue if we come to a resolution that's relevant 😄 |
Sure, I’ll hop on tomorrow (I’m US pacific) |
Just slacked you on k8s |
Any traction here? Still trying to figure out how to make this work |
same problem here, we are using the manually created tls secret for now. |
same problem ! working with 1.9.7 GKE cluster |
are there any updates here ? |
got the same problem! we're using GKE 1.10.2-gke.3 |
I had this same issue, or it at least behaved the same - secret was not being created. What ended up working for me was the same as mentioned above. I generated a self-signed certificate expiring in one day and manually created the secret.
After this, cert-manager successfully issued a new certificate. |
We're having the same issue on GKE cluster at 1.10.4-gke.2 the generation of the certificate above worked although it's far from ideal for obvious reasons. |
having these problems also |
I have opened kubernetes/ingress-gce#388 which will fix this issue. As another alternative - for now, ingress-gce users can manually specify a Certificate resource. You will need to exclude the TLS section from your Certificate whilst this is provisioning, but once done, you should be good to add it back in referencing the newly created Secret. |
I just encountered this issue using the latest stable/ingress-nginx and stable/cert-manager charts as I I had to precreate the cert just like for GCE above to make it work with ingress-nginx, other nginx spent all day whining the secret didn't exist which prevented cert-manager from doing its job. Did ingress-nginx copy GCE?
The moment I created the secret
ingress-nginx was however generating a self-signed cert, it just seems to completely dropped routing the acme challenge while it was busy throwing a fit over the missing secret |
I tried creating the secret manually like mentioned above but it still doesn't work for me. All I'm getting is:
EDIT: |
This is working now on 1.10.7-gke.2, You'll see a warming now in your service:
|
Awesome, thanks for confirming it has rolled out!
I'm going to close this issue now then as the issue is resolved.
We'll soon be in a better position to workaround this limitation in future
from our end too, to avoid the deprecated behaviour warning.
/close
…On Tue, 25 Sep 2018 at 16:56, Brett Curtis ***@***.***> wrote:
This is working now on 1.10.7-gke.2, You'll see a warming now in your
service:
Could not find TLS certificates. Continuing setup for the load balancer to
serve HTTP. Note: this behavior is deprecated and will be removed in a
future version of ingress-gce
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#606 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAMbPzFWfxhUNegJqAHp-z6ns5aHHo13ks5uelIwgaJpZM4UXCIT>
.
|
@munnerz: Closing this issue. In response to this:
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 am seeing the warning as well, is there any open issue for this that I can subscribe for updates on it? 😄 |
cert-manager-v0.3.1
**Ingress isn't modified and thus he challenge fails when its routed to the proxy behind the ingress **:
The ingress to be modified, thus causing the challenge to be intercepted:
How to reproduce it (as minimally and precisely as possible):
My stack is ingress->service->nginx-proxy
Ingress as follows, which exists and is bound to static global ip - the DNS entry resolves.
Service:
The site is available over http and resolves.
Issuer
Cert
Creating the issuer and then cert, logs redacted:
In he nginx logs for the app i see the challenge - tweaking the proxy to 404,200 or 301 makes no difference.
Anything else we need to know?:
GCE:
kubectl version
):The text was updated successfully, but these errors were encountered: