※ 本記事は、Roberto Sanchez Herreraによる”Run WebLogic Server on OKE and pay as you go“を翻訳したものです。
2026年2月26日
はじめに
WebLogic Kubernetes Operator (WKO)は、Oracle Cloud Infrastructure (OCI) Kubernetes Engine (OKE)によって管理されるものを含め、KubernetesクラスタでのWebLogicワークロードの実行を簡素化します。KubernetesクラスタにWebLogicをデプロイする場合、WebLogic podを実行する各ノードは、WebLogicライセンスおよびサポート契約でカバーされる必要があります。OKEでは、これらのノードを同じコンピュート構成を共有するノード・プールにグループ化でき、特定のプール内のノード上でpodを排他的に実行するようにラベルを付けることができます。
また、OKEでWebLogicを実行している場合、必ずしも永続的なWebLogicライセンスを購入または所有したり、サポート契約を支払う必要はありません。かわりに、WebLogic Server for OKE UCMイメージを使用してWebLogic Server on OKEを実行するための利用権およびサポートに対して、OCPU時間単位で支払うことができます。
このブログでは、WebLogic podの実行専用のWebLogic Server for OCI OKEイメージを使用してノード・プールを作成するプロセスを順を追って説明します。これを行うことで、Universal Credits Model (UCM)を利用できます。このモデルでは、OCPU当たりの価格が請求されます。
このブログでは、次の方法について説明します:
- WebLogic for OKE UCMイメージのイメージ・サブスクリプションを作成します。
- WebLogic for OKE UCMイメージを使用して、既存のOKEクラスタに新しいノード・プールを作成します。
- WebLogicワークロード専用の新しいノード・プールでpodが実行されるWebLogicドメインを作成します。
このブログでは、次のことを前提としています:
- 管理対象ノードを含むOKEクラスタがすでにあります。管理対象ノードはカスタム・イメージを持つことができます。
- OCIユーザーには、OKEクラスタに新しいノード・プールを作成するために必要な権限があります。
- ノード・プールを更新するコマンドを実行するためにOCI CLIおよびjqをLinuxまたはMacコンピュータにインストールするか、かわりにOCI CloudShellを使用します。
- kubectlを使用してOKEクラスタにアクセスできます。
コンピュートPICイメージ・サブスクリプションの作成およびイメージOCIDの取得
WebLogic for OKE UCMイメージを使用してコンピュート・インスタンスを作成するには、コンピュート・パートナ・イメージ・カタログ(PIC)サブスクリプションを作成する必要があります。そのためには、アプリ・カタログ・リストIDとリソース・バージョンが必要です。WebLogic podの新しいOKEノード・プールで使用されるイメージのOCIDも必要です。
次の表に、Enterprise EditionおよびSuiteイメージの最新イメージに関する情報を示します:
| Edition | Marketplace listing id | イメージ名 | Image ocid | App catalog listing id | リソース・バージョン |
| Enterprise Edition (EE) | 84513093 | wlsoke-custom-nodepool-image-ee-UCM-22.4.1-221016100801 | ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa | ocid1.appcataloglisting.oc1..aaaaaaaabw6dti6ejlfe4h5vcdtuemmzcbxc6myje2t4au6fox5excyiy2ma | 22.4.1-221016100801 |
| Suite | 84548760 | wlsoke-custom-nodepool-image-suite-UCM-22.4.1-221016100801 | ocid1.image.oc1..aaaaaaaas7w5w2l33dplwo2grw5vqltowbfwsqh5bx373mriewosfmdgniaa | ocid1.appcataloglisting.oc1..aaaaaaaaln2a5njbk3mtcqmokjrptv62cqeoqrm4ntyjojko5lqypqbgucua | 22.4.1-221016100801 |
Oracle使用条件を読む
Oracle使用条件は、サブスクリプションを作成する際に同意する契約の一部です。Oracleの使用条件を読み取るには、端末またはCloudShellから次のコマンドを実行し、oracle-terms-of-use-linkフィールドのリンクを開きます。EEイメージとSuiteイメージのどちらを使用するかに応じて、前述の表のlisting_idおよびresource_versionを使用します。
listing_id=< app catalog listing from table >
resource_version=< version from table >
oci compute pic agreements get --listing-id "$listing_id" --resource-version "$resource_version"
例:
user@cloudshell:~ (us-ashburn-1)$ listing_id=ocid1.appcataloglisting.oc1..aaaaaaaabw6dti6ejlfe4h5vcdtuemmzcbxc6myje2t4au6fox5excyiy2ma
user@cloudshell:~ (us-ashburn-1)$ resource_version=22.4.1-221016100801
user@cloudshell:~ (us-ashburn-1)$ oci compute pic agreements get --listing-id "$listing_id" --resource-version "$resource_version"
{
"data": {
"eula-link": null,
"listing-id": "ocid1.appcataloglisting.oc1..aaaaaaaabw6dti6ejlfe4h5vcdtuemmzcbxc6myje2t4au6fox5excyiy2ma",
"listing-resource-version": "22.4.1-221016100801",
"oracle-terms-of-use-link": "https://objectstorage.us-ashburn-1.oraclecloud.com/n/partnerimagecatalog/b/eulas/o/oracle-apps-terms-of-use.txt",
"signature": "5027cb65b2967079b58e5da35012b919ef852c08958dbdd36d7ccb82ef6a1078",
"time-retrieved": "2025-12-12T18:44:33.431000+00:00"
}
}
user@cloudshell:~ (us-ashburn-1)$
PICイメージ・サブスクリプションの作成
PICイメージ・サブスクリプションを作成するには、次のコマンドを実行し、WebLogicノード・プール・ノードのコンピュート・インスタンスを作成するコンパートメントと、listing_idおよびresource_versionを指定します:
compartment_id=< compartment_ocid >
listing_id=< app catalog listing from table >
resource_version=< version from table >
echo "Fetching agreements for listing:$listing_id and version:$resource_version"
agreements=$(oci compute pic agreements get --listing-id "$listing_id" --resource-version "$resource_version")
signature=$(printf "%s" $agreements | jq -r '.data."signature"')
time_ret=$(printf "%s" $agreements | jq -r '.data."time-retrieved"' | sed -e 's/000+00:00/Z/')
oracle_tou_link=$(printf "%s" $agreements | jq -r '.data."oracle-terms-of-use-link"')
echo 'Creating subscription'
oci compute pic subscription create --compartment-id "$compartment_id" --listing-id "$listing_id" --resource-version "$resource_version" \
--signature "$signature" --oracle-tou-link "$oracle_tou_link" --time-retrieved "$time_ret"
EEイメージのサブスクリプションを作成する例を次に示します:
compartment_id=< compartment_ocid >
listing_id=ocid1.appcataloglisting.oc1..aaaaaaaabw6dti6ejlfe4h5vcdtuemmzcbxc6myje2t4au6fox5excyiy2ma
resource_version=22.4.1-221016100801
echo "Fetching agreements for listing:$listing_id and version:$resource_version"
agreements=$(oci compute pic agreements get --listing-id "$listing_id" --resource-version "$resource_version")
signature=$(printf "%s" $agreements | jq -r '.data."signature"')
time_ret=$(printf "%s" $agreements | jq -r '.data."time-retrieved"' | sed -e 's/000+00:00/Z/')
eula_link=$(printf "%s" $agreements | jq -r '.data."eula-link"')
oracle_tou_link=$(printf "%s" $agreements | jq -r '.data."oracle-terms-of-use-link"')
echo 'Creating subscription'
oci compute pic subscription create --compartment-id "$compartment_id" --listing-id "$listing_id" --resource-version "$resource_version" \
--signature "$signature" --oracle-tou-link "$oracle_tou_link" --time-retrieved "$time_ret"
これらの手順は、example_pic_subscription.shというファイルに保存し、ターミナルから実行できます:
sh example_pic_subscription.sh
イメージと互換性のあるリスト・シェイプ
WebLogicノード・プールで使用するイメージと互換性のあるシェイプを知る必要があります。次のコマンドを実行して、イメージと互換性のあるシェイプを取得します(前述の表のイメージOCIDを使用します):
oci compute image-shape-compatibility-entry list --image-id < image_ocid >
EEイメージの例を次に示します:
user@cloudshell:~ (us-ashburn-1)$ oci compute image-shape-compatibility-entry list --image-id ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa
{
"data": [
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Optimized3.Flex"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.AMD.Generic"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E2.1"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E2.2"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E2.4"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E2.8"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E3.Flex"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.E4.Flex"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.Intel.Generic"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard.x86.Generic"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.1"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.16"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.2"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.24"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.4"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard2.8"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "VM.Standard3.Flex"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "BM.Standard.E2.64"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "BM.Standard2.52"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "BM.Optimized3.36"
},
{
"image-id": "ocid1.image.oc1..aaaaaaaatkqoykn3a3jkeipctecrii4ellujvj6ogmvk77epqpuzllyh6waa",
"memory-constraints": null,
"ocpu-constraints": null,
"shape": "BM.Standard3.64"
}
]
}
user@cloudshell:~ (us-ashburn-1)$
WLS for OKE UCMイメージを使用した新規ノード・プールの作成
OCIコンソールを使用してOKEクラスタに新しいノード・プールを作成する場合は、カスタム・イメージを指定できません。したがって、最初に標準イメージのいずれかを使用して新しいノード・プールを作成してから、ノード・プールを更新してWebLogic for OKE UCMイメージを設定します。
OCIコンソールを使用して、既存のOKEクラスタに新しい管理対象ノード・プールを追加します:
- 「Advanced options」セクションの「Kubernetes version」フィールドの後に、別のKubernetesラベルのペアを追加します。これらは、WebLogicワークロードをこのプールにターゲット指定するために使用されます。このブログでは、key: usageおよびvalue: weblogicのラベルが使用されています。
- 必ず、WebLogic for OKE UCMイメージと互換性のあるシェイプを選択してください。前のステップで互換性のあるシェイプを取得済みです。
- OKEワーカー・ノード・イメージのいずれかを使用します。
- 「Node Pool Options」で、「Node count」を0に設定します。まだノードを作成しません。
- 「Add」をクリックして、新しいノード・プールを追加します。
新しいノード・プールのイメージを更新します。<image_ocid>の場合は、表のイメージのOCIDを使用します。端末またはCloudShellから次のコマンドを実行します:
oci ce node-pool update --node-pool-id < node_pool_ocid > --node-source-details '{"imageId":"< image_ocid >", "sourceType":"IMAGE"}'
これで、ノード・プールでWLS for OKE UCMイメージが使用されていることを確認します。OCIコンソールで、OKEクラスタを選択し、「Node pools」タブに移動して作成したノード・プールをクリックし、「Details」タブでイメージ名がwlsoke-custom-nodepool-image-* になったことを確認します。

