始める前に: 前提条件のステップを実行し、ドメイン作成イメージのビルドのステップを実行してDomain on PV domain creation image
をビルドします。 サンプル内でJRF
パスを使用している場合は、イメージ名およびディレクトリ・パス内のWLS
をJRF
に置き換えます。 また、JRF-v1モデルYAMLファイルは、WLS-v1 YAMLファイルとは異なります(追加のdomainInfo -> RCUDbInfo
スタンザが含まれています)。
このサンプルは、Kubernetes PersistentVolume (PV) (Domain on PV)にドメイン・ホームを持つWebLogicドメインを設定する方法を示しています。 内容は次のとおりです。
spec.configuration.initializeDomainOnPV
セクションのdomain creation image
を参照します。spec.configuration.initializeDomainOnPV
セクションで定義します(オプション)。PVおよびPVCのノート:
spec.configuration.initializeDomainOnPV
セクションで定義されたPersistentVolumeおよびPersistentVolumeClaimの指定は環境固有であり、多くの場合、Kubernetesクラスタ管理者からの情報を使用して情報を提供する必要があります。 詳細は、ユーザー・ドキュメントの「永続ボリュームと永続ボリューム要求」を参照してください。 ReadWriteMany
オプションをサポートするストレージ・プロバイダを使用する必要があります。uid 1000
に自動的に設定されます。 別のユーザーを使用する場合は、ドメインYAMLファイルのspec.serverPod.podSecurityContext
セクションにあるセキュリティ・コンテキストで、必要なrunAsUser
およびrunAsGroup
を構成します。 オペレータは、ドメイン・ホーム・ディレクトリ内のファイルの所有者を設定するときにこれらの値を使用します。 ドメインのデプロイ後、オペレータはPVおよびPVCを作成し(構成されていて、まだ存在しない場合)、domain creation image
およびconfig map
に含まれるモデルをWebLogic構成に変換してDomain on PVを初期化するイントロスペクタ・ジョブを開始します。
このサンプルでは、「ドメイン作成イメージのビルド」ステップで作成したwdt-domain-image:WLS-v1
という名前のdomain creation image
を使用しています。 このイメージのWDTモデル・ファイルは、初期WebLogic Domain on PV構成を定義します。 イメージには次のものが含まれます:
/auxiliary/weblogic-deploy
ディレクトリで想定されます。/auxiliary/models
に必要です。この項では、PVおよびPVC構成を定義し、ドメイン・リソースYAMLファイルで以前に作成したdomain creation image
を参照します。 次に、次のステップを含む、ドメイン・リソースYAMLファイルをネームスペースsample-domain1-ns
にデプロイします:
JRF
の場合は、RCUアクセスURL、資格証明およびプレフィクスを含むシークレットを作成します。spec.configuration.initializeDomainOnPV
セクションのdomain creation image
をデプロイします。まず、WLSおよびJRFタイプの両方のモデル・ドメインに必要なシークレットを作成します。 WDTモデル・ファイルのマクロから参照されるWebLogic資格証明シークレットおよびその他のシークレットを作成する必要があります。 WDTモデル・ファイルでのマクロの使用の詳細は、「WDTモデル・ファイルの操作」を参照してください。
次のkubectl
コマンドを実行して、必要なシークレットをデプロイします:
ノート: 選択したパスワードをMY_WEBLOGIC_ADMIN_PASSWORD
に置換します。 このパスワードには、少なくとも7文字と1桁の数字を含める必要があります。
$ kubectl -n sample-domain1-ns create secret generic \
sample-domain1-weblogic-credentials \
--from-literal=username=weblogic --from-literal=password=MY_WEBLOGIC_ADMIN_PASSWORD
$ kubectl -n sample-domain1-ns label secret \
sample-domain1-weblogic-credentials \
weblogic.domainUID=sample-domain1
これらのシークレットに関する重要な詳細:
username
およびpassword
フィールドが含まれている必要があります。 これをドメインYAMLファイルのspec.webLogicCredentialsSecret
フィールドで参照し、モデルYAMLファイルのdomainInfo.AdminUserName
およびdomainInfo.AdminPassWord
フィールドでマクロを参照します。 サンプルを介してJRF
パスに従っている場合は、JRFモデルのRCUDbInfo
句でマクロによって参照される追加のシークレットと、OPSS
ウォレット・パスワード・シークレットもデプロイする必要があります。 これらのシークレットの使用方法の詳細は、Domain on PVのユーザー・ドキュメントを参照してください。
ここで、両方のリソースを定義する単一のYAMLリソース・ファイルを使用して、sample-domain1
ドメイン・リソースおよび関連するsample-domain1-cluster-1
クラスタ・リソースをデプロイします。 ドメイン・リソースおよびクラスタ・リソースは、WebLogicドメインのデプロイ方法をオペレータに指示します。 従来のWebLogic構成ファイルは置換されませんが、かわりに、これらのファイルと連携して、対応するドメインのKubernetesアーティファクトを記述します。
サンプル・ソースに含まれている「WLSドメイン・リソースYAMLファイル」ファイルの内容を、/tmp/sample/domain-resource.yaml
などのファイルにコピーします。
「こちら」をクリックして、WLSドメインのYAMLファイルを表示します。
「こちら」をクリックして、JRFドメインのYAMLファイルを表示します。
環境に基づいて、ドメイン・リソースYAMLファイルのspec.configuration.initializeDomainOnPV
セクションで定義されたPVおよびPVC仕様を変更します。 これらの指定では、多くの場合、Kubernetesクラスタ管理者に情報を提供する必要があります。 詳細は、ユーザー・ドキュメントの「永続ボリュームと永続ボリューム要求」を参照してください。
デフォルトでは、このサンプルはタイプhostPath
の永続ボリューム(PV)を作成します。 これは、1つのノードKubernetesクラスタに対してのみ、テストまたは概念実証アクティビティで機能します。 マルチ・ノードKubernetesクラスタでは、Kubernetes StorageClass
、またはnfs
型のPVを使用することを検討してください。 Oracle Container Engine for Kubernetes (OKE)を使用し、PVにOracle Cloud Infrastructure File Storage (FSS)を使用する予定の場合、Oracleでは、initializeDomainOnPV
セクションのPersistentVolumeClaim (PVC)構成にStorageClass
を作成し、StorageClass
の名前を指定することをお薦めします。 詳細は、OCIドキュメントの「ファイル・ストレージ・サービス(FSS)でのPVCのプロビジョニング」を参照してください。
ノート: ドメイン・カスタム・リソースをデプロイする前に、Kubernetesクラスタdomain-creation-image
およびその他のイメージにアクセスできます内のすべてのノードを確認します。
次のコマンドを実行して、2つのサンプル・リソースを適用します。
$ kubectl apply -f /tmp/sample/domain-resource.yaml
ドメイン・リソースは、クラスタ・リソース、WebLogic Serverインストール・イメージ、定義したシークレット、PVおよびPVC構成の詳細、および従来のWebLogic構成とWebLogicアプリケーションを含むサンプルのdomain creation image
を参照します。 詳細については、「ドメインおよびクラスタ・リソース」を参照してください。
PV、PVC、およびドメインが作成されたことを確認するには、次の手順を使用します。
オペレータがPVを作成するようにspec.configuration.initializeDomainOnPV.persistentVolume
が構成されている場合は、指定された名前のPVが作成され、ステータスがBound
であることを確認します。 PVがすでに存在する場合は、既存のPVがBound
ステータスであることを確認します。
$ kubectl get pv
このコマンドの出力例を次に示します:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
sample-domain1-weblogic-sample-pv 5Gi RWX Retain Bound sample-domain1-ns/sample-domain1-weblogic-sample-pvc manual 14m
オペレータがPVCを作成するようにspec.configuration.initializeDomainOnPV.persistentVolumeClaim
が構成されている場合は、指定された名前のPVCが作成され、ステータスがBound
であることを確認します。 PVCがすでに存在する場合は、既存のPVCがBound
ステータスであることを確認します。
$ kubectl get pvc -n sample-domain1-ns
このコマンドの出力例を次に示します:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
sample-domain1-weblogic-sample-pvc Bound sample-domain1-weblogic-sample-pv 5Gi RWX manual 11m
次のkubectl describe domain
コマンドを実行して、作成されたドメインのステータスおよびイベントを確認します。
$ kubectl describe domain sample-domain1 -n sample-domain1-ns
出力のStatus
セクションに、使用可能なサーバーおよびクラスタがリストされます。 このコマンドがドメイン・リソースの適用後すぐに発行された場合、まだ使用可能なサーバーがないか、おそらく管理サーバーのみで管理対象サーバーがない可能性があります。 オペレータは最初に管理サーバーを起動し、準備ができるまで待機してから管理対象サーバーを起動します。
kubectl get pods -n sample-domain1-ns --watch
を実行すると、イントロスペクタ・ジョブの実行およびWebLogic Serverポッドが起動します。 出力は次のようになります:
このアクティビティの詳細を表示するには、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
エラーが表示された場合は、「デバッグ」を参照してください。
次のコマンドを使用して、ドメインのサービスを表示します:
$ kubectl get services -n sample-domain1-ns
このコマンドの出力例を次に示します:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample-domain1-admin-server ClusterIP None <none> 7001/TCP 10m
sample-domain1-cluster-cluster-1 ClusterIP 10.107.178.255 <none> 8001/TCP 9m49s
sample-domain1-managed-server1 ClusterIP None <none> 8001/TCP 9m49s
sample-domain1-managed-server2 ClusterIP None <none> 8001/TCP 9m43s
すべてのサンプル・リソースがデプロイされたので、Traefikイングレス・コントローラのNodePortを使用してサンプルwebアプリケーションを起動できます。
次の例に示すように、アプリケーションのロード・バランサURLにwebアプリケーション・リクエストを送信します。
$ curl -s -S -m 10 -H 'host: sample-domain1-cluster-cluster-1.sample.org' http://localhost:30305/myapp_war/index.jsp
$ K8S_CLUSTER_ADDRESS=$(kubectl cluster-info | grep DNS | sed 's/^.*https:\/\///g' | sed 's/:.*$//g')
$ curl -s -S -m 10 -H 'host: sample-domain1-cluster-cluster-1.sample.org' http://${K8S_CLUSTER_ADDRESS}:30305/myapp_war/index.jsp
出力は次のようになります:
<html><body><pre>
*****************************************************************
Hello World! This is version 'v1' of the sample JSP web-app.
Welcome to WebLogic Server 'managed-server2'!
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 0 local data sources:
*****************************************************************
</pre></body></html>
クリーンアップ手順「こちら」に従って、ドメイン、クラスタおよびその他の関連リソースを削除します。
本番環境ではありますが、ほとんどの場合はテスト環境で、このサンプルを使用して生成されたDomain on PVコンテンツを削除することもできます。 このために、ドメイン・ライフサイクル・ディレクトリでpv-pvc-helper.sh
ヘルパー・スクリプトを使用できます。 このスクリプトは、指定された永続ボリューム要求名とマウント・パスを使用して、pvhelper
という名前のKubernetesポッドを起動します。 kubectl exec
を実行して、実行中のポッド・コンテナにシェルを取得し、コマンドを実行して永続ボリューム上の共有ディレクトリの内容を確認またはクリーン・アップできます。 例えば:
$ cd /tmp/weblogic-kubernetes-operator/kubernetes/samples/scripts/domain-lifecycle
$ ./pv-pvc-helper.sh -n sample-domain1-ns -r -c sample-domain1-weblogic-sample-pvc -m /shared
実行中のポッド・コンテナにシェルが表示された後、rm -rf /shared/domains/sample-domain1
およびrm -rf /shared/applications/sample-domain1
コマンドを使用して、ドメイン・ホームおよびアプリケーション・ディレクトリの内容を再帰的に削除できます。 これらのコマンドは、永続ストレージ上のファイルを実際に削除するため、これらのコマンドを慎重に理解して実行することをお薦めします。
PVCおよびPVがオペレータによって作成され、保持しない場合は、次のコマンドを実行してPVCおよびPVを削除します。
$ kubectl delete pvc sample-domain1-weblogic-sample-pvc -n sample-domain1-ns
$ kubectl delete pv sample-domain1-weblogic-sample-pv
$ kubectl delete namespace sample-domain1-ns