web-dev-qa-db-fra.com

Certificat SSL géré par Google bloqué sur FAILED_NOT_VISIBLE

J'essaie de configurer un équilibreur de charge https sur GKE. Je suis: https://cloud.google.com/load-balancing/docs/ssl-certificates et https://cloud.google.com/kubernetes-engine/ docs/concepts/ingress

Ma configuration fonctionne depuis un certain temps en utilisant un certificat de Let's Encrypt. Mais c'est trop compliqué de renouveler les certificats tout le temps, donc je voulais tester le service géré de Google.

Voilà comment je l'ai configuré jusqu'à présent, mais reste sur FAILED_NOT_VISIBLE. Une idée sur la façon de résoudre ou de déboguer cela?

k8s/staging/staging-ssl.yml

  7 apiVersion: extensions/v1beta1
  8 kind: Ingress
  9 metadata:
 10   name: my-staging-lb-ingress
 11   annotations:
 12     kubernetes.io/ingress.global-static-ip-name: "my-staging-global"
 13     ingress.gcp.kubernetes.io/pre-shared-cert: "staging-google-managed-ssl"
 14     kubernetes.io/ingress.allow-http: "false"
 15 spec:
 16   rules:
 17   - Host: staging.my-app.no
 18     http:
 19       paths:
 20       - path: /*
 21         backend:
 22           serviceName: my-svc
 23           servicePort: 3001

IP réservée

$ gcloud compute addresses list
NAME                   REGION  ADDRESS         STATUS
my-staging-global              35.244.160.NNN  RESERVED


$ Host staging.my-app.no 
35.244.160.NNN

Les certificats SSL de calcul bêta $ gcloud décrivent staging-google-managed-ssl

creationTimestamp: '2018-12-20T04:59:39.450-08:00'
id: 'NNNN'
kind: compute#sslCertificate
managed:
  domainStatus:
    staging.my-app.no: FAILED_NOT_VISIBLE
  domains:
  - staging.my-app.no
  status: PROVISIONING
name: staging-google-managed-ssl
selfLink: https://www.googleapis.com/compute/beta/projects/my-project/global/sslCertificates/staging-google-managed-ssl
type: MANAGED

J'ai trouvé une section dans le document auquel j'ai lié au début de la publication Associer les ressources du certificat SSL à un proxy cible:

Utilisez la commande gcloud suivante pour associer des ressources de certificat SSL à un proxy cible, que les certificats SSL soient autogérés ou gérés par Google.

gcloud compute target-https-proxies create [NAME] \
    --url-map=[URL_MAP] \
    --ssl-certificates=[SSL_CERTIFICATE1][,[SSL_CERTIFICATE2],[SSL_CERTIFICATE3],...]

Est-ce nécessaire lorsque j'ai cette ligne dans ma configuration Ingress?

13 ingress.gcp.kubernetes.io/pre-shared-cert: "staging-google-managed-ssl"

6
martins

Il s'avère que j'avais fait par erreur des changements dans l'environnement de production et d'autres dans la mise en scène. Tout a fonctionné comme prévu lorsque j'ai compris cela et suivi le guide. :-)

1
martins

Quel est le TTL (durée de vie) de l'enregistrement de ressource A pour staging.my-app.no? Utilisez, par exemple,

Dig +nocmd +noall +answer staging.my-app.no

comprendre.

Dans mon cas, l'augmentation du TTL de 60 secondes à 7200 laisse le domainStatus enfin arriver dans ACTIVE.

1
renew

Je laisse cela à quiconque pourrait se retrouver dans la même situation que moi. J'ai dû migrer d'un certificat autogéré vers un certificat géré par Google.

J'ai créé le certificat géré par Google en suivant le guide et je m'attendais à le voir activé avant d'appliquer le certificat à mon entrée Kubernetes (pour éviter la possibilité d'un temps d'arrêt)

Il s'avère, comme indiqué par le docs ,

le proxy cible doit référencer la ressource de certificat gérée par Google

Donc, appliquer la configuration avec kubectl apply -f ingress-conf.yaml a fait que l'équilibreur de charge utilise le certificat nouvellement créé, qui est devenu actif peu de temps après (environ 15 minutes)

0
Nicolò Gasparini