Sock Shop
始める前に
インストールの手順に従って、Verrazzanoをインストールします。
ノート: Sock Shopサンプル・アプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/sockshopにあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>は、Verrazzanoプロジェクトのルートです)。
アプリケーションのデプロイ
このサンプル・アプリケーションでは、Sock Shopマイクロサービス・デモ・アプリケーションの様々な実装を示します。OAMリソースを使用して、アプリケーション・デプロイメントを定義します:
- helidonサブディレクトリ内のCoherenceおよびHelidon。
- micronautサブディレクトリ内のCoherenceおよびMicronaut。
- springサブディレクトリ内のCoherenceおよびSpring。
ノート
このアプリケーションをデフォルトのネームスペースで実行するには:
$ kubectl label namespace default verrazzano-managed=true
デフォルトのネームスペースを選択した場合は、ステップ1をスキップして、残りのコマンドの-nオプションを無視できます。
- 
Sock Shopアプリケーションのネームスペースを作成し、ネームスペースがVerrazzanoによって管理されることを示すラベルを追加します。 $ kubectl create namespace sockshop $ kubectl label namespace sockshop verrazzano-managed=true
- 
アプリケーションをデプロイするには、Sock Shop OAMリソースを適用します。 helidon、micronautまたはspringバリアントのいずれかをデプロイするよう選択します。
- 
Sock Shopアプリケーションの準備ができるまで待ちます。 $ kubectl wait \ --for=condition=Ready pods \ --all -n sockshop \ --timeout=300s
アプリケーションの探索
Sock Shopマイクロサービス・アプリケーションは、次を含むREST APIエンドポイントを実装します:
- /catalogue- Sock Shopカタログを返します。このエンドポイントは、- GETHTTPリクエスト・メソッドを受け入れます。
- /register-- { "username":"xxx", "password":"***", "email":"foo@example.com", "firstName":"foo", "lastName":"bar" }をPOSTしてユーザーを作成します。このエンドポイントは、- POSTHTTPリクエスト・メソッドを受け入れます。
ノート: 次の手順では、OKEなどのKubernetes環境を使用していることを前提としています。その他の環境やデプロイメントでは、アドレス、ポートなどを取得するための代替メカニズムが必要になる場合があります。
次のステップに従い、エンドポイントをテストします
- 
アプリケーション用に生成されたホスト名を取得します。 $ HOST=$(kubectl get gateways.networking.istio.io \ -n sockshop \ -o jsonpath={.items[0].spec.servers[0].hosts[0]}) $ echo $HOST # Sample output sockshop-appconf.sockshop.11.22.33.44.nip.io
- 
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
- 
Sock Shopアプリケーションにアクセスします - 
コマンドラインの使用 # Get catalogue $ curl -sk \ -X GET \ https://${HOST}/catalogue \ --resolve ${HOST}:443:${ADDRESS} # Sample output [{"count":115,"description":"For all those leg lovers out there....", ...}] # Add a new user (replace values of username and password) $ curl -i \ --header "Content-Type: application/json" \ --request POST \ --data '{"username":"foo","password":"****","email":"foo@example.com","firstName":"foo","lastName":"foo"}' \ -k https://${HOST}/register \ --resolve ${HOST}:443:${ADDRESS} # Add an item to the user's cart $ curl -i \ --header "Content-Type: application/json" \ --request POST \ --data '{"itemId": "a0a4f044-b040-410d-8ead-4de0446aec7e","unitPrice": "7.99"}' \ -k https://${HOST}/carts/{username}/items \ --resolve ${HOST}:443:${ADDRESS} # Get cart items $ curl -i \ -k https://${HOST}/carts/{username}/items \ --resolve ${HOST}:443:${ADDRESS} # Sample output [{"itemId":"a0a4f044-b040-410d-8ead-4de0446aec7e","quantity":1,"unitPrice":7.99}]nip.ioを使用している場合は、--resolveを含める必要はありません。
- 
ブラウザによるローカル・テスト 一時的に、 /etc/hostsファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hostsファイル(Windows 10の場合)を変更して、ホスト名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにマップするエントリを追加します。たとえば:11.22.33.44 sockshop.example.comその後、ブラウザで https://sockshop.example.com/catalogueからアプリケーションにアクセスできます。nip.ioを使用している場合は、HOST変数(https://${HOST}/catalogueなど)を使用してブラウザでアプリケーションにアクセスできます。プロキシを使用する場合は、*.nip.ioをNO_PROXYリストに追加する必要がある場合があります。
- 
独自のDNS名の使用 - 独自のDNS名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにポイントします。
- この場合、Sock Shopアプリケーションをデプロイする前に、sock-shop-app.yamlファイルを編集して、hostsセクション(yourhost.your.domainなど)で適切な値を使用する必要があります。
- その後、ブラウザを使用してhttps://<yourhost.your.domain>/catalogueでアプリケーションにアクセスできます。
 
- 独自のDNS名をイングレス・ゲートウェイの
 
- 
- 
デプロイされたアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに探索できます。ここの指示に従ってアクセスできます。 
デプロイされたアプリケーションの確認
- 
アプリケーション構成、コンポーネント、ワークロードおよびイングレス・トレイトがすべて存在することを確認します。 $ kubectl get ApplicationConfiguration -n sockshop $ kubectl get Component -n sockshop $ kubectl get VerrazzanoCoherenceWorkload -n sockshop $ kubectl get IngressTrait -n sockshop
- 
Sock Shopサービス・ポッドが正常に作成され、 READY状態に移行していることを確認します。これには数分かかる場合があり、一部のサービスが終了して再起動する場合があります。$ kubectl get pods -n sockshop # Sample output NAME READY STATUS RESTARTS AGE carts-coh-0 1/1 Running 0 41s catalog-coh-0 1/1 Running 0 40s orders-coh-0 1/1 Running 0 39s payment-coh-0 1/1 Running 0 37s shipping-coh-0 1/1 Running 0 36s users-coh-0 1/1 Running 0 35s
アプリケーションのアンデプロイ
- 
アプリケーションをアンデプロイするには、Sock Shop OAMリソースを削除します。 helidon、micronautまたはspringバリアントのいずれかをアンデプロイするよう選択します。
- 
アプリケーション・ポッドの終了後にネームスペース sockshopを削除します。$ kubectl delete namespace sockshop