我已经通过Cloud Console UI与Istio创建了私有GKE集群。该集群是通过VPC Peering设置的,能够访问另一个Google Cloud Project中的另一个私有GKE集群。
我在website
命名空间的Kubernetes中创建了一个带有服务的部署(称为staging
)。我的目标是使用Envoy代理通过Istio向外界公开此服务。在this guide之后,我已经创建了必要的VirtualService
和Gateway
。
运行“ kubectl exec ...”以访问专用集群中的Pod时,我可以成功连接到website
服务的内部IP地址,并使用“ curl”查看该服务的输出。
我已经设置了NAT网关,以便私有群集中的Pod可以连接到Internet。我通过curl
窗格内的各种非Google网页进行了确认。
但是,如上所述,我无法使用website
服务的website
从外部连接到External IP
服务。相反,istio-ingressgateway
-导致curl
导致超时。
我已将所有相关资源的完整YAML配置放在私有Gist中,位于:https://gist.github.com/marceldegraaf/0f36ca817a8dba45ac97bf6b310ca282
我想知道我是否在这里的配置中丢失了某些东西,或者我的用例实际上是不可能的?
答案 0 :(得分:0)
看您的要领,我怀疑问题出在Gateway
和istio-ingressgateway
的结合上。
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: website-gateway
namespace: staging
labels:
version: v1
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
尤其是我不相信selector
部分是正确的。
您应该可以执行类似的操作
kubectl describe po -n istio-system istio-ingressgateway-rrrrrr-pppp
在Istio Ingress Gateway窗格中找出选择器要匹配的内容。
答案 1 :(得分:0)
我有同样的问题。就我而言,istio虚拟服务找不到我的服务。
在您的VirtualService上尝试一下:
route:
- destination:
host: website
port:
number: 80
答案 2 :(得分:-1)