mirror of https://github.com/istio/istio.io.git
[zh] sync pages in /docs/examples/ (#13210)
This commit is contained in:
parent
7614bd2d1e
commit
69a969a503
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: 示例
|
||||
description: 这里包括多个可供 Istio 使用的可完整工作的示例,你可以用来亲自部署和体验这些示例。
|
||||
description: 这里包括多个可供 Istio 使用的可完整工作的示例,您可以用来亲自部署和体验这些示例。
|
||||
weight: 30
|
||||
icon: examples
|
||||
aliases:
|
||||
|
|
|
@ -22,10 +22,10 @@ test: yes
|
|||
|
||||
Bookinfo 应用分为四个单独的微服务:
|
||||
|
||||
* `productpage`. 这个微服务会调用 `details` 和 `reviews` 两个微服务,用来生成页面。
|
||||
* `details`. 这个微服务中包含了书籍的信息。
|
||||
* `reviews`. 这个微服务中包含了书籍相关的评论。它还会调用 `ratings` 微服务。
|
||||
* `ratings`. 这个微服务中包含了由书籍评价组成的评级信息。
|
||||
* `productpage`:这个微服务会调用 `details` 和 `reviews` 两个微服务,用来生成页面。
|
||||
* `details`:这个微服务中包含了书籍的信息。
|
||||
* `reviews`:这个微服务中包含了书籍相关的评论。它还会调用 `ratings` 微服务。
|
||||
* `ratings`:这个微服务中包含了由书籍评价组成的评级信息。
|
||||
|
||||
`reviews` 微服务有 3 个版本:
|
||||
|
||||
|
@ -38,7 +38,8 @@ Bookinfo 应用分为四个单独的微服务:
|
|||
{{< image width="80%" link="./noistio.svg" caption="Bookinfo Application without Istio" >}}
|
||||
|
||||
Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
||||
这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:它由多个服务、多个语言构成,并且 `reviews` 服务具有多个版本。
|
||||
这些服务对 Istio 并无依赖,但是构成了一个有代表性的服务网格的例子:
|
||||
它由多个服务、多个语言构成,并且 `reviews` 服务具有多个版本。
|
||||
|
||||
## 开始之前{#before-you-begin}
|
||||
|
||||
|
@ -49,12 +50,13 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
## 部署应用{#deploying-the-application}
|
||||
|
||||
要在 Istio 中运行这一应用,无需对应用自身做出任何改变。
|
||||
您只要简单的在 Istio 环境中对服务进行配置和运行,具体一点说就是把 Envoy sidecar 注入到每个服务之中。
|
||||
您只要简单的在 Istio 环境中对服务进行配置和运行,具体一点说就是把 Envoy Sidecar 注入到每个服务之中。
|
||||
最终的部署结果将如下图所示:
|
||||
|
||||
{{< image width="80%" link="./withistio.svg" caption="Bookinfo Application" >}}
|
||||
|
||||
所有的微服务都和 Envoy sidecar 集成在一起,被集成服务所有的出入流量都被 sidecar 所劫持,这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。
|
||||
所有的微服务都和 Envoy Sidecar 集成在一起,被集成服务所有的出入流量都被 Sidecar 所劫持,
|
||||
这样就为外部控制准备了所需的 Hook,然后就可以利用 Istio 控制平面为应用提供服务路由、遥测数据收集以及策略实施等功能。
|
||||
|
||||
### 启动应用服务{#start-the-application-services}
|
||||
|
||||
|
@ -72,7 +74,9 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
{{< /text >}}
|
||||
|
||||
{{< warning >}}
|
||||
如果您使用 OpenShift,请确保按照[OpenShift设置页面](/zh/docs/setup/platform-setup/openshift/#privileged-security-context-constraints-for-application-sidecars)中所述为命名空间上的服务帐户授予适当的权限
|
||||
如果您使用 OpenShift,请确保按照
|
||||
[OpenShift 设置页面](/zh/docs/setup/platform-setup/openshift/#privileged-security-context-constraints-for-application-sidecars)
|
||||
中所述为命名空间上的服务帐户授予适当的权限
|
||||
{{< /warning >}}
|
||||
|
||||
1. 使用 `kubectl` 部署应用:
|
||||
|
@ -82,7 +86,10 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
{{< /text >}}
|
||||
|
||||
{{< warning >}}
|
||||
如果您在安装过程中禁用了 Sidecar 自动注入功能而选择[手动注入 Sidecar](/zh/docs/setup/additional-setup/sidecar-injection/#manual-sidecar-injection),请在部署应用之前使用 [`istioctl kube-inject`](/zh/docs/reference/commands/istioctl/#istioctl-kube-inject) 命令修改 `bookinfo.yaml` 文件。
|
||||
如果您在安装过程中禁用了 Sidecar
|
||||
自动注入功能而选择[手动注入 Sidecar](/zh/docs/setup/additional-setup/sidecar-injection/#manual-sidecar-injection),
|
||||
请在部署应用之前使用 [`istioctl kube-inject`](/zh/docs/reference/commands/istioctl/#istioctl-kube-inject)
|
||||
命令修改 `bookinfo.yaml` 文件。
|
||||
|
||||
{{< text bash >}}
|
||||
$ kubectl apply -f <(istioctl kube-inject -f @samples/bookinfo/platform/kube/bookinfo.yaml@)
|
||||
|
@ -130,7 +137,8 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
|
||||
### 确定 Ingress 的 IP 和端口{#determine-the-ingress-IP-and-port}
|
||||
|
||||
现在 Bookinfo 服务启动并运行中,您需要使应用程序可以从外部访问 Kubernetes 集群,例如使用浏览器。可以使用网关实现这个目标。
|
||||
现在 Bookinfo 服务启动并运行中,您需要使应用程序可以从外部访问 Kubernetes 集群,
|
||||
例如使用浏览器。可以使用网关实现这个目标。
|
||||
|
||||
1. 为 Bookinfo 应用程序定义一个网关:
|
||||
|
||||
|
@ -154,13 +162,15 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
bookinfo-gateway 32s
|
||||
{{< /text >}}
|
||||
|
||||
遵循[这些指示说明](/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports)设置 `INGRESS_HOST` 和 `INGRESS_PORT` 变量来访问网关。设置好变量后,返回此处。
|
||||
遵循[这些指示说明](/zh/docs/tasks/traffic-management/ingress/ingress-control/#determining-the-ingress-ip-and-ports)
|
||||
设置 `INGRESS_HOST` 和 `INGRESS_PORT` 变量来访问网关。设置好变量后,返回此处。
|
||||
|
||||
{{< /tab >}}
|
||||
|
||||
{{< tab name="Gateway API" category-value="gateway-api" >}}
|
||||
|
||||
{{< boilerplate external-loadbalancer-support >}}
|
||||
|
||||
使用以下命令创建 [Kubernetes Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/):
|
||||
|
||||
{{< text bash >}}
|
||||
|
@ -170,7 +180,8 @@ Bookinfo 应用中的几个微服务是由不同的语言编写的。
|
|||
{{< /text >}}
|
||||
|
||||
因为创建 Kubernetes `Gateway` 资源也会
|
||||
[部署关联的代理服务](/zh/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment),所以运行以下命令等待网关就绪:
|
||||
[部署关联的代理服务](/zh/docs/tasks/traffic-management/ingress/gateway-api/#automated-deployment),
|
||||
所以运行以下命令等待网关就绪:
|
||||
|
||||
{{< text bash >}}
|
||||
$ kubectl wait --for=condition=programmed gtw bookinfo-gateway
|
||||
|
@ -202,7 +213,9 @@ $ curl -s "http://${GATEWAY_URL}/productpage" | grep -o "<title>.*</title>"
|
|||
<title>Simple Bookstore App</title>
|
||||
{{< /text >}}
|
||||
|
||||
还可以用浏览器打开网址 `http://$GATEWAY_URL/productpage`,来浏览应用的 Web 页面。如果刷新几次应用的页面,就会看到 `productpage` 页面中会随机展示 `reviews` 服务的不同版本的效果(红色、黑色的星形或者没有显示)。`reviews` 服务出现这种情况是因为我们还没有使用 Istio 来控制版本的路由。
|
||||
还可以用浏览器打开网址 `http://$GATEWAY_URL/productpage`,来浏览应用的 Web 页面。
|
||||
如果刷新几次应用的页面,就会看到 `productpage` 页面中会随机展示 `reviews` 服务的不同版本的效果
|
||||
(红色、黑色的星形或者没有显示)。`reviews` 服务出现这种情况是因为我们还没有使用 Istio 来控制版本的路由。
|
||||
|
||||
## 定义服务版本{#define-the-service-versions}
|
||||
|
||||
|
@ -212,15 +225,17 @@ $ curl -s "http://${GATEWAY_URL}/productpage" | grep -o "<title>.*</title>"
|
|||
|
||||
{{< tab name="Istio classic" category-value="istio-classic" >}}
|
||||
|
||||
Istio 在[目标规则](/zh/docs/concepts/traffic-management/#destination-rules)中使用 *subsets* 定义服务的版本。
|
||||
运行以下命令为 Bookinfo 服务创建默认的目标规则:
|
||||
Istio 在[目标规则](/zh/docs/concepts/traffic-management/#destination-rules)中使用
|
||||
**subsets** 定义服务的版本。运行以下命令为 Bookinfo 服务创建默认的目标规则:
|
||||
|
||||
{{< text bash >}}
|
||||
$ kubectl apply -f @samples/bookinfo/networking/destination-rule-all.yaml@
|
||||
{{< /text >}}
|
||||
|
||||
{{< tip >}}
|
||||
`default` 和 `demo` 的[配置文件](/zh/docs/setup/additional-setup/config-profiles/)默认情况下启用了[自动双向 TLS](/zh/docs/tasks/security/authentication/authn-policy/#auto-mutual-tls)。要强制执行双向 TLS,请使用 `samples/bookinfo/networking/destination-rule-all-mtls.yaml` 中的目标规则。
|
||||
`default` 和 `demo` 的[配置文件](/zh/docs/setup/additional-setup/config-profiles/)默认情况下启用了
|
||||
[自动双向 TLS](/zh/docs/tasks/security/authentication/authn-policy/#auto-mutual-tls)。
|
||||
要强制执行双向 TLS,请使用 `samples/bookinfo/networking/destination-rule-all-mtls.yaml` 中的目标规则。
|
||||
{{< /tip >}}
|
||||
|
||||
等待几秒钟,以使目标规则生效。
|
||||
|
@ -251,7 +266,8 @@ $ kubectl apply -f @samples/bookinfo/platform/kube/bookinfo-versions.yaml@
|
|||
## 下一步{#what-s-next}
|
||||
|
||||
现在就可以使用这一应用来体验 Istio 的特性了,其中包括了流量的路由、错误注入、速率限制等。
|
||||
接下来可以根据个人爱好去阅读和演练 [Istio 实例](/zh/docs/tasks)。这里为新手推荐[智能路由](/zh/docs/tasks/traffic-management/request-routing/)功能作为起步课程。
|
||||
接下来可以根据个人爱好去阅读和演练 [Istio 实例](/zh/docs/tasks)。
|
||||
这里为新手推荐[智能路由](/zh/docs/tasks/traffic-management/request-routing/)功能作为起步课程。
|
||||
|
||||
## 清理{#cleanup}
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ Kubernetes 只有在新的 Pod 开始运行的时候才会终止老的 Pod,它
|
|||
http://my-istio-dashboard.io/dashboard/db/istio-mesh-dashboard
|
||||
{{< /text >}}
|
||||
|
||||
在左上角的下拉菜单中,选择 _Istio Mesh Dashboard_ 。
|
||||
在左上角的下拉菜单中,选择 **Istio Mesh Dashboard**。
|
||||
|
||||
{{< image width="80%"
|
||||
link="dashboard-select-dashboard.png"
|
||||
|
@ -104,7 +104,7 @@ Kubernetes 只有在新的 Pod 开始运行的时候才会终止老的 Pod,它
|
|||
caption="Istio Service Dashboard"
|
||||
>}}
|
||||
|
||||
这是在一个微服务中应用 Istio 的直接优点,您可以收到进出微服务的流量日志,包括时间、HTTP方法、路径和响应代码。您可以用 Istio 仪表盘监控您的微服务。
|
||||
这是在一个微服务中应用 Istio 的直接优点,您可以收到进出微服务的流量日志,包括时间、HTTP 方法、路径和响应代码。您可以用 Istio 仪表盘监控您的微服务。
|
||||
|
||||
在下一个模块,您将会学习到关于 Istio 可以为您的应用提供的功能。当 Istio 的功能对微服务是有益的时候,您将学习如何在整个应用程序上使用 Istio 来实现其全部潜力。
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ owner: istio/wg-docs-maintainers
|
|||
test: no
|
||||
---
|
||||
|
||||
在此模块中,你将部署 reviews 服务的一个新版本 v2,该服务将返回审阅人员提供的评分星级和评级颜色。
|
||||
在此模块中,您将部署 reviews 服务的一个新版本 v2,该服务将返回审阅人员提供的评分星级和评级颜色。
|
||||
在实际场景中,在部署之前,您将在模拟环境中执行静态分析测试、单元测试、集成测试、端到端测试和验证。
|
||||
|
||||
1. 部署 `reviews` 不带 `app=reviews` 标签的新版本微服务。没有此标签,将不会选择新版本 `reviews` 来提供服务。
|
||||
|
@ -19,7 +19,7 @@ test: no
|
|||
deployment.apps/reviews-v2 created
|
||||
{{< /text >}}
|
||||
|
||||
1. 访问你的应用程序以确保已部署的微服务不会破坏它。
|
||||
1. 访问您的应用程序以确保已部署的微服务不会破坏它。
|
||||
|
||||
1. 从集群内部使用您之前部署的测试容器测试新版本的微服务。请注意您的新版本在测试期间访问微服务 ratings 的生产 Pods。
|
||||
还需要注意,您必须使用 Pod IP 访问新版本的微服务,因为它还没有被 `reviews` 服务选中。
|
||||
|
@ -86,14 +86,14 @@ test: no
|
|||
|
||||
多次访问程序页面,发现大约有 25% 的时间会出现黑色星级。
|
||||
|
||||
1. 接下来,增加新版本的副本。你可以慢慢的,仔细地检查没有错误的数量增加。
|
||||
1. 接下来,增加新版本的副本。您可以慢慢的,仔细地检查没有错误的数量增加。
|
||||
|
||||
{{< text bash >}}
|
||||
$ kubectl scale deployment reviews-v2 --replicas=3
|
||||
deployment.apps/reviews-v2 scaled
|
||||
{{< /text >}}
|
||||
|
||||
现在,你可以访问几次您的应用程序页面,看到黑色星级出现的时间大约是一半。
|
||||
现在,您可以访问几次您的应用程序页面,看到黑色星级出现的时间大约是一半。
|
||||
|
||||
1. 现在,您可以停用旧版:
|
||||
|
||||
|
@ -104,18 +104,18 @@ test: no
|
|||
|
||||
访问该应用程序的页面将只返回带有黑色的评级。
|
||||
|
||||
在以上步骤中,您执行了更新 `reviews`。首先,你发布了新版本且没有发送模拟生产流量。
|
||||
在以上步骤中,您执行了更新 `reviews`。首先,您发布了新版本且没有发送模拟生产流量。
|
||||
您在生产环境中使用测试流量对其进行了测试。您检查了新版本是否提供正确的结果。
|
||||
您发布了新版本,并逐渐增加其生产流量。最后,您停用了旧版本。
|
||||
|
||||
在这里,您可以使用以下示例任务来改进部署策略。首先,在生产中进行端到端测试。
|
||||
这要求能够使用请求参数(例如使用存储在 Cookie 中的用户名)将流量驱动到新版本。
|
||||
此外,对新版本的生产流量进行屏蔽,并检查新版本是否提供了错误的结果或者产生了错误。
|
||||
最后,获得对部署的更详细的控制。例如,你可以部署 1%,然后每小时增加 1%,只要服务没有被降级。
|
||||
Istio 直接帮助你执行这些任务来增强 Kubernetes 的价值。有关部署的更多详细信息和最佳实践,请参阅
|
||||
最后,获得对部署的更详细的控制。例如,您可以部署 1%,然后每小时增加 1%,只要服务没有被降级。
|
||||
Istio 直接帮助您执行这些任务来增强 Kubernetes 的价值。有关部署的更多详细信息和最佳实践,请参阅
|
||||
[部署模型](/zh/docs/ops/deployment/deployment-models/)。
|
||||
|
||||
在这里,你有两个选择:
|
||||
在这里,您有两个选择:
|
||||
|
||||
1. 使用 _service mesh_ 。在服务网格中,您将所有报告、路由、策略、安全逻辑放在 _Sidecar_ 代理中,并 *透明的* 注入到您的应用程序 Pod 中。业务逻辑保留在应用程序代码中,无需更改应用程序的代码。
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ test: no
|
|||
$ cat Dockerfile
|
||||
{{< /text >}}
|
||||
|
||||
请注意,它将文件复制到容器的文件系统中,然后执行你在上一个模块中执行过的 `npm install` 命令。
|
||||
请注意,它将文件复制到容器的文件系统中,然后执行您在上一个模块中执行过的 `npm install` 命令。
|
||||
`CMD` 命令指示 Docker 在 `9080` 端口上运行 `ratings` 服务。
|
||||
|
||||
1. 创建一个环境变量来存储您的用户 ID,该用户 ID 将用于标记 docker 镜像以进行 `ratings` 服务。
|
||||
|
@ -47,7 +47,7 @@ test: no
|
|||
{{< /text >}}
|
||||
|
||||
1. 在 Docker 中运行 `ratings` 服务. 接下来的 [docker run](https://docs.docker.com/engine/reference/commandline/run/) 命令
|
||||
指示 Docker 将容器的 `9080` 端口暴露到计算机的 `9081` 端口,从而允许你访问 `9081` 端口上的 `ratings` 微服务。
|
||||
指示 Docker 将容器的 `9080` 端口暴露到计算机的 `9081` 端口,从而允许您访问 `9081` 端口上的 `ratings` 微服务。
|
||||
|
||||
{{< text bash >}}
|
||||
$ docker run --name my-ratings --rm -d -p 9081:9080 $USER/rating
|
||||
|
|
|
@ -8,22 +8,22 @@ test: n/a
|
|||
|
||||
{{< boilerplate work-in-progress >}}
|
||||
|
||||
对于本教程,你需要一个 Kubernetes 集群,集群中需要包含本教程模块中的命名空间,
|
||||
并且可以在本地电脑上执行这些命令。如果你有自己的集群,确保集群满足这些前提条件。
|
||||
对于本教程,您需要一个 Kubernetes 集群,集群中需要包含本教程模块中的命名空间,
|
||||
并且可以在本地电脑上执行这些命令。如果您有自己的集群,确保集群满足这些前提条件。
|
||||
|
||||
如果你在一个学习班上,并且讲师提供了一个集群,让他们来处理集群的前提条件,你可以跳过本地电脑的设置。
|
||||
如果您在一个学习班上,并且讲师提供了一个集群,让他们来处理集群的前提条件,您可以跳过本地电脑的设置。
|
||||
|
||||
## Kubernetes 集群{#Kubernetes-cluster}
|
||||
|
||||
确保满足以下条件:
|
||||
|
||||
- 你拥有名为 `tutorial-cluster` 的 Kubernetes 集群管理员权限和集群上运行的虚拟机的管理员权限。
|
||||
- 你可以在集群中为每个参与者创建名称空间。
|
||||
- 您拥有名为 `tutorial-cluster` 的 Kubernetes 集群管理员权限和集群上运行的虚拟机的管理员权限。
|
||||
- 您可以在集群中为每个参与者创建名称空间。
|
||||
|
||||
## 本地计算机{#local-computer}
|
||||
|
||||
确保满足以下条件:
|
||||
|
||||
- 你拥有本地计算机 `/etc/hosts` 文件的写入权限。
|
||||
- 你可以在本地计算机上下载、安装和运行命令行工具。
|
||||
- 在本教程期间,你可以连接到网络。
|
||||
- 您拥有本地计算机 `/etc/hosts` 文件的写入权限。
|
||||
- 您可以在本地计算机上下载、安装和运行命令行工具。
|
||||
- 在本教程期间,您可以连接到网络。
|
||||
|
|
|
@ -15,7 +15,7 @@ test: no
|
|||
|
||||
在微服务架构时代,开发人员编写、构建、测试和运行小型的软件服务。构建是快速的。使用类似
|
||||
[Node.js](https://nodejs.org/zh-cn/) 这样的现代框架, 由于服务是作为常规进程来运行的,就不需要安装并管理
|
||||
复杂的服务环境来测试它了。您不再仅仅为了测试您的服务就得将它部署到某个环境了,您只需要构建您的服务并且直接在你本地机器上运行即可。
|
||||
复杂的服务环境来测试它了。您不再仅仅为了测试您的服务就得将它部署到某个环境了,您只需要构建您的服务并且直接在您本地机器上运行即可。
|
||||
|
||||
该模块涵盖了在本地机器上开发单个服务所涉及的不同方面。不过,您无需编写代码,只需要编译、运行和测试现有服务 `rating`。
|
||||
|
||||
|
|
|
@ -14,15 +14,16 @@ owner: istio/wg-environments-maintainers
|
|||
test: yes
|
||||
---
|
||||
|
||||
本示例通过在虚拟机(VM)上运行一项服务来跨 Kubernetes 部署 Bookinfo 应用程序,并说明了如何以单个网格的形式控制此基础架构。
|
||||
本示例通过在虚拟机(VM)上运行一项服务来跨 Kubernetes 部署 Bookinfo 应用程序,
|
||||
并说明了如何以单个网格的形式控制此基础架构。
|
||||
|
||||
## 概述{#overview}
|
||||
|
||||
{{< image width="80%" link="./vm-bookinfo.svg" caption="在虚机上运行 Bookinfo" >}}
|
||||
{{< image width="80%" link="./vm-bookinfo.svg" caption="在虚拟机上运行 Bookinfo" >}}
|
||||
|
||||
<!-- source of the drawing
|
||||
https://docs.google.com/drawings/d/1G1592HlOVgtbsIqxJnmMzvy6ejIdhajCosxF1LbvspI/edit
|
||||
-->
|
||||
-->
|
||||
|
||||
## 开始之前{#before-you-begin}
|
||||
|
||||
|
@ -30,13 +31,14 @@ https://docs.google.com/drawings/d/1G1592HlOVgtbsIqxJnmMzvy6ejIdhajCosxF1LbvspI/
|
|||
|
||||
- 部署 [Bookinfo](/zh/docs/examples/bookinfo/) 示例应用(在 `bookinfo` 命名空间下)。
|
||||
|
||||
- 按照[虚拟机配置](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine)创建一个虚拟机并添加到 `vm` 命名空间下。
|
||||
- 按照[虚拟机配置](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine)
|
||||
创建一个虚拟机并添加到 `vm` 命名空间下。
|
||||
|
||||
## 在虚拟机上运行 MySQL{#running-MySQL-on-the-VM}
|
||||
|
||||
您将在虚拟机上安装 MySQL,并将其配置为 ratings 服务的后端。
|
||||
|
||||
下列的所有命令都在虚机上执行。
|
||||
下列的所有命令都在虚拟机上执行。
|
||||
|
||||
安装 `mariadb`:
|
||||
|
||||
|
@ -69,7 +71,7 @@ $ curl -LO {{< github_file >}}/samples/bookinfo/src/mysql/mysqldb-init.sql
|
|||
$ mysql -u root -ppassword < mysqldb-init.sql
|
||||
{{< /text >}}
|
||||
|
||||
为了便于直观地检查 Bookinfo 应用程序输出中的差异,您可以使用以下命令来更改所生成的 ratings 数据库并且检查它:
|
||||
为了便于直观地检查 Bookinfo 应用程序输出中的差异,您可以使用以下命令来更改并检查所生成的 ratings 数据库:
|
||||
|
||||
{{< text bash >}}
|
||||
$ mysql -u root -ppassword test -e "select * from ratings;"
|
||||
|
@ -95,7 +97,8 @@ $ mysql -u root -ppassword test -e "update ratings set rating=1 where reviewid=
|
|||
|
||||
## 向网格中注册 mysql 服务{#registering-the-mysql-service-with-the-mesh}
|
||||
|
||||
当虚机启动时,将会自动被注册到网格中。然而,就像我们创建一个 Pod 一样,在更加便捷的访问之前需要创建一个 Service 。
|
||||
当虚拟机启动时,将会自动被注册到网格中。
|
||||
然而,就像创建 Pod 一样,仍需要创建一个 Service 才能进行轻松访问。
|
||||
|
||||
{{< text bash >}}
|
||||
$ cat <<EOF | kubectl apply -f - -n vm
|
||||
|
@ -116,7 +119,9 @@ EOF
|
|||
|
||||
## 使用 mysql 服务{#using-the-mysql-service}
|
||||
|
||||
Bookinfo 中的 ratings 服务将使用该虚拟机上的数据库。为了验证它是否正常工作,请在虚拟机上创建使用 mysql 数据库的 ratings 服务第二个版本。然后指定路由规则,用于强制 review 服务使用 ratings 服务的第二个版本。
|
||||
Bookinfo 中的 ratings 服务将使用该虚拟机上的数据库。
|
||||
为了验证它是否正常工作,请在虚拟机上创建使用 mysql 数据库的 ratings 服务第二个版本。
|
||||
然后指定路由规则,用于强制 review 服务使用 ratings 服务的第二个版本。
|
||||
|
||||
{{< text bash >}}
|
||||
$ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings-v2-mysql-vm.yaml@
|
||||
|
@ -128,17 +133,33 @@ $ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings-
|
|||
$ kubectl apply -n bookinfo -f @samples/bookinfo/networking/virtual-service-ratings-mysql-vm.yaml@
|
||||
{{< /text >}}
|
||||
|
||||
您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星,还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。
|
||||
您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星,
|
||||
还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。
|
||||
|
||||
## 从虚机访问 Kubernetes 服务{#reaching-Kubernetes-services-from-the-virtual-machine}
|
||||
## 从虚拟机访问 Kubernetes 服务{#reaching-Kubernetes-services-from-the-virtual-machine}
|
||||
|
||||
在上面的示例中,我们将虚拟机视为一个服务。 您还可以在您的虚拟机中无缝调用 Kubernetes 的服务:
|
||||
在上面的示例中,我们将虚拟机视为一个服务。
|
||||
您还可以在您的虚拟机中无缝调用 Kubernetes 的服务:
|
||||
|
||||
{{< text bash >}}
|
||||
$ curl productpage.bookinfo:9080
|
||||
...
|
||||
<title>Simple Bookstore App</title>
|
||||
<title>Simple Bookstore App</title>
|
||||
...
|
||||
{{< /text >}}
|
||||
|
||||
Istio 的 [DNS 代理](/zh/docs/ops/configuration/traffic-management/dns-proxy/)自动为您的虚机配置 DNS , 允许我们 Kubernetes 的主机名进行访问。
|
||||
Istio 的 [DNS 代理](/zh/docs/ops/configuration/traffic-management/dns-proxy/)自动为您的虚拟机配置
|
||||
DNS,允许通过 Kubernetes 的主机名进行访问。
|
||||
|
||||
## 清理{#cleanup}
|
||||
|
||||
- 按照 [`Bookinfo` 清理](/zh/docs/examples/bookinfo/#cleanup)中的步骤,
|
||||
删除 `Bookinfo` 样例应用及其配置。
|
||||
- 删除 `mysqldb` 服务:
|
||||
|
||||
{{< text syntax=bash snip_id=none >}}
|
||||
$ kubectl delete service mysqldb
|
||||
{{< /text >}}
|
||||
|
||||
- 按照[虚拟机卸载](/zh/docs/setup/install/virtual-machine/#configure-the-virtual-machine)
|
||||
中的步骤清理 VM。
|
||||
|
|
Loading…
Reference in New Issue