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-books
YOUR_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