Je suis en train d'activer le HTTPS pour nos clusters kubernates dans GCE. J'essaie d'utiliser kubernates Entrée
J'ai le cert et la clé privée, et j'ai créé un secret avec ces éléments en annexe (ssl-secret) :
apiVersion: v1
kind: Secret
metadata:
name: ssl-secret
type: Opaque
data:
tls.crt: LS0tLS...
tls.key: Mc0c4t...
J'ai également un Ingress qui utilise le secret (ssl-ingress) :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ssl-ingress
spec:
backend:
serviceName: client # Name of the service
servicePort: my-https-port # Fetched from annotations
tls:
- hosts:
- test.domain.se # My domain address
secretName: ssl-secret # Name of my previously created secret
Enfin, j'essaie de les appliquer à mon cluster avec la configuration suivante :
apiVersion: v1
kind: Service
metadata:
name: client
annotations:
service.alpha.kubernetes.io/app-protocols: '{"my-https-port":"HTTPS"}' # Must map port-name to HTTPS for the GCP ingress controller
labels:
app: client-pods
spec:
type: NodePort
ports:
- port: 12345 #To my understanding, not used
targetPort: client-https
protocol: TCP
name: my-https-port
selector:
name: client-pods
Mon objectif est donc qu'avec cette configuration, je puisse atteindre test.domain.se sur https://test.domain.se . Mais il s'arrête tout simplement, alors que http://test.domain.se fonctionne parfaitement.
En décrivant l'Ingress, j'obtiens ce qui suit :
Name: ssl-ingress
Namespace: default
Address: 35.186.253.27
Default backend: client:my-https-port ()
TLS:
ssl-secret terminates test.domain.se
Rules:
Host Path Backends
---- ---- --------
* * client:my-https-port ()
Annotations:
static-ip: k8s-fw-default-ssl-ingress--59114a8fc664f628
target-proxy: k8s-tp-default-ssl-ingress--59114a8fc664f628
url-map: k8s-um-default-ssl-ingress--59114a8fc664f628
backends: {"k8s-be-31894--59114a8fc664f628":"UNHEALTHY"}
forwarding-rule: k8s-fw-default-ssl-ingress--59114a8fc664f628
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
7m 7m 1 loadbalancer-controller Normal ADD default/ssl-ingress
6m 6m 1 loadbalancer-controller Normal CREATE ip: 35.186.253.27
6m 2m 18 loadbalancer-controller Warning GCE googleapi: Error 400: The SSL key could not be parsed.
6m 2m 18 loadbalancer-controller Warning Service failed to identify user specified default backend, couldn't find nodeport for default/client, using system default
Mes questions sont donc les suivantes :
Avertissement GCE googleapi : Erreur 400 : La clé SSL n'a pas pu être analysée.
1 : Il semble qu'Ingress ait besoin de la phrase de passe de la clé privée. Comment ajouter une phrase de passe au secret (la clé a une phrase de passe connue, mais comment en informer le secret) ?
Warning Service failed to identify user specified default backend, couldn't find nodeport for default/client, using system default
2 : Il prétend qu'il n'a pas pu trouver nodeport pour default/client. Le client du service cible est déjà en cours d'exécution, mais il semble que l'entrée ajoute default/ avant le nom du service. Pourquoi et comment dois-je spécifier le service client ?