Я пытаюсь настроить шлюз Ambassador в Kubernetes с помощью Letsencrypt & cert-manager на Azure.
Я получаю следующие ошибки в журналах cert-manager -
Error getting certificate 'ambassador-certs': secret "ambassador-
certs" not found
certificates controller: Re-queuing item "default/<certificate-name>" due
to error
processing: http-01 self check failed for domain "<certificate-name>"
Если я затем создаю секрет в Kubernetes, который называется ambident-certs, он начинает регистрировать следующее -
Re-queuing item "default/<certificate-name>" due to error processing:
no data for "tls.crt" in secret 'default/ambassador-certs'
Моя конфигурация выглядит следующим образом -
Kubernetes Secret
apiVersion: v1
kind: Secret
metadata:
name: ambassador-certs
namespace: default
type: Opaque
Сертификат Kubernetes
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: <name>
spec:
secretName: ambassador-certs
commonName: <domain-name>
dnsNames:
- <domain-name>
acme:
config:
- http01:
ingressClass: nginx
domains:
- <domain-name>
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
Kubernetes ClusterIssuer
apiVersion: certmanager.k8s.io/v1alpha1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
http01: {}
Я установил Ambassador в соответствии с указаниями с их сайта -
kubectl apply -f
https://getambassador.io/yaml/ambassador/ambassador-rbac.yaml
Когда я попробовал это с Ingress Controller, сертификатыбыли созданы и успешно добавлены в секреты.Чего мне не хватает с послом, пожалуйста?
Наконец, согласно веб-сайту посла, это все, что мне нужно сделать
Диспетчер сертификатов
Диспетчер сертификатов Jetstack позволяетВы легко предоставляете и управляете сертификатами TLS в Kubernetes.Для использования> Ambassador с cert-manager специальная конфигурация не требуется.
После запуска cert-manager и успешного создания> эмитента вы можете запросить сертификат, например:
apiVersion: certmanager.k8s.io/v1alpha1
kind: Certificate
metadata:
name: cloud-foo-com
namespace: default
spec:
secretName: ambassador-certs
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
commonName: cloud.foo.com
dnsNames:
- cloud.foo.com
acme:
config:
- dns01:
provider: clouddns
domains:
- cloud.foo.com
Обратите внимание на строку secretName выше.Когда сертификат будет храниться в секрете, перезапустите Ambasador, чтобы забрать новый сертификат.
Спасибо.Медленно умираю изнутри, пытаясь решить эту проблему: -)
РЕДАКТИРОВАТЬ
Я удалил все и перенастроил сначала с послом, используя http.Это сработало.Мне удалось успешно перейти к моему httpbin.org маршруту через http.Затем я переключился на порт 443 на yaml Службы посла и заново применил все, как указано выше.
Это все еще регистрируется в журналах cert-manager
Re-queuing item "default/<certificate-name>" due to error processing: no data
for "tls.crt" in secret 'default/ambassador-certs'
kubectl descriptionсекретный посол-сертификат
Name: ambassador-certs
Namespace: default
Labels: <none>
Annotations:
Type: Opaque
Data
====