web-dev-qa-db-fra.com

Activer HTTPS sur GCE / GKE

J'exécute un site Web avec Kubernetes sur Google Cloud. Pour le moment, tout fonctionne bien - via http. Mais j'ai besoin de https. J'ai plusieurs services et l'un d'eux est exposé au monde extérieur, appelons-le web. Pour autant que je sache, c'est le seul service à modifier. J'ai essayé de créer un équilibreur de charge statique IP et TCP/SSL ssl-LB dans la section Réseau de GCP et d'utiliser ce LB dans web.yaml, que je crée. La création du service est bloquée avec:

Error creating load balancer (will retry): Failed to create load 
balancer for service default/web: requested ip <IP> is 
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>

Cependant, selon GCP, mon IP est statique. Le LB haché que je ne trouve nulle part et il doit être affecté à ssl-LB de toute façon. Comment attribuer cela correctement?

Plus de détails:

Voici le contenu de web.yaml

apiVersion: v1
kind: Service
metadata:
name: web
labels:
  ...
spec:
  type: LoadBalancer
  loadBalancerIP: <RESERVED STATIC IP> 
ports:
- port: 443
  targetPort: 7770
selector:
  ...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        ...
  spec:
    containers:
    - name: web
      image: gcr.io/<PROJECT>/<IMAGE NAME>
      ports:
      - containerPort: 7770
17
Jaakko Vainio

Comme vous ne l'avez pas déjà mentionné, je suppose simplement que vous utilisez Google Container Engine (GKE) pour votre configuration Kubernetes.

Dans le manifeste des ressources de service, si vous définissez Type sur LoadBalancer , Kubernetes sur GKE configure automatiquement l'équilibrage de la charge réseau (équilibreur de charge L4) à l'aide de GCE. Vous devrez mettre fin aux connexions dans votre module en utilisant votre propre serveur personnalisé ou quelque chose comme nginx/Apache.

Si votre objectif est de configurer un équilibreur de charge L7 (HTTP/HTTPS) (ce qui semble être le cas), il sera plus simple et plus facile d'utiliser la ressource Ingress dans Kubernetes (commençant par v1.1). GKE configure automatiquement un équilibrage de charge HTTP/HTTPS L7 GCE avec cette configuration.

Vous pourrez ajouter vos certificats TLS qui seront automatiquement provisionnés sur l'équilibreur de charge GCE par GKE.

Cette configuration présente les avantages suivants:

  1. Spécifiez les services par chemin URL et port (il utilise URL Maps de GCE pour configurer ceci).
  2. Configurer et terminer SSL/TLS sur l'équilibreur de charge GCE (il utilise Target proxies de GCE pour configurer ceci).
  3. GKE configurera également automatiquement le GCE health checks pour vos services.

Votre responsabilité sera de gérer la logique du service backend pour gérer les demandes dans vos pods.

Plus d'informations disponibles sur la page GKE sur la configuration de l'équilibrage de charge HTTP .

N'oubliez pas que lorsque vous utilisez GKE, il utilise automatiquement la prise en charge de l'équilibreur de charge GCE disponible pour les deux cas d'utilisation décrits ci-dessus et vous n'aurez pas besoin de configurer manuellement équilibrage de charge GCE .

23
Tuxdude