Сертификаты Cert-manager не найдены и проблемы не созданы
Я следовал https://docs.cert-manager.io/en/venafi/tutorials/quick-start/index.html от начала до конца, и все, кажется, работает, за исключением того, что я не получаю внешний IP для моего входа,
NAME HOSTS ADDRESS PORTS AGE
staging-site-ingress staging.site.io,staging.admin.site.io, 80, 443 1h
Хотя я могу использовать внешний ip контроллера входа nginx и использовать dns для доступа к сайтам. Когда я перехожу на URL-адреса, меня перенаправляют на https, поэтому я предполагаю, что это работает нормально.
Он перенаправляет на https, но все равно говорит "не защищен", поэтому он не получает сертификат.
Когда я отлаживаю, я получаю следующую информацию:
Вход:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreateCertificate 54m cert-manager Successfully created Certificate "tls-secret-staging"
Normal UPDATE 35m (x3 over 1h) nginx-ingress-controller Ingress staging/staging-site-ingress
Normal CreateCertificate 23m (x2 over 35m) cert-manager Successfully created Certificate "letsencrypt-staging-tls"
Сертификат:
Status:
Conditions:
Last Transition Time: 2019-02-27T14:02:29Z
Message: Certificate does not exist
Reason: NotFound
Status: False
Type: Ready
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal OrderCreated 3m (x2 over 14m) cert-manager Created Order resource "letsencrypt-staging-tls-593754378"
Секрет:
Name: letsencrypt-staging-tls
Namespace: staging
Labels: certmanager.k8s.io/certificate-name=staging-site-io
Annotations: <none>
Type: kubernetes.io/tls
Data
====
ca.crt: 0 bytes
tls.crt: 0 bytes
tls.key: 1679 bytes
Порядок:
Status:
Certificate: <nil>
Finalize URL:
Reason:
State:
URL:
Events: <none>
Таким образом, кажется, что что-то идет не так в порядке, и никаких проблем не создается.
Вот мои ingress.yaml и эмитент.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: staging-site-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
certmanager.k8s.io/issuer: "letsencrypt-staging"
certmanager.k8s.io/acme-challenge-type: http01
spec:
tls:
- hosts:
- staging.site.io
- staging.admin.site.io
- staging.api.site.io
secretName: letsencrypt-staging-tls
rules:
- host: staging.site.io
http:
paths:
- backend:
serviceName: frontend-service
servicePort: 80
path: /
- host: staging.admin.site.io
http:
paths:
- backend:
serviceName: frontend-service
servicePort: 80
path: /
- host: staging.api.site.io
http:
paths:
- backend:
serviceName: gateway-service
servicePort: 9000
path: /
apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
name: letsencrypt-staging
namespace: staging
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: hello@site.io
privateKeySecretRef:
name: letsencrypt-staging-tls
http01: {}
Кто-нибудь знает, что я могу сделать, чтобы это исправить или что пошло не так? Certmanager установлен правильно на 100%, я просто не уверен насчет входа и что пошло не так в порядке.
Заранее спасибо!
РЕДАКТИРОВАТЬ: Я нашел это в nginx-ingress-controller:
W0227 14:51:02.740081 8 controller.go:1078] Error getting SSL certificate "staging/letsencrypt-staging-tls": local SSL certificate staging/letsencrypt-staging-tls was not found. Using default certificate
Он становится спамом, загрузка процессора всегда равна 0,003, а график ЦП заполнен (другие службы почти ничего не значат)
2 ответа
Однажды я наткнулся на ту же проблему, следуя точно тому же официальному учебнику. Как упомянул @mikebridge, проблема заключается в несовпадении пространства имен Issuer/Secret.
Для меня лучше всего было переключиться с Issuer на ClusterIssuer, который не ограничен одним пространством имен.
Причина, по которой ваш заказ на сертификат не выполняется, заключается в том, что задача не может быть успешно завершена. Просмотрите конфигурацию своего решателя в вашем издателе или ClusterIssuer.
Смотрите мой ответ здесь для более подробной информации. /questions/24796872/sertifikat-kubernetes-godaddy/63106232#63106232