web-dev-qa-db-fra.com

La création d'un certificat géré aboutit à «Status: FailedNotVisible»

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:

  1. Génération d'une adresse IP externe réservée (statique)

  2. Configuration de l'enregistrement DNS A dans CloudDNS sur subdomain.domain.com pour l'adresse IP générée à l'étape 1.

  3. Création d'un certificat géré nommé "certificat de domaine de sous-domaine" avec kubectl apply -f avec spec: domaines contenant un seul domaine correspondant à l'enregistrement DNS subdomain.domain.com à l'étape 2.
  4. Création d'un déploiement et d'un service simples l'exposant
  5. Création d'une ressource Ingress faisant référence au backend de service par défaut à l'étape 4 ainsi qu'aux annotations pour l'IP statique créée à l'étape 1 et le certificat géré généré à l'étape 3.
  6. Confirmez que Ingress est créé et se voit attribuer une adresse IP statique
  7. Visiter http://subdomain.domain.com sert la sortie du pod créé dans le déploiement à l'étape 4

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?

8
Smith

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."

0
Evan Jones

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.

0
Bjorn Thor Jonsson