ToDo List

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

始める前に

  • インストール手順に従って、マルチクラスタVerrazzano環境を設定します。
  • この例では、マルチクラスタ環境に関連付けられているmanaged1という名前の管理対象クラスタがあることを前提としています。環境にその名前のクラスタがない場合、デプロイメント・ファイルを編集し、placementセクションにリストされているクラスタ名を変更する必要があります。
  • サンプル・アプリケーション・イメージをダウンロードするには、まずライセンス契約に同意する必要があります。
    • ブラウザで、https://container-registry.oracle.com/に移動してサインインします。
    • example-todoを検索し、結果でイメージ名を選択します。
    • 「Continue」をクリックし、ライセンス契約を読んで同意します。

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

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

  1. Verrazzanoプロジェクト・ファイルを適用して、マルチクラスタのToDo Listサンプル用のネームスペースを作成します。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/verrazzano-project.yaml
    
  2. mc-docker-registry-secret.yamlファイルをダウンロードします。

    $ wget https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/mc-docker-registry-secret.yaml
    
  3. mc-docker-registry-secret.yamlファイルを編集し、<BASE 64 ENCODED DOCKER CONFIG JSON>プレースホルダを次のコマンドで生成される値に置き換えます。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN create secret docker-registry temp \
        --dry-run=client \
        --docker-server=container-registry.oracle.com \
        --docker-username=YOUR_REGISTRY_USERNAME \
        --docker-password=YOUR_REGISTRY_PASSWORD \
        --docker-email=YOUR_REGISTRY_EMAIL \
        -o jsonpath='{.data.\.dockerconfigjson}'; echo
    

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

  4. mc-docker-registry-secret.yamlファイルを適用して、マルチクラスタ・シークレットを作成します。マルチクラスタ・シークレット・リソースは、mc-todo-listネームスペースに必要なシークレットを生成します。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply -f mc-docker-registry-secret.yaml
    
  5. mc-weblogic-domain-secret.yamlおよびmc-tododb-secret.yamlファイルをダウンロードします。

    $ wget https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/mc-weblogic-domain-secret.yaml
    $ wget https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/mc-tododb-secret.yaml
    
  6. mc-weblogic-domain-secret.yamlおよびmc-tododb-secret.yamlファイルを編集し、THE_USERNAMEおよびTHE_PASSWORDプレースホルダをそれぞれWebLogicユーザー名とパスワードに置き換えます。

       username: THE_USERNAME
       password: THE_PASSWORD
    
  7. mc-weblogic-domain-secret.yamlおよびmc-tododb-secret.yamlファイルを適用します。マルチクラスタ・シークレット・リソースは、mc-todo-listネームスペースに必要なシークレットを生成します。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply -f mc-weblogic-domain-secret.yaml
    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply -f mc-tododb-secret.yaml
    
  8. マルチクラスタ・コンポーネントとアプリケーション・リソースを適用して、ToDo Listアプリケーションをデプロイします。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/todo-list-components.yaml
    
    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.0.4/examples/multicluster/todo-list/todo-list-application.yaml
    
  9. ToDo Listサンプル・アプリケーションの準備ができるまで待ちます。tododomain-adminserverポッドが作成されてReadyになるまで数分かかる場合があります。

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

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

    $ ADDRESS=$(kubectl --kubeconfig $KUBECONFIG_MANAGED1 get service \
         -n istio-system istio-ingressgateway \
         -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    $ echo $ADDRESS
    11.22.33.44
    
  12. 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アドレスにマップするエントリを追加します。例:

      11.22.33.44 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」ボタンでタスクを追加できます。

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

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

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

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

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

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

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

トラブルシューティング

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

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

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