3
votes

Est-il possible d'ajouter dynamiquement des hôtes à l'entrée avec Kubernetes?

Si vous gérez un service d'entrée tel que dans l'exemple suivant, au lieu de mettre à jour le fichier d'entrée ci-dessous, existe-t-il un moyen d'ajouter un hôte / service supplémentaire tel que echo3.example.com sans avoir besoin d'appliquer une version mise à jour du fichier d'origine?

# NEW HOST/SERVICE

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-ingress
spec:
  rules:
  - host: echo3.example.com ### <= `echo3` addeded
    http:
      paths:
      - backend:
          serviceName: echo3
          servicePort: 80
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-ingress
spec:
  rules:
  - host: echo1.example.com
    http:
      paths:
      - backend:
          serviceName: echo1
          servicePort: 80
  - host: echo2.example.com
    http:
      paths:
      - backend:
          serviceName: echo2
          servicePort: 80

Existe-t-il un moyen d'appliquer ce nouvel hôte sans avoir besoin d'étendre l'ancien fichier?


2 commentaires

Double possible de Ajout / suppression dynamique d'hôtes nommés à partir de l'entrée k8s


@ t-prisar Merci, j'ai jeté un coup d'œil là-bas, La question est en double mais les réponses sont très différentes, celle-ci dit que c'est possible, tandis que celle liée n'est pas d'accord?


3 Réponses :


0
votes

Je veux dire que vous pouvez simplement en faire un objet / fichier Ingress distinct, pas besoin qu'il soit dans le même. Ou vous pouvez utiliser quelque chose comme Kustomize.


0 commentaires

1
votes

Si vous appliquez les deux fichiers, le second écrasera le premier car ils ont le même nom. Vous devrez donc modifier l'original à chaque fois que vous ajoutez une nouvelle règle.

Une solution possible pour éviter ce problème serait d'utiliser Contour . Dans ce cas, vous pouvez conserver chaque IngressRoute dans une ressource distincte et éviter des conflits comme celui-là.

Dans votre cas, vous auriez quelque chose comme:

# ingressroute-echo1.yaml
apiVersion: contour.heptio.com/v1beta1
kind: IngressRoute
metadata:
  name: echo-ingress-1
spec:
  virtualhost:
    fqdn: echo1.example.com
  routes:
    - match: /
      services:
        - name: echo1
          port: 80

# ingressroute-echo2.yaml
apiVersion: contour.heptio.com/v1beta1
kind: IngressRoute
metadata:
  name: echo-ingress-2
spec:
  virtualhost:
    fqdn: echo2.example.com
  routes:
    - match: /
      services:
        - name: echo2
          port: 80

# ingressroute-echo3.yaml
apiVersion: contour.heptio.com/v1beta1
kind: IngressRoute
metadata:
  name: echo-ingress-3
spec:
  virtualhost:
    fqdn: echo3.example.com
  routes:
    - match: /
      services:
        - name: echo3
          port: 80


1 commentaires

Merci, j'aurais dû voir que le nom étant différent n'écraserait pas la configuration initiale du fichier.



0
votes

Vous pouvez également créer différents objets d'entrée avec des annotations différentes. Créez deux fichiers d'entrée avec des hôtes et des services.


0 commentaires