Bob's Books
始める前に
- 
インストールの手順に従って、Verrazzanoをインストールします。 
- 
サンプル・イメージをダウンロードするには、まずライセンス契約に同意する必要があります。 - ブラウザで、https://container-registry.oracle.com/に移動してサインインします。
- example-bobbys-coherence、- example-bobbys-front-end、- example-bobs-books-order-manager、- example-roberts-coherenceおよび- weblogicを検索します。
- それぞれに対して、次を行います:
- 結果の中でイメージ名を選択します。
- ドロップダウン・メニューから、ご使用の言語を選択し、「続行」をクリックします。
- 次に、ライセンス契約を読み、同意してください。
 
 ノート: Bob’s Booksサンプル・アプリケーションのデプロイメント・ファイルは、 <VERRAZZANO_HOME>/examples/bobs-booksにあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>は、Verrazzanoプロジェクトのルートです)。
概要
Bob's Booksは、次の3つの主要部分で構成されています:
- バックエンドの注文処理アプリケーション。これは、RESTサービスと非常に単純なJSP UIを備えたJava EEアプリケーションで、MySQLデータベースにデータを格納します。このアプリケーションはWebLogic Serverで実行されます。
- フロントエンドのWebストアであるRobert's Books。これは一般の書籍販売者です。これは、Helidonマイクロサービスとして実装されます。Coherenceからブック・データを取得し、Coherenceキャッシュ・ストアを使用してオーダー・マネージャのデータを保持し、React Web UIを持ちます。
- フロントエンドのWebストアであるBobby's Books。これは、児童書専門店です。これは、Helidonマイクロサービスとして実装されます。(異なる)Coherenceキャッシュ・ストアからブック・データを取得し、オーダー・マネージャと直接インタフェースし、JSF Web UIをWebLogic Server上で実行します。
このアプリケーションの詳細およびソース・コードについては、Verrazzanoの例を参照してください。
アプリケーションのデプロイ
ノート
このアプリケーションをデフォルトのネームスペースで実行するには:
$ kubectl label namespace default verrazzano-managed=true istio-injection=enabled
デフォルトのネームスペースを選択した場合は、ステップ1をスキップして、残りのコマンドの-nオプションを無視できます。
- 
サンプルのネームスペースを作成し、ネームスペースがVerrazzanoによって管理されることを示すラベルを追加します。 $ kubectl create namespace bobs-books $ kubectl label namespace bobs-books verrazzano-managed=true istio-injection=enabled
- 
docker-registryシークレットを作成し、レジストリからサンプル・イメージをプルできるようにします。$ kubectl create secret docker-registry bobs-books-repo-credentials \ --docker-server=container-registry.oracle.com \ --docker-username=YOUR_REGISTRY_USERNAME \ --docker-password=YOUR_REGISTRY_PASSWORD \ --docker-email=YOUR_REGISTRY_EMAIL \ -n bobs-booksYOUR_REGISTRY_USERNAME、YOUR_REGISTRY_PASSWORDおよびYOUR_REGISTRY_EMAILを、レジストリへのアクセスに使用する値に置き換えます。
- 
WebLogicドメインのシークレットを作成します: # Replace the values of the WLS_USERNAME and WLS_PASSWORD environment variables as appropriate. $ export WLS_USERNAME=<username> $ export WLS_PASSWORD=<password> $ kubectl create secret generic bobbys-front-end-weblogic-credentials \ --from-literal=password=$WLS_PASSWORD \ --from-literal=username=$WLS_USERNAME \ -n bobs-books $ kubectl create secret generic bobs-bookstore-weblogic-credentials \ --from-literal=password=$WLS_PASSWORD \ --from-literal=username=$WLS_USERNAME \ -n bobs-books $ kubectl create secret generic mysql-credentials \ --from-literal=username=$WLS_USERNAME \ --from-literal=password=$WLS_PASSWORD \ --from-literal=url=jdbc:mysql://mysql.bobs-books.svc.cluster.local:3306/books \ -n bobs-booksサンプル・アプリケーションは、特定のシークレット名を使用するように事前構成されています。このアプリケーションのソース・コードについては、Verrazzanoの例を参照してください。ソース・コードで指定されているものとは異なるシークレット名を使用する場合は、対応するYAMLファイルを更新し、サンプル・アプリケーションのDockerイメージを再作成する必要があります。 
- 
アプリケーションをデプロイするには、サンプル・リソースを適用します。 $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.4.8/examples/bobs-books/bobs-books-comp.yaml -n bobs-books $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.4.8/examples/bobs-books/bobs-books-app.yaml -n bobs-books
- 
Bob’s Booksサンプル・アプリケーションのすべてのポッドの準備ができるまで待ちます。ポッドのリストおよび出力の検査によって進捗をモニターするか、 kubectl waitコマンドを使用できます。成功するまで、 kubectl waitコマンドを複数回繰り返す必要がある場合があります。WebLogic ServerおよびCoherenceポッドが作成されてReadyになるまで時間がかかる場合があります。$ kubectl get pods -n bobs-books # -or- # $ kubectl wait \ --for=condition=Ready pods \ --all -n bobs-books \ --timeout=600s
- 
istio-ingressgatewayサービスのEXTERNAL_IPアドレスを取得します。$ ADDRESS=$(kubectl get service \ -n istio-system istio-ingressgateway \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}') $ echo $ADDRESS # Sample output 11.22.33.44
- 
アプリケーション用に生成されたホスト名を取得します。 $ HOST=$(kubectl get gateways.networking.istio.io bobs-books-bobs-books-gw \ -n bobs-books \ -o jsonpath='{.spec.servers[0].hosts[0]}') $ echo $HOST # Sample output bobs-books.bobs-books.11.22.33.44.nip.io
- 
アプリケーションにアクセスします。ブラウザでアプリケーションにアクセスするには、次のいずれかを実行する必要があります: - 
オプション1: nip.ioを使用している場合は、生成されたホスト名を使用してアプリケーションにアクセスできます。たとえば:- 
Robert’s Books UI: https://bobs-books.bobs-books.11.22.33.44.nip.io/。
- 
Bobby’s Books UI: https://bobs-books.bobs-books.11.22.33.44.nip.io/bobbys-front-end/。
- 
Bob’sのオーダー・マネージャUI: https://bobs-books.bobs-books.11.22.33.44.nip.io/bobs-bookstore-order-manager/orders。
 
