Istio入口网关,出现403禁止错误

时间:2019-09-25 19:55:14

标签: kubernetes-ingress istio azure-kubernetes

我正在尝试遵循istio网关和虚拟服务指南--https://istio.io/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports

我可以看到这些资源(网关和VS)是从Kiali和命令行创建的。当我尝试访问位于curl -I -HHost:httpbin.example.com http://$INGRESS_HOST:$INGRESS_PORT/status/200的端点时,我得到一个403 Forbidden error

我正在查看istio-proxy日志 k记录httpbin-pod -c istio-proxy -n my-bookinfo 而且在那里看不到太多。我试图弄清楚从哪里可以开始调试问题。有任何想法吗? (已编辑)

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为HTTP 403问题可能与Istio Authorization Authentication 网格配置有关,假设您已经成功地将Envoy sidecar注入了特定的Pod或广泛地跨了相关的命名空间。

日志检查可能是最可解释的任务,确认Envoy's Access Logs已启用,您可以查看相关的istio-proxy辅助工具和istio-ingressgateway Pod日志;而您可以获取Envoy proxy响应标志和交通路​​径工作流程:

$ kubectl logs -l app=httpbin -c istio-proxy
  

[2019-03-06T09:31:27.360Z]“ GET / status / 418 HTTP / 1.1” 418-“-” 0 135   5 2“-”“ curl / 7.60.0”“ d209e46f-9ed5-9b61-bbdd-43e22662702a”   “ httpbin:8000”“ 127.0.0.1:80”   入站| 8000 | http | httpbin.default.svc.cluster.local-172.30.146.73:80   172.30.146.82:38618 outbound_.8000 _._ .. httpbin.default.svc.cluster.local

检查网格中的 Authentication Policies ,这可能会影响边车代理行为并根据mTLS身份验证修改全局网格策略,并启用Permissive模式默认情况下:

$ kubectl get policies.authentication.istio.io --all-namespaces

$ kubectl get meshpolicy.authentication.istio.io default -oyaml

如果您在网格内启动了 Authorization 规则,请验证所有对应的RBAC策略:

$ kubectl get clusterrbacconfigs.rbac.istio.io --all-namespaces

$ kubectl get authorizationpolicies.rbac.istio.io,rbacconfigs.rbac.istio.io,servicerolebindings.rbac.istio.io,serviceroles.rbac.istio.io --all-namespaces

在官方Istio documentation中找到有关故障排除步骤的更多相关信息。