2017-09-22 1 views
1

Comment puis-je configurer un contrôleur et Ingress Kubernentes pour faire essentiellement ce que le fichier suivant nginx.conf fait:Comment associer plusieurs services à un chemin Kubernetes Ingress?

upstream backend { 
    server server1.example.com  weight=5; 
    server server2.example.com:8080; 

    server backup1.example.com:8080 backup; 
} 

Je veux un point final http mapper à plusieurs services de Kubernetes avec une préférence pour un primaire, mais aussi avoir une sauvegarde. (Pour mon projet particulier, j'ai besoin de plusieurs services au lieu d'un service avec plusieurs modules.)

Voici mon fichier ingress.yaml essayé. Je suis tout à fait certain que la façon dont je répertorie les backends multiples est incorrecte. Comment je le ferais? Et comment puis-je définir le drapeau "sauvegarde"?

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: fanout-ingress 
    annotations: 
    ingress.kubernetes.io/rewrite-target:/
    kubernetes.io/ingress.class: "nginx" 
    # kubernetes.io/ingress.global-static-ip-name: "kubernetes-ingress" 
spec: 
    rules: 
    - http: 
     paths: 
     - path:/
     backend: 
      serviceName: server1 
      servicePort: 
     - path:/
     backend: 
      serviceName: server2 
      servicePort: 8080 
     - path:/
     backend: 
      serviceName: backup1 
      servicePort: 8080 

Je cours Kubernetes sur GKE.

Répondre

1

Kubernetes Ingress est incapable de cela.

Vous pouvez créer un nouveau service qui cible server1, server2 et backup1 et l'utiliser dans Ingress. Mais les backends seront utilisés dans un tournoi à la ronde.

Vous pouvez créer un déploiement et un service de proxies inverses nginx (sans état) avec la configuration que vous souhaitez utiliser dans Ingress.

+0

Si je vais avec la 2ème option que vous avez mentionnée (Déploiement et Service pour nginx), puis-je également faire de ce Service un type = LoadBalancer au lieu d'un Nodeport sans headless et pas besoin d'utiliser Ingress? (Si c'est tout ce dont j'ai besoin Ingress pour). Aussi, si je gardais Ingress, quel serait le meilleur Ingress Controller? Peut-être le même déploiement Nginx? Ou devrait-il être de Google? – gunit

+1

Si vous n'exposez que ce service, vous pouvez ignorer l'entrée, oui. Meilleure entrée que je préfère ne pas dire. –