安装 Bookinfo 示例

为了演示在 Kubernetes 之外部署的工作负载如何与网格的其余部分集成,我们需要有其他应用程序可以与之通信。

在本指南中,你需要部署 Istio Bookinfo 示例到你的 Kubernetes 集群中。

部署 Bookinfo 示例

创建命名空间 bookinfo,并添加正确的标签:

kubectl create namespace bookinfo
kubectl label namespace bookinfo istio-injection=enabled

部署 bookinfo 应用程序:

cat <<EOF | kubectl apply -n bookinfo -f -
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT
EOF

kubectl apply -n bookinfo -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/platform/kube/bookinfo.yaml

kubectl wait --for=condition=Available -n bookinfo deployments --all

为了从本地环境向 bookinfo 产品页面发送请求,你需要设置端口转发。

在单独的终端会话中运行以下命令:

kubectl port-forward -n bookinfo service/productpage 9080

产品页面将在 http://localhost:9080 上可访问。 要在可视上验证产品页面,请在浏览器中打开 http://localhost:9080/productpage。 如果多次刷新页面,你应该在页面上看到 3 次中有 2 次出现评分星级。

或者,要从命令行验证,请运行:

for i in `seq 1 9`; do
  curl -fsS "http://localhost:9080/productpage?u=normal" | grep "glyphicon-star" | wc -l | awk '{print $1" stars on the page"}'
done

3 次中有 2 次应该会得到消息 10 stars on the page

10 stars on the page
0 stars on the page
10 stars on the page

缩减 ratings 应用程序

在本指南中,你将通过 VM 通过工作负载载入部署 ratings 应用程序。为了做到这一点,我们必须首先“禁用”与 bookinfo 示例一起部署的默认 ratings 应用程序。

运行以下命令并将 ratings 应用程序的副本数减少到 0:

kubectl scale deployment ratings-v1 -n bookinfo --replicas=0

kubectl wait --for=condition=Available -n bookinfo deployment/ratings-v1

要验证 ratings 应用程序已经被缩减,并且不再显示在产品页面上,请按照上一节中的说明访问产品页面。三次中的两次应该会看到消息 Ratings service is currently unavailable