无法了解istio身份验证策略

时间:2019-07-24 10:02:47

标签: kubernetes google-kubernetes-engine istio

我是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上有效,但不起作用。

问题:

  1. 为什么sleep.foo to httpbin.foo: 503的状态是503而不是200?
  2. 为什么sleep.foo to httpbin.bar: 200的状态是200而不是503?

有人可以解释吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您应等待1-2分钟,然后策略才能完全实施。