J'ai déployé une application météorite simple sur kubernetes. J'ai associé une adresse IP externe au serveur, afin qu'elle soit accessible à partir du cluster. Maintenant, je vais l'exposer à Internet et le sécuriser (en utilisant le protocole HTTPS). Quelqu'un peut-il donner des instructions simples pour cette section?
À mon avis kube-lego est la meilleure solution pour GKE. Voyez pourquoi:
Exemple de configuration (c'est tout!):
kind: ConfigMap
apiVersion: v1
metadata:
name: kube-lego
namespace: kube-lego
data:
lego.email: "your@email"
lego.url: "https://acme-v01.api.letsencrypt.org/directory"
Exemple d'entrée (vous pouvez en créer plusieurs):
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: site1
annotations:
# remove next line if not using nginx-ingress-controller
kubernetes.io/ingress.class: "nginx"
# next line enable kube-lego for this Ingress
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- site1.com
- www.site1.com
- site2.com
- www.site2.com
secretName: site12-tls
rules:
...
Il existe plusieurs façons de configurer un point de terminaison SSL, mais votre solution doit résoudre 2 problèmes: Tout d'abord, vous devez obtenir un certificat et une clé valides. Deuxièmement, vous devez configurer un point de terminaison SSL dans votre infrastructure.
Jetez un oeil à k8s contrôleur d'entrée . Vous pouvez fournir à un contrôleur d'entrée un certificat/secret de clé provenant de k8s secret store pour configurer un point de terminaison ssl. Bien sûr, cela nécessite que vous ayez déjà un certificat et une clé valides.
Vous pouvez jeter un œil aux solutions spécifiques à k8 pour émettre et utiliser des certificats comme Kubernetes Letsencrypt Controller , mais je ne les ai jamais utilisées et je ne peux pas dire à quel point elles fonctionnent.
Voici quelques idées générales pour émettre et utiliser des certificats SSL:
[~ # ~] aws [~ # ~]
Si vous utilisez AWS, la façon la plus simple à laquelle je peux penser est de configurer un ELB, qui peut émettre automatiquement le certificat SSL pour vous.
LetsEncrypt
Vous pouvez également consulter LetsEncrypt pour émettre des certificats gratuits pour votre domaine. Ce qui est bien, c'est que vous pouvez automatiser votre processus d'émission de certificats.
[~ # ~] ca [~ # ~]
Bien sûr, vous pouvez toujours suivre la voie traditionnelle et émettre un certificat d'un fournisseur de confiance.
[~ # ~] aws [~ # ~]
Encore une fois, si vous avez un ELB, il fait déjà office de point final et vous avez terminé. Bien sûr, votre connexion client <-> ELB est cryptée, mais le cluster ELB <-> k8s n'est pas crypté.
contrôleur d'entrée k8s
Comme mentionné ci-dessus, selon la version k8 que vous utilisez, vous pouvez également configurer un TLS contrôleur d'entrée .
Service proxy k8s
Une autre option consiste à configurer un service à l'intérieur de votre cluster k8s, ce qui met fin à la connexion ssl et proxy le trafic vers votre application météore non crypté. Vous pouvez utiliser nginx comme proxy pour cela. Dans ce cas, je vous suggère de stocker la clé de votre certificat à l'intérieur k8s secret store et de le monter à l'intérieur du conteneur nginx. [~ # ~] jamais [~ # ~] expédier un conteneur contenant des secrets tels que des clés de certificat stockées à l'intérieur! Bien sûr, vous devez toujours envoyer votre trafic crypté vers un nœud k8s - encore une fois, il existe plusieurs façons d'y parvenir ... Le plus simple serait de modifier votre entrée DNS pour pointer vers les nœuds k8s, mais idéalement, vous utiliseriez un TCP LB.