web-dev-qa-db-fra.com

KubeNettes Ingressing Même chemin multiple Port

Après beaucoup de googling et de recherche (même ici), je ne suis pas capable de trouver une réponse définitive à ma question. J'espère donc que quelqu'un ici pourrait être capable de me diriger dans la bonne direction.

J'ai une définition de service Kube qui fonctionne déjà pour moi, mais maintenant, je l'ai simplement exposée avec juste un LoadBalancer. Voici mon service actuel YAML:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: namespace1
  labels:
    app: my-service
spec:
  type: LoadBalancer
  selector:
    app: my-service
    tier: web
  ports:
  - name: proxy-port
    port: 8080
    targetPort: 8080
  - name: metrics-port
    port: 8082
    targetPort: 8082
  - name: admin-port
    port: 8092
    targetPort: 8092
  - name: grpc-port
    port: 50051
    targetPort: 50051

Ceci est évidemment seulement TCP Equilibré de charge. Ce que je veux faire, c'est sécuriser cela avec des TLS mutuels, de sorte que le serveur n'accepte que les connexions de mon client avec le certificat autorisé.

De tout ce que je peux dire à Kube Terre, ce que je dois faire c'est une définition Ingress. J'ai fait des recherches sur tous les documents que je peux trouver sur kind:Ingress Et je n'arrive pas à trouver quoi que ce soit où cela me permet de créer un seul Ingress avec plusieurs ports sur le même chemin!

Est-ce que j'ai râté quelque chose? N'y a-t-il aucun moyen de créer un K8S Ingress qui a simplement la même fonctionnalité que la définition de service ci-dessus?

7
Jacomoman

À mes connaissances, vous ne pouvez pas utiliser les ports personnalisés (par exemple 8080) pour HTTPS Loadbalancer, sauvegardé avec un contrôleur d'entrée (par exemple, NGinx HTTP (S) proxy), comme le port d'une entrée est implicitement: 80 pour HTTP et: 443 pour HTTPS, comme officiel. Référence doc pour l'ingressrule explique.

Je pense que la solution de contournement serait d'utiliser différents hôtes par service, comme avec cet exemple de ressource d'entrée:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: name-virtual-Host-ingress
spec:
  rules:
  - Host: proxy.foo.com
    http:
      paths:
      - backend:
          serviceName: proxy-svc
          servicePort: 8080
  - Host: metrics.foo.com
    http:
      paths:
      - backend:
          serviceName: metrics-svc
          servicePort: 8082
  - Host: admin.foo.com
    http:
      paths:
      - backend:
          serviceName: admin-svc
          servicePort: 8092
  - Host: grpc.foo.com
    http:
      paths:
      - backend:
          serviceName: grpc-svc
          servicePort: 50051
1
Nepomucen