仮想マシンでのBookinfo

この例では、仮想マシン(VM)上で実行される1つのサービスとともに、Kubernetes全体にBookinfoアプリケーションをデプロイし、このインフラストラクチャを単一のメッシュとして制御する方法を示します。

概要

Bookinfo running on VMs
VMで実行されているBookinfo

始める前に

VMでのMySQLの実行

最初に、MySQLをVMにインストールし、ratingsサービスのバックエンドとして構成します。以下のすべてのコマンドは、VM上で実行する必要があります。

mariadbをインストールします

$ sudo apt-get update && sudo apt-get install -y mariadb-server
$ sudo sed -i '/bind-address/c\bind-address  = 0.0.0.0' /etc/mysql/mariadb.conf.d/50-server.cnf

認証を設定します

$ cat <<EOF | sudo mysql
# Grant access to root
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
# Grant root access to other IPs
CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit;
EOF
$ sudo systemctl restart mysql

MySQLの設定の詳細については、Mysqlを参照してください。

VMで、ratingsデータベースをmysqlに追加します。

$ curl -LO https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/src/mysql/mysqldb-init.sql
$ mysql -u root -ppassword < mysqldb-init.sql

Bookinfoアプリケーションの出力の違いを視覚的に簡単に確認できるように、以下のコマンドを使用して評価を検査することで、生成される評価を変更できます。

$ mysql -u root -ppassword test -e "select * from ratings;"
+----------+--------+
| ReviewID | Rating |
+----------+--------+
|        1 |      5 |
|        2 |      4 |
+----------+--------+

評価を変更するには、以下のコマンドを実行します。

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

mysqlサービスをメッシュに公開

仮想マシンが起動すると、自動的にメッシュに登録されます。ただし、Podを作成する場合と同様に、簡単にアクセスできるようにするには、最初にServiceを作成する必要があります。

$ cat <<EOF | kubectl apply -f - -n vm
apiVersion: v1
kind: Service
metadata:
  name: mysqldb
  labels:
    app: mysqldb
spec:
  ports:
  - port: 3306
    name: tcp
  selector:
    app: mysqldb
EOF

mysqlサービスの使用

Bookinfoの評価サービスは、マシン上のDBを使用します。動作を確認するために、VM上のmysql DBを使用する評価サービスのバージョン2を作成してください。次に、レビューサービスが評価サービスバージョン2を使用するように強制するルーティングルールを指定します。

zip
$ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings-v2-mysql-vm.yaml@

Bookinfoが評価バックエンドを使用するように強制するルーティングルールを作成します

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

Bookinfoアプリケーションの出力が、Reviewer1から1つ星、Reviewer2から4つ星を表示していることを確認するか、VMで評価を変更して結果を確認できます。

仮想マシンからのKubernetesサービスへの到達

上記の例では、仮想マシンを単なるサーバーとして扱いました。仮想マシンからKubernetesサービスをシームレスに呼び出すこともできます。

$ curl productpage.bookinfo:9080/productpage
...
<title>Simple Bookstore App</title>
...

IstioのDNSプロキシは、仮想マシンのDNSを自動的に構成し、Kubernetesのホスト名への呼び出しを可能にします。

クリーンアップ

この情報は役立ちましたか?
改善のためのご提案はありますか?

ご意見ありがとうございます!