En utilisant Kubernetes 1.12.6-gke.7 ou supérieur, il est possible de créer un certificat géré qui est ensuite référencé à partir d'une ressource d'entrée exposant un service à Internet.
L'exécution de kubectl decrire managedcertificate nom-certificat indique d'abord que le certificat est dans un état de provisionnement mais passe finalement à FailedNotVisible.
Malgré l'utilisation d'une adresse IP statique et d'un DNS qui résout très bien la version http dudit service, tous les ManagedCertificate se retrouvent dans un état "Status: FailedNotVisible".
Aperçu de ce que je fais:
Génération d'une adresse IP externe réservée (statique)
Configuration de l'enregistrement DNS A dans CloudDNS sur subdomain.domain.com pour l'adresse IP générée à l'étape 1.
Après un petit moment
kubectl décrit un certificat de sous-domaine-domaine géré
résulte en "Statut: FailedNotVisible".
Name: subdomain-domain-certificate
Namespace: default
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1beta1
Kind: ManagedCertificate
Metadata:
Creation Timestamp: 2019-04-15T17:35:22Z
Generation: 1
Resource Version: 52637
Self Link: /apis/networking.gke.io/v1beta1/namespaces/default/managedcertificates/subdomain-domain-certificate
UID: d8e5a0a4-5fa4-11e9-984e-42010a84001c
Spec:
Domains:
subdomain.domain.com
Status:
Certificate Name: mcrt-ac63730e-c271-4826-9154-c198d654f9f8
Certificate Status: Provisioning
Domain Status:
Domain: subdomain.domain.com
Status: FailedNotVisible
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Create 56m managed-certificate-controller Create SslCertificate mcrt-ac63730e-c271-4826-9154-c198d654f9f8
D'après ce que je comprends si l'équilibreur de charge est correctement configuré (fait sous le capot dans la ressource ManagedCertificate) et que le DNS (qui se résout correctement au point de terminaison non https) vérifie que le certificat doit entrer dans un état: état actif?
Vous devez vous assurer que le nom de domaine se résout à l'adresse IP de votre entrée GKE, en suivant exactement les instructions pour " création d'une entrée avec un certificat géré ".
Pour plus de détails, consultez la documentation de Google Cloud Load Balancing. De https://cloud.google.com/load-balancing/docs/ssl-certificates#domain-status :
"Le statut FAILED_NOT_VISIBLE indique que le provisionnement de certificats a échoué pour un domaine en raison d'un problème avec DNS ou la configuration de l'équilibrage de charge. Assurez-vous que DNS est configuré de sorte que le domaine du certificat se résout à l'adresse IP de l'équilibreur de charge."
DNSSEC n'était en effet pas activé pour mon domaine mais après avoir configuré cela, la configuration ManagedCertificate ne passait toujours pas et je n'avais aucune idée de ce qui se passait. La suppression et la réapplication des manifestes ManagedCertificate et Ingress n'ont pas fait l'affaire. Mais en émettant la commande gcloud beta compute ssl-certificates list
a montré plusieurs certificats gérés inutilisés qui traînaient et les supprimaient avec cloud compute ssl-certificates delete NAME ...
, puis redémarrer le processus de configuration a fait l'affaire dans mon cas.