我们已经在AWS的Kubernetes集群上安装了Istio(正在使用EKS)。我们已经部署了多个应用程序,例如:Airflow,Jenkins,Grafana等,我们可以通过port-forward
来访问它们。因此,它们按预期工作。
现在,我们要实现的是将应用程序安装在特定路径上的可能性,以便我们可以通过唯一的入口点访问它们。
这里有一个例子来解释“独特的入口点”的含义:
我们尝试的是以下
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: apps-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: airflow-virtual-service
spec:
hosts:
- "*"
gateways:
- apps-gateway
http:
- match:
- uri:
prefix: /airflow
route:
- destination:
host: webserver.airflow.svc.cluster.local
port:
number: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana-virtual-service
spec:
hosts:
- "*"
gateways:
- apps-gateway
http:
- match:
- uri:
prefix: /grafana
route:
- destination:
host: grafana.grafana.svc.cluster.local
port:
number: 3306
---
and so on
通过这种方式,但根据服务的不同,我仍然拥有Aiflow 404 = lots of circles
或类似的东西。
您知道如何用Istio实现这样的结果吗?我们也开放使用Nginx或Traefik。
答案 0 :(得分:1)
因此,根据评论:
公开前端和后端的最佳方法是使用*.domain.com
之类的通配符域将两者分开。
对于前端:
my-app.domain.com/
对于后端服务,它将始终以api
之类的子域开头:
api.domain.com/foo
对于后端服务,如果您的后端服务没有提供路径,则需要使用rewrite
。
rewrite:
uri: "/"
检查Istio文档以获取有关重写https://istio.io/docs/reference/config/istio.networking.v1alpha3/#Destination
的更多信息