8.7.4 校验白名单策略

登入客户端sleep服务的pod,首先通过如下命令进入版本v1的pod:


export V1_POD=$(kubectl get pod -n whitelist -l app=sleep,version=v1 -o jsonpath={.items..metadata.name})
kubectl exec -it -n whitelist $V1_POD sh

在该版本v1的pod内容发送请求,可以看到httpbin服务返回如下类似的结果:


curl httpbin.whitelist:8000/headers
{
  "headers": {
    "Accept": "*/*",
    "Content-Length": "0",
    "Host": "httpbin.whitelist:8000",
    "User-Agent": "curl/7.60.0",
    "X-B3-Sampled": "1",
    "X-B3-Spanid": "3a05a34dda9d4c32",
    "X-B3-Traceid": "3a05a34dda9d4c32",
    "X-Request-Id": "1e726383-4a38-97a8-a345-676b2b7ebbe7"
  }
}

接着,通过如下命令进入版本v2的pod:


export V2_POD=$(kubectl get pod -n whitelist -l app=sleep,version=v2 -o jsonpath={.items..metadata.name})
kubectl exec -it -n whitelist $V2_POD sh

在该版本v2的pod内容发送请求,可以看到httpbin服务拒绝来自sleep:v2的请求,返回如下类似的结果:


curl httpbin.whitelist:8000/headers
NOT_FOUND:whitelist.listchecker.whitelist:v2 is not whitelisted/

当然,也可以使用Grafana进行指标可视化,前提是必须在安装了Istio的Kubernetes集群中安装Grafana附加组件。

在Kubernetes环境中,执行以下命令:


kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000

在Web浏览器中访问http://localhost:3000/。通过Grafana UI打开Istio仪表板,如图8-17所示。

图8-17 Istio仪表板的显示结果