本番環境でのテスト
本番環境でマイクロサービスをテストしましょう!
個々のマイクロサービスのテスト
テストポッドからサービスのいずれかにHTTPリクエストを発行します。
$ kubectl exec $(kubectl get pod -l app=curl -o jsonpath='{.items[0].metadata.name}') -- curl -sS http://ratings:9080/ratings/7
カオステスト
本番環境でカオステストを行い、アプリケーションの反応を確認します。各カオス操作の後、アプリケーションのウェブページにアクセスして、何か変更があったかどうかを確認します。kubectl get pods
を使用してポッドの状態を確認します。
1つのポッドで
details
サービスを終了します。$ kubectl exec $(kubectl get pods -l app=details -o jsonpath='{.items[0].metadata.name}') -- pkill ruby
ポッドの状態を確認します。
$ kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-6d86fd9949-fr59p 1/1 Running 1 47m details-v1-6d86fd9949-mksv7 1/1 Running 0 47m details-v1-6d86fd9949-q8rrf 1/1 Running 0 48m productpage-v1-c9965499-hwhcn 1/1 Running 0 47m productpage-v1-c9965499-nccwq 1/1 Running 0 47m productpage-v1-c9965499-tjdjx 1/1 Running 0 48m ratings-v1-7bf577cb77-cbdsg 1/1 Running 0 47m ratings-v1-7bf577cb77-cz6jm 1/1 Running 0 47m ratings-v1-7bf577cb77-pq9kg 1/1 Running 0 48m reviews-v1-77c65dc5c6-5wt8g 1/1 Running 0 47m reviews-v1-77c65dc5c6-kjvxs 1/1 Running 0 48m reviews-v1-77c65dc5c6-r55tl 1/1 Running 0 47m curl-88ddbcfdd-l9zq4 1/1 Running 0 47m
最初のポッドは1回再起動されました。
すべてのポッドで
details
サービスを終了します。$ for pod in $(kubectl get pods -l app=details -o jsonpath='{.items[*].metadata.name}'); do echo terminating "$pod"; kubectl exec "$pod" -- pkill ruby; done
アプリケーションのウェブページを確認します。
Bookinfo Webアプリケーション、詳細情報が利用できません。 詳細セクションには、書籍の詳細情報ではなくエラーメッセージが表示されます。
ポッドの状態を確認します。
$ kubectl get pods NAME READY STATUS RESTARTS AGE details-v1-6d86fd9949-fr59p 1/1 Running 2 48m details-v1-6d86fd9949-mksv7 1/1 Running 1 48m details-v1-6d86fd9949-q8rrf 1/1 Running 1 49m productpage-v1-c9965499-hwhcn 1/1 Running 0 48m productpage-v1-c9965499-nccwq 1/1 Running 0 48m productpage-v1-c9965499-tjdjx 1/1 Running 0 48m ratings-v1-7bf577cb77-cbdsg 1/1 Running 0 48m ratings-v1-7bf577cb77-cz6jm 1/1 Running 0 48m ratings-v1-7bf577cb77-pq9kg 1/1 Running 0 49m reviews-v1-77c65dc5c6-5wt8g 1/1 Running 0 48m reviews-v1-77c65dc5c6-kjvxs 1/1 Running 0 49m reviews-v1-77c65dc5c6-r55tl 1/1 Running 0 48m curl-88ddbcfdd-l9zq4 1/1 Running 0 48m
最初のポッドは2回、他の2つの
details
ポッドは1回再起動されました。ポッドがRunning
状態になるまで、Error
とCrashLoopBackOff
の状態が発生する可能性があります。トラフィックをシミュレートするために実行されている無限ループを停止するには、ターミナルでCtrl-Cを使用します。
いずれの場合も、アプリケーションはクラッシュしませんでした。details
マイクロサービスのクラッシュは、他のマイクロサービスの障害を引き起こしませんでした。この動作は、この状況でカスケード障害が発生しなかったことを意味します。代わりに、段階的なサービス劣化が発生しました。1つのマイクロサービスがクラッシュしたにもかかわらず、アプリケーションは依然として有用な機能を提供することができました。書籍のレビューと基本情報が表示されました。
レビューアプリケーションの新しいバージョンの追加の準備ができました。