无法访问 AKS 上 istio 集群公开的 api。我可以看到外部 IP 和端口,但无法到达相同的

问题描述 投票:0回答:1

按照这个例子

https://istio.io/latest/docs/examples/bookinfo/ 以下是 istioctlanalyze 的输出

istioctl 分析的输出

output of istioctl anayze

按照 istioctl 工具的建议更新了端口号和选择器。但仍处于死胡同

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  # The selector matches the ingress gateway pod labels.
  # If you installed Istio using Helm following the standard documentation, this would be "istio=ingress"
  selector:
    istio: ingress # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: bookinfo
spec:
  hosts:
  - "*"
  gateways:
  - bookinfo-gateway
  http:
  - match:
    - uri:
        exact: /productpage
    - uri:
        prefix: /static
    - uri:
        exact: /login
    - uri:
        exact: /logout
    - uri:
        prefix: /api/v1/products
    route:
    - destination:
        host: productpage
        port:
          number: 9080

azure-aks istio istio-gateway
1个回答
0
投票

您好gera1390您的步骤是正确的,文档中有一个小问题。我尝试了您分享的相同文档,发现了同样的问题。

已下载 istio enter image description here

已安装 Istio enter image description here

添加了命名空间标签

kubectl label namespace default istio-injection=enabled

enter image description here

部署在 bookinfo 示例中

kubectl apply -f [samples/bookinfo/platform/kube/bookinfo.yaml](https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/platform/kube/bookinfo.yaml)

enter image description here

验证了服务和 Pod

kubectl get services
kubectl get pods

enter image description here

将 bookinfo 与网关关联

 kubectl apply -f [samples/bookinfo/networking/bookinfo-gateway.yaml](https://raw.githubusercontent.com/istio/istio/release-1.20/samples/bookinfo/networking/bookinfo-gateway.yaml)

enter image description here

使用

istioctl analyze
进行分析 enter image description here

获取外部IP

kubectl get svc istio-ingressgateway -n istio-system

enter image description here

设置入口IP和端口并导出网关url

export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT

enter image description here enter image description here

在整个设置中,我确保没有启用防火墙,我的 NSG 规则允许端口 80 和 443 enter image description here

相反,您可以尝试以下替代选项-

选项 1- 本地主机方法,我尝试使用本地主机,并且能够通过本地主机访问它- 部署过程保持不变。您创建一个集群。 enter image description here

为 bookinfo 创建命名空间

kubectl create namespace bookinfo

enter image description here

如上所示部署应用程序 enter image description here

部署后,验证 pod- enter image description here

使用

kubectl port-forward -n bookinfo service/productpage 9090
进行端口转发 enter image description here

并通过本地主机访问它

enter image description here

选项2- 按照这个设置 更新您的

/etc/hosts
配置文件 在您的
/etc/hosts
文件中,将之前的 IP 地址添加到以下命令提供的主机条目中。

echo $(kubectl get ingress istio-system -n istio-system -o jsonpath='{..ip} {..host}') $(kubectl get ingress bookinfo -o jsonpath='{..host}')

您应该拥有 超级用户 权限,并且可能使用

sudo
来编辑
/etc/hosts

并从命令行访问应用程序的主页:

kubectl exec $(kubectl get pod -l app=sleep -o jsonpath='{.items[0].metadata.name}') -c sleep -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

enter image description here

参考文档-

图书信息示例

istio 入门

© www.soinside.com 2019 - 2024. All rights reserved.