Перепишите контекстный путь для Google Kubernetes Engine Ingress Controller - PullRequest
0 голосов
/ 09 марта 2020

У меня есть приложение, работающее по пути tomcat / app1, как мне получить к нему доступ по входному пути?

При доступе к «/» он дает по умолчанию tomcat 404 - страница не найдена, а при доступе через / app1 он показывает «бэкэнд по умолчанию -404»

Что я хочу знать: в любом случае, чтобы настроить контекстный путь без использования входного контроллера ngnix? (Просто используя входной контроллер GKE по умолчанию)

Вот пример моего входа:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gke-my-ingress-1
  annotations:
    kubernetes.io/ingress.global-static-ip-name: gke-my-static-ip
    networking.gke.io/managed-certificates: gke-my-certificate
spec:
  rules:
  - host: mydomain.web.com
    http:
      paths:
      - path: /
        backend:
          serviceName: my-service
          servicePort: my-port

Редактировать: сервисный вывод

kubectl get svc
my-service   NodePort    <IP_REDACTED>   <none>        8080:30310/TCP   5d16h
kubectl describe svc my-service
Name:                     my-service
Namespace:                default
Labels:                   <none>
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"my-service","namespace":"default"},"spec":{"ports":[{"name"...
Selector:                 app=my-deployment-1
Type:                     NodePort
IP:                       <IP_REDACTED>
Port:                     my-port  8080/TCP
TargetPort:               8080/TCP
NodePort:                 my-port  30310/TCP
Endpoints:                <IP_REDACTED>:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

и это Служба my Node Port yaml:

---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - name: my-port
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: my-deployment-1
  type: NodePort

1 Ответ

1 голос
/ 11 марта 2020

К сожалению, текущая реализация по умолчанию GKE Ingress Controller не поддерживает цели перезаписи. Все еще существует проблема с открытым github, которую вы можете найти здесь .

То, чего вы пытаетесь достичь, это переписать ваш входной путь в какой-то конкретный c путь, предоставляемый вашим приложением, в ваш случай Apache веб-сервер Tomcat .

Нет ли возможности перенастроить ваше приложение для обслуживания по основному пути с помощью Apache Tomcat ? Если это так, вы можете сделать его доступным на <IngressLoadBalancerIP>/app1, настроив следующий путь в входном ресурсе , как показано в примере ниже:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: default-backend
          servicePort: 8080
      - path: /app1
        backend:
          serviceName: my-service
          servicePort: 8080

Но, к сожалению, вы не можете настроить перезапись в Таким образом, когда вы go на <IngressLoadBalancerIP>/app1 перезаписываете на ваш <my-service>/app1.

Кажется, что на данный момент единственным решением является установка другого входного контроллера, такого как упомянутый nginx контроллер входа .

...