【发布时间】:2019-07-24 10:02:47
【问题描述】:
我是 Istio 的新手,正在学习官方网站的示例。看不懂的是globally enabling Istio mutual TLS。
我可以使用网络上的 yaml 代码运行示例。之后我改了DestinationRule:
kubectl apply -f - <<EOF
apiVersion: "networking.istio.io/v1alpha3"
kind: "DestinationRule"
metadata:
name: "default"
namespace: "foo"
spec:
host: "*.local"
trafficPolicy:
tls:
mode: ISTIO_MUTUAL
EOF
我唯一更改的部分是将示例的命名空间从istio-system 替换为foo。然后切换到foo命名空间,运行如下测试命令:
$ for from in "foo" "bar"; do for to in "foo" "bar"; do kubectl exec $(kubectl get pod -l app=sleep -n ${from} -o jsonpath={.items..metadata.name}) -c sleep -n ${from} -- curl "http://httpbin.${to}:8000/ip" -s -o /dev/null -w "sleep.${from} to httpbin.${to}: %{http_code}\n"; done; done
结果如下:
sleep.foo to httpbin.foo: 503
sleep.foo to httpbin.bar: 200
sleep.bar to httpbin.foo: 503
sleep.bar to httpbin.bar: 503
我的期望是:
sleep.foo to httpbin.foo: 200
sleep.foo to httpbin.bar: 503
sleep.bar to httpbin.foo: 503
sleep.bar to httpbin.bar: 503
按照官方示例,我设置了一个启用双向 TLS 的网格范围的身份验证策略,然后我在命名空间 foo 上配置了客户端双向 TLS,我认为它应该在命名空间 foo 上工作,但确实如此不工作。
问题:
- 为什么
sleep.foo to httpbin.foo: 503的状态是503而不是200? - 为什么
sleep.foo to httpbin.bar: 200的状态是200而不是503?
有人解释一下吗?谢谢。
【问题讨论】:
-
@VadimEisenberg 如果这是一个错误,您能否发表您的评论作为答案?所以其他人也可以看到这一点。
-
@leo 我已经更新了答案:您应该等待 1-2 分钟,然后政策才会完全执行。
标签: kubernetes google-kubernetes-engine istio