仮想マシンでのBookinfo
この例では、仮想マシン(VM)上で実行される1つのサービスとともに、Kubernetes全体にBookinfoアプリケーションをデプロイし、このインフラストラクチャを単一のメッシュとして制御する方法を示します。
概要
始める前に
仮想マシンインストールガイドの指示に従ってIstioをセットアップします。
Bookinfoサンプルアプリケーションを(
bookinfo
名前空間に)デプロイします。仮想マシンの構成の手順に従って、VMを作成し、
vm
名前空間に追加します。
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を使用するように強制するルーティングルールを指定します。
$ kubectl apply -n bookinfo -f @samples/bookinfo/platform/kube/bookinfo-ratings-v2-mysql-vm.yaml@
Bookinfoが評価バックエンドを使用するように強制するルーティングルールを作成します
$ 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のホスト名への呼び出しを可能にします。
クリーンアップ
Bookinfo
のクリーンアップの手順に従って、Bookinfo
サンプルアプリケーションとその構成を削除します。mysqldb
サービスを削除します$ kubectl delete service mysqldb
仮想マシンのアンインストールの手順に従って、VMをクリーンアップします。