マルチクラスタToDo List

ToDo Listは、マルチクラスタ環境にデプロイされたWebLogicコンポーネントを含むサンプル・アプリケーションです。

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

始める前に

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

管理クラスタおよび管理対象クラスタのkubeconfigファイルを指すように、次の環境変数を設定します。

$ export KUBECONFIG_ADMIN=/path/to/your/adminclusterkubeconfig
$ export KUBECONFIG_MANAGED1=/path/to/your/managedclusterkubeconfig

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

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

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

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/verrazzano-project.yaml
    

  2. docker-registryシークレットを作成して、レジストリからToDo Listサンプル・イメージを取得できるようにします。

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

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

  4. コンポーネントとマルチクラスタ・アプリケーション・リソースを適用して、ToDo Listアプリケーションをデプロイします。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/todo-list-components.yaml
    
    $ kubectl --kubeconfig $KUBECONFIG_ADMIN apply \
        -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/mc-todo-list-application.yaml
    

  5. ToDo Listサンプル・アプリケーションの準備ができるまで待ちます。tododomain-adminserverポッドが作成されてReadyになるまで数分かかる場合があります。

    $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 wait pod \
        --for=condition=Ready tododomain-adminserver \
        -n mc-todo-list \
        --timeout=300s
    

  6. アプリケーション用に生成されたホスト名を取得します。

    $ HOST=$(kubectl --kubeconfig $KUBECONFIG_MANAGED1 get gateway \
          -n mc-todo-list \
          -o jsonpath='{.items[0].spec.servers[0].hosts[0]}')
    $ echo $HOST
    
    # Sample output
    todo-appconf.mc-todo-list.11.22.33.44.nip.io
    

  7. 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
    
    # Sample output
    11.22.33.44
    

  8. ToDo Listサンプル・アプリケーションにアクセスします

    • コマンドラインの使用

      # The expected response of this query is the HTML of a web page
      $ 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」ボタンでタスクを追加できます。

  9. デプロイしたToDo Listアプリケーションに関連付けられた様々なエンドポイントを使用して、ログやメトリックなどをさらに調査できます。ここの指示に従ってアクセスできます。

デプロイされたアプリケーションの確認

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

    $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 get ApplicationConfiguration -n mc-todo-list
    
    # Sample output
    NAME           AGE
    todo-appconf   19h
    
    $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 get Domain -n mc-todo-list
    
    # Sample output
    NAME          AGE
    todo-domain   19h
    
    $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 get IngressTrait -n mc-todo-list
    
    # Sample output
    NAME                           AGE
    todo-domain-trait-7cbd798c96   19h
    

  2. WebLogic管理サーバーおよびMySQLポッドが作成され、実行中であることを確認します。これには数分かかります。

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

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

場所に関係なく、アプリケーションをアンデプロイするには、アプリケーション・リソースとプロジェクトを管理クラスタから削除します。アンデプロイは、アプリケーションが配置されているすべてのクラスタに影響します。

  1. アプリケーションをアンデプロイするには、ToDo List OAMリソースを削除します。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \
     -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/mc-todo-list-application.yaml
    $ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \
     -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/todo-list-components.yaml
    

  2. プロジェクトを削除します。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN delete \
     -f https://raw.githubusercontent.com/verrazzano/verrazzano/v1.5.7/examples/multicluster/todo-list/verrazzano-project.yaml
    

  3. アプリケーション・ポッドの終了後にネームスペースmc-todo-listを削除します。WebLogicドメイン用に作成されたシークレットも削除されます。

    $ kubectl --kubeconfig $KUBECONFIG_ADMIN delete namespace mc-todo-list
    $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 delete namespace mc-todo-list