chemtech
@chemtech
Линуксойд, DevOps

Как для каждого сервиса в k8s сделать отдельный path в рамках одного host?

Есть kubernetes. Есть 1 внешний host или по другому домен.
В kubernetes установлены разные типовые приложения.
helm install ghost --set service.type=ClusterIP bitnami/ghost
helm install drupal --set service.type=ClusterIP bitnami/drupal
helm install tomcat --set service.type=ClusterIP bitnami/tomcat
helm install dokuwiki --set service.type=ClusterIP bitnami/dokuwiki
helm install redmine --set service.type=ClusterIP bitnami/redmine

Если сделать port-forward на сервис, то он откроется и мы увидем рабочее приложение.

Как для каждого сервиса в k8s сделать отдельный path в рамках одного host?

Я взял примерный ingress yaml и добавил туда существующие сервисы

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: myingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: apatsev.178.154.235.82.sslip.io
    http:
      paths:
      - backend:
          serviceName: dokuwiki
          servicePort: 80
        path: /dokuwiki(/|$)(.*)
      - backend:
          serviceName: drupal
          servicePort: 80
        path: /drupal/(.*)
      - backend:
          serviceName: ghost
          servicePort: 80
        path: /ghost/(.*)
      - backend:
          serviceName: redmine
          servicePort: 80
        path: /redmine/(.*)
      - backend:
          serviceName: tomcat
          servicePort: 80
        path: /tomcat/(.*)


Пока ищу примеры в этих постах
https://medium.com/ww-engineering/kubernetes-nginx...
https://kubernetes.github.io/ingress-nginx/example...

Подскажите, в сторону каких опций конфига ingress смотреть?
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
chemtech
@chemtech Автор вопроса
Линуксойд, DevOps
Конфиг валиден. Если не работает, нужно зайти в Development Tools и посмотреть ошибки. Скорее всего ссылки абсолютные. А нужно сделать относительные.

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: myingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - host: apatsev.178.154.235.82.sslip.io
    http:
      paths:
      - backend:
          serviceName: dokuwiki
          servicePort: 80
        path: /dokuwiki(/|$)(.*)
      - backend:
          serviceName: drupal
          servicePort: 80
        path: /drupal/(.*)
      - backend:
          serviceName: ghost
          servicePort: 80
        path: /ghost/(.*)
      - backend:
          serviceName: redmine
          servicePort: 80
        path: /redmine/(.*)
      - backend:
          serviceName: tomcat
          servicePort: 80
        path: /tomcat/(.*)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы