在虚拟机上部署 Bookinfo 应用程序

    在虚机上运行 Bookinfo

    开始之前

    • 按照的介绍来配置 Istio。

    • 部署 Bookinfo 示例应用(在 命名空间下)。

    • 按照创建一个虚拟机并添加到 vm 命名空间下。

    您将在虚拟机上安装 MySQL,并将其配置为 ratings 服务的后端。

    安装 mariadb

    设置认证信息:

    1. $ cat <<EOF | sudo mysql
    2. # 授予 root 的访问权限
    3. GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
    4. # 授予 root 其他 IP 的访问权限
    5. CREATE USER 'root'@'%' IDENTIFIED BY 'password';
    6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    7. quit;
    8. EOF
    9. $ sudo systemctl restart mysql

    您可以在 中找到配置 MySQL 的详细信息。

    在虚拟机上,将 ratings 数据库添加到 mysql 中。

    1. $ mysql -u root -ppassword < mysqldb-init.sql

    为了便于直观地检查 Bookinfo 应用程序输出中的差异,您可以使用以下命令来更改所生成的 ratings 数据库并且检查它:

    更改 ratings 数据库:

    1. $ mysql -u root -ppassword test -e "update ratings set rating=1 where reviewid=1;select * from ratings;"
    2. +----------+--------+
    3. | ReviewID | Rating |
    4. +----------+--------+
    5. | 1 | 1 |
    6. | 2 | 4 |
    7. +----------+--------+

    向网格中注册 mysql 服务

    1. $ cat <<EOF | kubectl apply -f - -n vm
    2. apiVersion: v1
    3. kind: Service
    4. labels:
    5. app: mysqldb
    6. spec:
    7. ports:
    8. - port: 3306
    9. name: tcp
    10. selector:
    11. app: mysqldb
    12. EOF

    Bookinfo 中的 ratings 服务将使用该虚拟机上的数据库。为了验证它是否正常工作,请在虚拟机上创建使用 mysql 数据库的 ratings 服务第二个版本。然后指定路由规则,用于强制 review 服务使用 ratings 服务的第二个版本。

    Zip

    创建强制 Bookinfo 使用 ratings 后端的路由规则:

    1. $ kubectl apply -n bookinfo -f @samples/bookinfo/networking/virtual-service-ratings-mysql-vm.yaml@

    您可以验证 Bookinfo 应用程序的输出显示的是 Reviewer1 的 1 个星,还是 Reviewer2 的 4 个星,或者更改虚拟机的 ratings 服务并查看结果。

    从虚机访问 Kubernetes 服务

    在上面的示例中,我们将虚拟机视为一个服务。 您还可以在您的虚拟机中无缝调用 Kubernetes 的服务:

    1. $ curl productpage.bookinfo:9080
    2. ...
    3. ...