我是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?有人可以解释吗?谢谢。
答案 0 :(得分:1)
您应等待1-2分钟,然后策略才能完全实施。