admin管理员组文章数量:1134247
Here is minimum code to reproduce this. I am using GKE.
curl | bash
helm repo add ingress-nginx --force-update
helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx \
--namespace nginx-ingress --create-namespace \
--set controller.service.loadBalancerIP="35.238.217.163" \
--set controller.service.type=LoadBalancer \
--set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux
helm repo add jetstack --force-update
helm upgrade --install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.16.2 \
--set crds.enabled=true
Getting the logs of cert manager kubectl logs cert-manager-startupapicheck-qzrqw -n cert-manager
it seems to try to do a HTTPS call to :443, which would fail because it doesn't have a signed certificate yet from anywhere. Is there a way to switch this to an HTTP call? It makes no sense to me.
I0108 00:52:35.104988 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \":443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
I0108 00:52:40.327920 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \":443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
I0108 00:52:45.066769 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \":443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
Here is minimum code to reproduce this. I am using GKE.
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx --force-update
helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx \
--namespace nginx-ingress --create-namespace \
--set controller.service.loadBalancerIP="35.238.217.163" \
--set controller.service.type=LoadBalancer \
--set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux
helm repo add jetstack https://charts.jetstack.io --force-update
helm upgrade --install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.16.2 \
--set crds.enabled=true
Getting the logs of cert manager kubectl logs cert-manager-startupapicheck-qzrqw -n cert-manager
it seems to try to do a HTTPS call to https://cert-manager-webhook.cert-manager.svc:443, which would fail because it doesn't have a signed certificate yet from anywhere. Is there a way to switch this to an HTTP call? It makes no sense to me.
I0108 00:52:35.104988 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \"https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
I0108 00:52:40.327920 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \"https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
I0108 00:52:45.066769 1 api.go:106] "Not ready" logger="cert-manager.startupapicheck.checkAPI" err="Internal error occurred: failed calling webhook \"webhook.cert-manager.io\": failed to call webhook: Post \"https://cert-manager-webhook.cert-manager.svc:443/mutate?timeout=30s\": tls: failed to verify certificate: x509: certificate signed by unknown authority"
Share
Improve this question
asked Jan 8 at 0:59
Souradeep NandaSouradeep Nanda
3,2782 gold badges33 silver badges48 bronze badges
1 Answer
Reset to default 1If you want to switch to HTTP call edit the deployment of cert-manager and cert-manager-webhook and configure the webhook settings as mentioned below:
apiVersion: apps/v1
kind: Deployment
metadata:
name: cert-manager
namespace: cert-manager
spec:
template:
spec:
containers:
name: cert - manager
env:
- name: WEBHOOK_HTTP
value: “true”
- name: WEBHOOK_TLS_DISABLE
value: “true”
Here, setting WEBHOOK_TLS_DISABLE to true will allow the webhook to communicate over HTTP instead of HTTPS.Once this is done apply the changes and restart the cert-manager pod so the changes can take effect.
$Kubectl apply -f <your-modified-cert-manager-deployment>.yaml
$Kubectl rollout restart deployment
$Cert-manager -n cert-manager
This will allow cert-Manager to start and initialize the webhook without requiring valid HTTPS certificates immediately.
Note: If you want to stick to HTTPS and avoid switching to HTTP, you could configure Cert-manager to use a self-signed certificate for the webhook by generating a certificate for the webhook , by this way cert-manager would trust its own self signed cert and avoid errors during initial startup.
Self-signed certificates fall short of offering every security feature that a CA-signed certificate is supposed to offer.
本文标签:
版权声明:本文标题:nginx - Certmanager tries to use HTTPS inside the cluster and fails when it gets self signed certificates - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736765865a1951812.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论