Я настроил автоматическое управление сертификатами SSL несколько месяцев назад, как описано здесь: http://docs.cert -manager.io / en / latest / tutorials / acme / dns-validation.html для доменов: <myhost>.com
иdev.<myhost>.com
.Итак, у меня есть два пространства имен: prod
для <myhost>.com
и dev
для dev.<myhost>.com
.В каждом пространстве имен у меня есть входной контроллер и Certificate
ресурс для хранения сертификата в секрете.Он работает нормально и ClusterIssuer
автоматически обновляет сертификаты.
Но несколько дней назад я попытался добавить новый домен: test.<myhost>.com
в test
пространство имен с абсолютно такой же конфигурацией входа и сертификата, как в prod
илиdev
пространство имен (ожидаемое имя хоста и пространство имен):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
kubernetes.io/tls-acme: 'true'
name: app-ingress
namespace: test
spec:
tls:
- hosts:
- test.<myhost>.com
secretName: letsencrypt-tls
rules:
- host: test.<myhost>.com
http:
paths:
- backend:
serviceName: web
servicePort: 80
path: /
---
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: cert-letsencrypt
namespace: test
spec:
secretName: letsencrypt-tls
issuerRef:
name: letsencrypt-prod-dns
kind: ClusterIssuer
commonName: 'test.<myhost>.com'
dnsNames:
- test.<myhost>.com
acme:
config:
- dns01:
provider: dns
domains:
- test.<myhost>.com
, и эта конфигурация не работает: сертификат не может быть найден в секрете, вход использует "app-ingress-fake-Certificate". *Модуль 1021 *
cert-manager
показывает много похожих ошибок:
pkg/client/informers/externalversions/factory.go:72: Failed to list *v1alpha1.Challenge: challenges.certmanager.k8s.io is forbidden: User "system:serviceaccount:kube-system:cert-manager" cannot list challenges.certmanager.k8s.io at the cluster scope
pkg/client/informers/externalversions/factory.go:72: Failed to list *v1alpha1.Order: orders.certmanager.k8s.io is forbidden: User "system:serviceaccount:kube-system:cert-manager" cannot list orders.certmanager.k8s.io at the cluster scope
и certificate
не пытается получить сертификат (kubectl describe -ntest cert-letsencrypt
):
API Version: certmanager.k8s.io/v1alpha1
Kind: Certificate
Metadata: ...
Spec:
Acme:
Config:
Dns 01:
Provider: dns
Domains:
test.<myhost>.com
Common Name: test.<myhost>.com
Dns Names:
test.<myhost>.com
Issuer Ref:
Kind: ClusterIssuer
Name: letsencrypt-prod-dns
Secret Name: letsencrypt-tls
Events: <none>
Он должен иметь какой-либо статус в качестве сертификатов в других пространствах имен.
Я не могу понять, почему эта конфигурация работала раньше, но не может работать сейчас.
Я не уверен, что она связана, но яобновлен kubernetes с использованием Kops несколько недель назад, текущая версия:
Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.0", GitCommit:"0ed33881dc4355495f623c6f22e7dd0b7632b7c0", GitTreeState:"archive", BuildDate:"2018-10-12T16:56:06Z", GoVersion:"go1.10.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.6", GitCommit:"a21fdbd78dde8f5447f5f6c331f7eb6f80bd684e", GitTreeState:"clean", BuildDate:"2018-07-26T10:04:08Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}