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