更新3ユースケースでは、更新されたイメージを使用して、実行中の「更新1」ユースケース・ドメインに更新されたWebLogicアプリケーションをデプロイする方法を示します。
このユースケースでは、次のことを行います:
model-in-image:WLS-v1
イメージに類似したイメージmodel-in-image:WLS-v2
を作成しますが、次の更新を行います:
myapp-v1
ではなくWDTアプリケーション・アーカイブ内のmyapp-v2
ディレクトリ・パスにある更新されたwebアプリケーションv2
。更新されたドメインYAMLファイルが適用されると、オペレータは次のことを行います:
最後に、アプリケーションを呼び出して、そのリビジョンがアクティブであることを確認します。
古いバージョンのアプリケーションv1
は新しいイメージのアーカイブに残りますが、使用されません。 元に戻す場合に備えて古いバージョンを残しておくことができることを示すために、ここに残しておきます。 新しいイメージが適用された後、モデルのconfiguration.model.configMap
を変更してイメージ・モデルの関連アプリケーション・パスをオーバーライドすることで元に戻すことができます。
このユースケースのステップは、次のとおりです:
「更新1」ユースケースからドメインがデプロイされていることを確認します。
更新された補助イメージを作成します。
「初期状態の」ユースケースの目的は、WebLogic Image Toolを使用して、/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v1/
にステージングされたファイルからwdt-domain-image:WLS-v1
という補助イメージを作成することでした。 ステージングされたファイルには、WDT ZIPアーカイブにwebアプリケーションが含まれ、admin-server
というWebLogic Server管理サーバーおよびcluster-1
というWebLogicクラスタ用のWDTモデル構成が含まれていました。 最後のイメージは、wdt-domain-image:WLS-v1
と呼ばれ、/auxiliary/models
ディレクトリにステージングされたファイルのコピーを持つことに加えて、WebLogic Deploy Toolingソフトウェアがインストールされているディレクトリ/auxiliary/weblogic-deploy
も含まれていました。
このユースケースでは、「初期状態の」ユースケースと同様のステップに従って、更新されたアプリケーションおよびモデルで新しいイメージを作成し、更新されたモデルおよびアプリケーションを実行中の「更新1」ユースケース・ドメインにデプロイします。
更新したWDTアーカイブを理解します。
このユースケースで更新されたアーカイブは、ディレクトリ/tmp/sample/wdt-artifacts/archives/archive-v2
にあります。 これを使用して、イメージのアーカイブZIPファイルを作成します。 このアーカイブは、「初期状態の」ユースケースの/tmp/sample/wdt-artifacts/archives/archive-v1
と似ていますが、次の点が異なります:
./wlsdeploy/applications/myapp-v2
のアプリケーションの更新バージョンが含まれます(元のアプリケーションはディレクトリ./wlsdeploy/applications/myapp-v1
に保持されます)。./wlsdeploy/applications/myapp-v2/myapp_war/index.jsp
のアプリケーションには、元のアプリケーションとの単一の違いが含まれます: これにより、行out.println("Hello World! This is version 'v1' of the sample JSP web-app.");
がout.println("Hello World! This is version 'v2' of the sample JSP web-app.");
に変更されます。アーカイブの詳細は、「最初のアーカイブの理解」を参照してください。
WDTアーカイブのZIPファイルをステージングします。
更新したイメージを作成する場合は、ステージング・ディレクトリ/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2
のファイルを使用します。 準備として、新しいWDTアプリケーション・アーカイブのZIPファイルを含める必要があります。
次のコマンドを実行して、アプリケーション・アーカイブZIPファイルを作成し、必要なディレクトリに配置します:
# Delete existing archive.zip in case we have an old leftover version
$ rm -f /tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2/archive.zip
# Move to the directory which contains the source files for our new archive
$ cd /tmp/sample/wdt-artifacts/archives/archive-v2
「WDTアーカイブ・ヘルパー・ツール」を使用して、後でWebLogic Image Toolを実行するときに使用するロケーションにアーカイブを作成
$ /tmp/sample/wdt-artifacts/weblogic-deploy/bin/archiveHelper.sh add application -archive_file=/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2/archive.zip -source=wlsdeploy/applications/myapp-v2
ステージング済モデル・ファイルの理解。
WDTモデルYAMLファイルおよびこのユースケースのプロパティは、ディレクトリ/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2
にすでにステージングされています。
このディレクトリのmodel.10.yaml
ファイルには、アーカイブ内の更新されたwebアプリケーションを参照する更新されたパスwlsdeploy/applications/myapp-v2
がありますが、それ以外の場合は元のイメージにステージングされたモデルと同じです。 最終的な関連YAMLファイル・スタンザは次のようになります:
appDeployments:
Application:
myapp:
SourcePath: 'wlsdeploy/applications/myapp-v2'
ModuleType: ear
Target: 'cluster-1'
この変更の前に元のモデル全体を確認する場合は、初期状態のユース・ケースの「モデル・ファイルのステージング」を参照してください。
WITを使用して、ステージングされたモデル・ファイルから新しい補助イメージを作成します。
この時点で、イメージwdt-domain-image:WLS-v2
に必要なすべてのファイルをステージングしました。これには次のものが含まれます:
/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2/model.10.yaml
/tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2/model.10.properties
/tmp/sample/model-images/wdt-artifacts/wdt-model-files/WLS-v2/archive.zip
ここで、イメージ・ツールを使用して、wdt-domain-image:WLS-v2
という名前の補助イメージを作成します。 このツールは、前提条件ステップですでに設定されています。
次のコマンドを実行して補助イメージを作成し、動作していることを確認します:
$ cd /tmp/sample/wdt-artifacts/wdt-model-files/WLS-v2
$ /tmp/sample/wdt-artifacts/imagetool/bin/imagetool.sh createAuxImage \
--tag wdt-domain-image:WLS-v2 \
--wdtModel ./model.10.yaml \
--wdtVariables ./model.10.properties \
--wdtArchive ./archive.zip
imagetool
ディレクトリが表示されない場合は、「前提条件」でステップが欠落しています。
このコマンドは、WebLogic Image ToolをModel in Imageモードで実行し、次の操作を実行します:
busybox
ベース・イメージのレイヤーとしてビルドします。latest
を使用してWITにWDTをキャッシュしたことに注意してください。-wdtVersion
フラグを渡す必要がなくなります。/auxiliary/models
にコピーします。コマンドが成功すると、次のような出力で終了します:
[INFO ] Build successful. Build time=36s. Image tag=wdt-domain-image:WLS-v2
また、docker images
コマンドを実行すると、wdt-domain-image:WLS-v2
という名前のイメージが表示されます。
ノート: ドメイン・カスタム・リソースをデプロイする前に、Kubernetesクラスタauxiliary-image
およびその他のイメージにアクセスできます内のすべてのノードを確認します。
ドメインYAMLファイルを設定して適用します。これは、更新1のユースケースのドメインYAMLファイルと似ていますが、イメージが異なります:
オプション1: ドメインYAMLファイルのコピーを更新1ユースケースから更新します。
「更新1」ユースケースでは、/tmp/sample/mii-update1.yaml
という名前のファイルを作成するか、サンプルに付属の/tmp/sample/domain-resources/WLS/mii-update1-d1-WLS-v1-ds.yaml
ファイルを使用することをお薦めします。
変更を行う前に、このドメインYAMLファイルをコピーし、コピー/tmp/sample/mii-update3.yaml
に名前を変更することをお薦めします。
コピーの操作は厳密には必要ありませんが、このサンプルの様々なユースケースでの作業の追跡に役立ち、以前の作業のバックアップが提供されます。
wdt-domain-image:WLS-v1
ではなくwdt-domain-image:WLS-v2
を参照するように、/tmp/sample/mii-update3.yaml
ドメインYAMLファイルのimage
フィールドを変更します。
最終的な結果は次のようになります:
...
spec:
...
image: "wdt-domain-image:WLS-v2"
変更したドメインYAMLファイルを適用します:
ノート: ドメイン・カスタム・リソースをデプロイする前に、Kubernetesクラスタauxiliary-image
およびその他のイメージにアクセスできます内のすべてのノードを確認します。
$ kubectl apply -f /tmp/sample/mii-update3.yaml
オプション2: サンプルに付属している更新されたドメインYAMLファイルを使用します:
ノート: ドメイン・カスタム・リソースをデプロイする前に、Kubernetesクラスタauxiliary-image
およびその他のイメージにアクセスできます内のすべてのノードを確認します。
$ kubectl apply -f /tmp/sample/domain-resources/WLS/mii-update3-d1-WLS-v2-ds.yaml
ロールが完了するまで待ちます。
更新されたイメージでドメインYAMLファイルを適用したので、オペレータは自動的にドメインのイントロスペクタ・ジョブを再実行して新しいドメイン・ホームを生成し、新しいドメイン・ホームおよび新しいイメージを使用するようにドメインのポッドをそれぞれ再起動('roll')します。 新しいイメージとそれに関連付けられた新しいアプリケーションがデプロイされたことを確認するには、このロールが完了するまで待機する必要があります。
これを行うには、kubectl get pods -n sample-domain1-ns --watch
を呼び出してポッドがready
状態に戻るまで待機する方法があります。
このアクティビティの詳細を表示するには、waitForDomain.sh
サンプル・ライフサイクル・スクリプトを使用できます。 このスクリプトは、ドメインのポッドに関する有用な情報を提供し、オプションで、Completed
ステータス条件がTrue
になるまで待機します。 Completed
ドメインは、予想されるすべてのポッドがready
状態に加え、ターゲットのrestartVersion
、introspectVersion
およびimage
に達したことを示します。 例えば:
$ cd /tmp/weblogic-kubernetes-operator/kubernetes/samples/scripts/domain-lifecycle
$ ./waitForDomain.sh -n sample-domain1-ns -d sample-domain1 -p Completed
ドメイン・ロールの完了後、サンプルwebアプリケーションをコールして、更新されたアプリケーションがデプロイされたかどうかを確認できます。
アプリケーションが起動されると、Hello World! This is version 'v2' of the sample JSP web-app.
などの出力文字列が含まれます。
webアプリケーション・リクエストをイングレス・コントローラに送信します:
$ curl -s -S -m 10 -H 'host: sample-domain1-cluster-cluster-1.sample.org' \
http://localhost:30305/myapp_war/index.jsp
または、Traefikが使用できず、管理サーバーポッドが実行されている場合は、kubectl exec
を実行できます:
$ kubectl exec -n sample-domain1-ns sample-domain1-admin-server -- bash -c \
"curl -s -S -m 10 http://sample-domain1-cluster-cluster-1:8001/myapp_war/index.jsp"
次のように表示されます。
<html><body><pre>
*****************************************************************
Hello World! This is version 'v2' of the sample JSP web-app.
Welcome to WebLogic Server 'managed-server1'!
domain UID = 'sample-domain1'
domain name = 'domain1'
Found 1 local cluster runtime:
Cluster 'cluster-1'
Found min threads constraint runtime named 'SampleMinThreads' with configured count: 1
Found max threads constraint runtime named 'SampleMaxThreads' with configured count: 10
Found 1 local data source:
Datasource 'mynewdatasource': State='Running', testPool='Failed'
---TestPool Failure Reason---
NOTE: Ignore 'mynewdatasource' failures until the sample's Update 4 use case.
---
...
... invalid host/username/password
...
-----------------------------
*****************************************************************
</pre></body></html>
「更新4」のデータ・ソース属性を動的に修正するため、TestPool Failure
が必要です。
予想されるTestPool Failure
以外のエラーが表示された場合は、「デバッグ」を参照してください。
「更新4」ユースケースを実行する場合は、ドメインを実行したままにします。
サンプルで作成したリソースを削除するには、「クリーンアップ」を参照してください。