Как заменить "фальшивый сертификат Kubernetes" на сертификат с подстановочными символами (в "голом железном" частном облаке) Nginx Ingress и менеджер сертификатов
Мы настроили кластер Kubernetes на нашем голом железном сервере.
Мы разворачиваем наше приложение, где каждое пространство имен является приложением для конечного пользователя. то есть customer1.mydomain.com -> пространство имен: cust1
Мы продолжаем получать лицевой сертификат Kubernetes Ingress Controller.
Мы приобрели собственные сертификаты подстановочных знаков *.mydomain.com
#kubectl create secret tls OUR-SECRET --key /path/private.key --cert /path/chain.crt -n ingress-nginx
#kubectl create secret tls OUR-SECRET --key /path/private.key --cert /path/chain.crt -n kube-system
ingress.yaml
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: ourcloud
namespace: cert-manager
spec:
secretName: oursecret
issuerRef:
name: letsencrypt-prod
commonName: '*.mydomain.com'
acme:
config:
- dns01:
provider: cf-dns-prod
domains:
- '*.mydomain.com'
kubectl apply -f ingress.yaml
certificate.certmanager.k8s.io/ourcloud created
https://cust1.mydomain.com/ соединяется с Сертификатом лица контроллера входа Kubernetes
1 ответ
Я нашел проблему. У меня было неправильное имя файла в моем yaml для файлов сертификата. Всегда хорошо смотреть на входные журналы
kubectl logs nginx-ingress-controller-689498bc7c-tf5 -n ingress-nginx
kubectl get -o yaml ingress --all-namespaces
Попробуйте воссоздать секрет из файлов и посмотрите, работает ли он.
kubectl delete -n cust4 SECRETNAME
kubectl -n cust4 create secret tls SECRETENAME --key key.key --cert cert.crt
Если вы используете Helm
а также cert manager
, убедитесь, что у каждого входящего ресурса разные certificate name
, эти значения обычно устанавливаются из файла значений в Helm-диаграмме.
tls
- secretName: <give certificate name>
hosts: example.com
Вы можете проверить доступные сертификаты, используя, чтобы избежать конфликта имен, если вы успешно развернули свои входящие ресурсы:
kubectl get certificates