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?
À 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