OCIコンソールを使用して、ノード・プールを編集し、ノード・プール内のノード数を増やします。JRF WebLogicドメインを作成する場合は、少なくとも2つのノードを追加します。新しいワーカー・ノードでは、WebLogic for OKE UCMイメージが使用されます。
「Nodes」タブに移動し、ノードが「Active」状態になるまで待機します。ノードのプライベートIPアドレスを書き留めます。後で必要になります。
WebLogicドメインを作成し、WebLogic for OKE UCMイメージを使用してノード・プールでWebLogic Podを実行
WebLogic for OKE UCMイメージを含むノード・プールをOKEクラスタに追加した後、WebLogicドメインを作成できます。WebLogic Kubernetes Operatorは、広範なドキュメントとサンプルを提供します。
non-JRFドメイン(QuickStartサンプルやイメージ内のモデル・ドメイン・サンプルなど)またはJRFドメイン・サンプル(永続ボリュームを使用する必要がある場所)を作成するサンプルがあります。Oracleでは、Oracle Container Engine for Kubernetes (OKE)でKubernetesクラスタを実行するときに、永続ボリュームにOracle Cloud Infrastructure File Storage (FSS)を使用してWebLogicドメイン・ホームまたはログ・ファイルを格納することをお薦めします。
ドメインを作成する場合は、WebLogic for OKE UCMイメージを使用して、WebLogic podをノード・プールで実行するモデルYAMLファイルに必ず指定してください。これを行うには、モデルYAMLにノード・セレクタを追加します。たとえば、ノード・セレクタをserverPodに追加します:
# Settings for all server pods in the domain including the introspector job pod
serverPod:
nodeSelector:
usage: weblogic
env:
- name: CUSTOM_DOMAIN_NAME
value: "domain1"
- name: JAVA_OPTIONS
value: "-Dweblogic.StdoutDebugEnabled=false"
- name: USER_MEM_ARGS
value: "-Djava.security.egd=file:/dev/./urandom -Xms256m -Xmx1024m "
resources:
requests:
cpu: "500m"
memory: "1280Mi"
このように、ドメイン内のすべてのサーバーpodは、usage: weblogicというラベルの付いたノードで実行されます。
ドメイン・リソースの作成後、podがWebLogicワークロード用に作成されたノード・プールのノードで実行されていることを確認します。次のコマンドを実行して、WebLogicドメインのネームスペース内のすべてのpodと、podが実行されているノードを取得します。WebLogicノード・プールに属するノードですべてのpodが実行されていることを確認します:
kubectl get pods -n < namespace > -o wide
たとえば、WKOサンプルのいずれかに従い、ネームスペースsample-domain1-nsを使用した場合:
$ kubectl get pods -n sample-domain1-ns -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
sample-domain1-admin-server 1/1 Running 0 30d 10.244.4.130 10.0.4.6 <none> <none>
sample-domain1-managed-server1-c1 1/1 Running 0 30d 10.244.3.130 10.0.4.11 <none> <none>
sample-domain1-managed-server2-c1 1/1 Running 0 30d 10.244.4.131 10.0.4.6 <none> <none>
$</none></none></none></none></none></none>
まとめ
このブログでは、OKEクラスタにノード・プールを作成してWebLogicワークロードを実行する方法と、UCMモデルを使用してそれらのワークロードをライセンスする方法について学習しました。また、ノード・セレクタを使用して、WebLogicワークロードを新しいノード・プールで実行する方法も学習しました。
