我们现在切换到 istio ,我需要将我的应用暴露给外部
在该应用中,我只有3条路线
我们有gw
和host
,但是以某种方式我无法访问我的应用程序,知道我在做什么错吗?
vs-yaml
有没有办法公开所有路由,或者我应该明确定义它们,如果这样的话,它与routes
和match
有点混淆吗?
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bher-virtualservice
namespace: ba-trail
spec:
gateways:
- webb-system.svc.cluster.local
hosts:
- trialio.cloud.str
http:
- route:
- destination:
host: bsa
port:
number: 5000
最佳答案
我建议看一下有关virtual services的istio文档,那里对此有很好的描述。
让我们从头开始,您拥有虚拟服务和网关,它们应该与您的应用程序位于同一 namespace 中,或者您需要在两者中都指定它们。
据我所知您的虚拟服务不正确,我准备了适合您的示例。看下面的例子。
网关
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bher-gateway
namespace: ba-trail 👈
spec:
selector:
istio: ingressgateway # use the default IngressGateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "trialio.cloud.str"
我看到您已经部署了gateway,如果它与虚拟服务不在同一个命名空间中,则应像下面的示例一样添加它。检查
spec.gateways
部分apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-gateway
namespace: some-config-namespace
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo-Mongo
namespace: bookinfo-namespace
spec:
gateways:
- some-config-namespace/my-gateway # can omit the namespace if gateway is in same
namespace as virtual service.
虚拟服务
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bher-virtualservice
namespace: ba-trail 👈
spec:
gateways:
- bher-gateway 👈 // name of your gateway
hosts:
- trialio.cloud.str
http:
- match:
- uri:
prefix: "/"
- uri:
prefix: "/login"
- uri:
prefix: "/static"
- uri:
regex: '^.*\.(ico|png|jpg)$'
route:
- destination:
host: bsa.ba-trail.svc.cluster.local 👈 // name_of_your service.namespace.svc.cluster.local
port:
number: 5000
看看这个examplehttp:
- match:
- uri:
exact: /
- uri:
exact: /callback
- uri:
prefix: /static
- uri:
regex: '^.*\.(ico|png|jpg)$'
route:
- destination:
host: frontend
port:
number: 80
希望您觉得这个有帮助。如果您有任何问题,请在评论中告诉我。