ToDo List

WebLogicコンポーネントを含むサンプル・アプリケーション

始める前に

  • インストールの手順に従って、Verrazzanoをインストールします。
  • サンプル・イメージをダウンロードするには、まずライセンス契約に同意する必要があります。
    • ブラウザで、https://container-registry.oracle.com/に移動してサインインします。
    • example-todoを検索し、結果でイメージ名を選択します。
    • 「Continue」をクリックし、ライセンス契約を読んで同意します。

ノート: ToDo Listサンプル・アプリケーションのデプロイメント・ファイルは、<VERRAZZANO_HOME>/examples/todo-listにあるVerrazzanoプロジェクトに含まれています(<VERRAZZANO_HOME>はVerrazzanoプロジェクトのルートです)。

このドキュメントのすべてのファイルとパスは、<VERRAZZANO_HOME>/examples/todo-listからの相対パスです。

ToDo Listアプリケーションのデプロイ

ToDo Listは、WebLogicコンポーネントを含むサンプル・アプリケーションです。このアプリケーションの詳細およびソース・コードについては、Verrazzanoの例を参照してください。

  1. ToDo Listサンプルのネームスペースを作成し、ネームスペースがVerrazzanoによって管理されることを示すラベルを追加します。

    $ kubectl create namespace todo-list
    $ kubectl label namespace todo-list verrazzano-managed=true istio-injection=enabled
    
  2. docker-registryシークレットを作成して、レジストリからToDo Listサンプル・イメージを取得できるようにします。

    $ kubectl create secret docker-registry tododomain-repo-credentials \
            --docker-server=container-registry.oracle.com \
            --docker-username=YOUR_REGISTRY_USERNAME \
            --docker-password=YOUR_REGISTRY_PASSWORD \
            --docker-email=YOUR_REGISTRY_EMAIL \
            -n todo-list
    

    YOUR_REGISTRY_USERNAMEYOUR_REGISTRY_PASSWORDおよびYOUR_REGISTRY_EMAILを、レジストリへのアクセスに使用する値に置き換えます。

  3. 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 tododomain-weblogic-credentials \
        --from-literal=password=$WLS_PASSWORD \
        --from-literal=username=$WLS_USERNAME \
        -n todo-list
    
    
    $ kubectl create secret generic tododomain-jdbc-tododb \
        --from-literal=username=$WLS_USERNAME \
        --from-literal=password=$WLS_PASSWORD \
        -n todo-list
    
    $ kubectl -n todo-list label secret tododomain-jdbc-tododb weblogic.domainUID=tododomain
    

    ToDo Listサンプル・アプリケーションは、特定のシークレット名を使用するように事前構成されています。このアプリケーションのソース・コードについては、Verrazzanoの例を参照してください。

  4. アプリケーションをデプロイするには、サンプル・リソースを適用します。

    $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/todo-list/todo-list-components.yaml
    $ kubectl apply -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/todo-list/todo-list-application.yaml
    
  5. ToDo Listアプリケーションの準備ができるまで待ちます。ポッドのリストおよび出力の検査によって進行状況をモニターするか、kubectl waitコマンドを使用できます。成功するまで、kubectl waitコマンドを複数回繰り返す必要がある場合があります。tododomain-adminserverポッドが作成されてReadyになるまで時間がかかる場合があります。

    $ kubectl get pods -n todo-list
    
    # -or- #
    
    $ kubectl wait pod \
       --for=condition=Ready tododomain-adminserver \
       -n todo-list
    
  6. アプリケーション用に生成されたホスト名を取得します。

    $ HOST=$(kubectl get gateway \
         -n todo-list \
         -o jsonpath='{.items[0].spec.servers[0].hosts[0]}')
    $ echo $HOST
    todo-appconf.todo-list.10.11.12.13.nip.io
    
  7. istio-ingressgatewayサービスのEXTERNAL_IPアドレスを取得します。

    $ ADDRESS=$(kubectl get service \
         -n istio-system istio-ingressgateway \
         -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    $ echo $ADDRESS
    10.11.12.13
    
  8. ToDo Listアプリケーションにアクセスします:

    • コマンドラインの使用

      $ curl -sk \
         https://${HOST}/todo/ \
         --resolve ${HOST}:443:${ADDRESS}
      

      nip.ioを使用している場合は、--resolveを含める必要はありません。

    • ブラウザによるローカル・テスト

      一時的に、/etc/hostsファイル(MacまたはLinuxの場合)またはc:\Windows\System32\Drivers\etc\hostsファイル(Windows 10の場合)を変更して、ホスト名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにマップするエントリを追加します。例:

      10.11.12.13 todo.example.com
      

      その後、ブラウザでhttps://todo.example.com/todoからアプリケーションにアクセスできます。

    • 独自のDNS名の使用

      • 独自のDNS名をイングレス・ゲートウェイのEXTERNAL-IPアドレスにポイントします。

      • この場合、ToDo Listアプリケーションをデプロイする前に、todo-list-application.yamlファイルを編集してhostsセクション(yourhost.your.domainなど)で適切な値を使用する必要があります。

      • その後、ブラウザを使用してhttps://<yourhost.your.domain>/todo/でアプリケーションにアクセスできます。

        ブラウザでアプリケーションにアクセスすると、「Derek's ToDo List」ページが開き、編集フィールドと「Add」ボタンでタスクを追加できます。

  9. デプロイしたToDo Listアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに調査できます。これらにアクセスする場合、次が必要になることがあります:

    • 次のコマンドを実行して、テレメトリ・コンポーネント用に生成されたパスワードを取得します:

      $ kubectl get secret \
          --namespace verrazzano-system verrazzano \
          -o jsonpath='{.data.password}' | base64 \
          --decode; echo
      

      関連付けられているユーザー名はverrazzanoです。

    • エンドポイントに関連付けられた証明書を受け入れる必要があります。

    次のコマンドを使用して、使用可能なイングレスのリストを取得できます:

    $ kubectl get ingress -n verrazzano-system
    NAME                         CLASS    HOSTS                                                     ADDRESS           PORTS     AGE
    verrazzano-ingress           <none>   verrazzano.default.10.11.12.13.nip.io                 10.11.12.13   80, 443   7d2h
    vmi-system-es-ingest         <none>   elasticsearch.vmi.system.default.10.11.12.13.nip.io   10.11.12.13   80, 443   7d2h
    vmi-system-grafana           <none>   grafana.vmi.system.default.10.11.12.13.nip.io         10.11.12.13   80, 443   7d2h
    vmi-system-kibana            <none>   kibana.vmi.system.default.10.11.12.13.nip.io          10.11.12.13   80, 443   7d2h
    vmi-system-prometheus        <none>   prometheus.vmi.system.default.10.11.12.13.nip.io      10.11.12.13   80, 443   7d2h
    

    イングレス・ホスト情報を使用すると、使用可能なエンドポイントの一部は次のようになります:

    説明 アドレス 資格証明
    Kibana https://[vmi-system-kibana ingress host] verrazzano/telemetry-password
    Grafana https://[vmi-system-grafana ingress host] verrazzano/telemetry-password
    Prometheus https://[vmi-system-prometheus ingress host] verrazzano/telemetry-password

WebLogic Server管理コンソールにアクセスします

kubectlを実行しているマシンからコンソールにアクセスするには:

  1. ポート転送を設定します。

    $ kubectl port-forward pods/tododomain-adminserver 7001:7001 -n todo-list
    

    ノート: OCI Cloud Shellを使用してkubectlを実行する場合、ポート転送を使用してコンソールにアクセスするには、別のマシンでkubectlを実行する必要があります。

  2. ブラウザからWebLogic Server管理コンソールにアクセスします。

    http://localhost:7001/console
    

トラブルシューティング

  1. アプリケーション構成、ドメインおよびイングレス・トレイトがすべて存在することを確認します。

    $ kubectl get ApplicationConfiguration -n todo-list
    NAME           AGE
    todo-appconf   19h
    
    $ kubectl get Domain -n todo-list
    NAME          AGE
    todo-domain   19h
    
    $ kubectl get IngressTrait -n todo-list
    NAME                           AGE
    todo-domain-trait-7cbd798c96   19h
    
  2. WebLogic管理サーバーおよびMySQLポッドが作成され、実行中であることを確認します。これには数分かかります。

    $ kubectl get pods -n todo-list
    
    NAME                     READY   STATUS    RESTARTS   AGE
    mysql-5c75c8b7f-vlhck    1/1     Running   0          19h
    tododomain-adminserver   2/2     Running   0          19h