- 
- 
オプション2: 一時的に、 /etc/hostsファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hostsファイル(Windows 10の場合)を変更して、アプリケーションで使用されるホストをゲートウェイに割り当てられた外部IPアドレスにマップするエントリ・マッピングを追加します。たとえば:11.22.33.44 bobs-books.example.comその後、ブラウザを使用してアプリケーションにアクセスできます: - 
Robert’s Books UI: https://bobs-books.example.com/。
- 
Bobby’s Books UI: https://bobs-books.example.com/bobbys-front-end/。
- 
Bob’sのオーダー・マネージャUI: https://bobs-books.example.com/bobs-bookstore-order-manager/orders。
 
- 
- 
オプション3: または、独自のDNS名をロード・バランサの外部IPアドレスに指定します。この場合、アプリケーションのデプロイ前に、 bobs-books-app.yamlファイルを編集して、アプリケーションのhostsセクション(your-roberts-books-host.your.domainなど)で適切な値を使用する必要があります。その後、ブラウザを使用してアプリケーションにアクセスできます:- 
Robert’s Books UI: https://<your-roberts-books-host.your.domain>/。
- 
Bobby’s Books UI: https://<your-bobbys-books-host.your.domain>/bobbys-front-end/。
- 
Bob’sのオーダー・マネージャUI: https://<your-bobs-orders-host.your.domain>/。
 
- 
 
- 
WebLogic Server管理コンソールを使用したアプリケーションのアクセス
WebLogic Server管理コンソールを使用して、次のようにアプリケーションにアクセスします。
ノート
WebLogic Server管理コンソールは公開しないことをお薦めします。bobs-bookstoreへのアクセス
- 
ポート転送を設定します。 $ kubectl port-forward pods/bobs-bookstore-adminserver 7001:7001 -n bobs-booksノート: Oracle Cloud Infrastructure Cloud Shellで kubectlを実行する場合、ポート転送を使用してWebLogic Server管理コンソールにアクセスするには、別のマシンでkubectlを実行する必要があります。
- 
ブラウザからWebLogic Server管理コンソールにアクセスします。 http://localhost:7001/console
bobbys-front-endへのアクセス
- 
ポート転送を設定します。 $ kubectl port-forward pods/bobbys-front-end-adminserver 7001:7001 -n bobs-booksノート: Oracle Cloud Infrastructure Cloud Shellで kubectlを実行する場合、ポート転送を使用してWebLogic Server管理コンソールにアクセスするには、別のマシンでkubectlを実行する必要があります。
- 
ブラウザからWebLogic Server管理コンソールにアクセスします。 http://localhost:7001/console
デプロイされたアプリケーションの確認
- 
アプリケーション構成、ドメイン、Coherenceリソースおよびイングレス・トレイトがすべて存在することを確認します。 $ kubectl get ApplicationConfiguration -n bobs-books $ kubectl get Domain -n bobs-books $ kubectl get Coherence -n bobs-books $ kubectl get IngressTrait -n bobs-books
- 
サービス・ポッドが正常に作成され、 READY状態に移行していることを確認します。これには数分かかる場合があり、一部のサービスが終了して再起動する場合があります。$ kubectl get pods -n bobs-books # Sample output NAME READY STATUS RESTARTS AGE bobbys-helidon-stock-application-868b5965c8-dk2xb 3/3 Running 0 19h bobbys-coherence-0 2/2 Running 0 19h bobbys-front-end-adminserver 3/3 Running 0 19h bobbys-front-end-managed-server1 3/3 Running 0 19h bobs-bookstore-adminserver 3/3 Running 0 19h bobs-bookstore-managed-server1 3/3 Running 0 19h mysql-669665fb54-9m8wq 2/2 Running 0 19h robert-helidon-96997fcd5-kzjkf 3/3 Running 0 19h robert-helidon-96997fcd5-nlswm 3/3 Running 0 19h roberts-coherence-0 2/2 Running 0 17h roberts-coherence-1 2/2 Running 0 17h
アプリケーションのアンデプロイ
- 
アプリケーションをアンデプロイするには、Bob’s Books OAMリソースを削除します。 $ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.4.8/examples/bobs-books/bobs-books-app.yaml -n bobs-books $ kubectl delete -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.4.8/examples/bobs-books/bobs-books-comp.yaml -n bobs-books
- 
アプリケーション・ポッドの終了後にネームスペース bobs-booksを削除します。WebLogicドメイン用に作成されたシークレットも削除されます。$ kubectl delete namespace bobs-books