在所有微服务上启用 Istio

在上一节,您在单个名为 productpage 的微服务上启用了 Istio。 您还可以逐渐在更多微服务中启用 Istio,为更多微服务增加 Istio 功能。 本教程的教学目的是让您能够在其余所有微服务上一步到位地启用 Istio。

  1. 为了达成这个教学目的,先将微服务的部署规模缩小为 1:

    1. $ kubectl scale deployments --all --replicas 1
  2. 重新部署启用 Istio 的 Bookinfo 应用。productpage 服务不会被重新部署,因为此服务已注入 Istio,并且无需变更此服务的 Pod。 此时您可以在单个副本的微服务集群中启用 Istio。

    1. $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml | istioctl kube-inject -f - | kubectl apply -l app!=reviews -f -
    2. $ curl -s https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml | istioctl kube-inject -f - | kubectl apply -l app=reviews,version=v2 -f -
    3. service/details unchanged
    4. serviceaccount/bookinfo-details unchanged
    5. deployment.apps/details-v1 configured
    6. service/ratings unchanged
    7. serviceaccount/bookinfo-ratings unchanged
    8. deployment.apps/ratings-v1 configured
    9. serviceaccount/bookinfo-reviews unchanged
    10. service/productpage unchanged
    11. serviceaccount/bookinfo-productpage unchanged
    12. deployment.apps/productpage-v1 configured
    13. deployment.apps/reviews-v2 configured
  3. 多次访问应用的网页。需要注意的是,Istio 的添加是无侵入的, 原有的应用不会发生变化。Istio 是在应用的运行过程中被添加的,不需要撤销部署和重新部署整个应用。

  4. 检查应用 Pod,并验证现在每个 Pod 有两个容器。 一个容器是微服务本身,另一个是附加在微服务上的 Sidecar 代理:

    1. $ kubectl get pods
    2. details-v1-58c68b9ff-kz9lf 2/2 Running 0 2m
    3. productpage-v1-59b4f9f8d5-d4prx 2/2 Running 0 2m
    4. ratings-v1-b7b7fbbc9-sggxf 2/2 Running 0 2m
    5. reviews-v2-dfbcf859c-27dvk 2/2 Running 0 2m
    6. curl-88ddbcfdd-cc85s 1/1 Running 0 7h
  5. 通过您之前/etc/hosts 文件中配置的自定义 URL 来访问 Istio 仪表盘:

    1. http://my-istio-dashboard.io/dashboard/db/istio-mesh-dashboard
  6. 在左上角的下拉菜单中,选择 Istio Mesh Dashboard。 注意现在您的命名空间的所有服务都会出现在服务列表中。

    Istio Mesh Dashboard
    Istio Mesh Dashboard
  7. Istio Service Dashboard 仪表盘中检查其他微服务,如 ratings

    Istio Service Dashboard
    Istio Service Dashboard
  8. 通过 Kiali 控制台的可视化界面来查看您的应用的拓扑结构。 这个控制台不是 Istio 的一部分,而是作为 demo 配置安装的。 通过您之前/etc/hosts 文件中配置的自定义 URL 来访问此仪表盘:

    1. http://my-kiali.io/kiali/console

    如果您的 Kiali 是通过入门指南安装的, Kiali 控制台用户名是 admin,密码是 admin

  9. 在左上角点击 Graph 页签,并在 Namespace 下拉菜单中选择您的命名空间。然后在 Display 下拉菜单中勾选 Traffic Animation 复选框,就可以看到一些很酷的流量动画。

    Kiali Graph 页签和 Display 下拉菜单
    Kiali Graph 页签和 Display 下拉菜单
  10. 尝试在 Edge Labels 下拉菜单中选择不同的菜单项。 可以将鼠标悬停在图表的节点和边框上。注意右侧的流量指标。

    Kiali Graph 页签和 edge labels 下拉菜单
    Kiali Graph 页签和 edge labels 下拉菜单
    Kiali Graph 页签
    Kiali Graph 页签

您现在可以去配置 Istio Ingress Gateway 了。