オペレータは、FMWインフラストラクチャ・ドメイン、つまり、WebLogic ServerインストーラではなくFMWインフラストラクチャ・インストーラで作成されるドメインをサポートしています。 これらのドメインにはJava Required Files (JRF)が含まれます。JRFは、たとえば、Oracle SOA Suiteのような上位スタック製品の前提条件です。 これらのドメインには、データベースおよびリポジトリ作成ユーティリティ(RCU)の使用も必要です。
このドキュメントでは、FMW Infrastructureドメインをオペレータとともに実行する場合の特別な考慮事項について詳しく説明します。 ここにリストされている考慮事項以外のFMW Infrastructureドメインは、WebLogic Serverドメインと同様に動作します。 このサイトの残りのドキュメントは、FMW InfrastructureドメインおよびWebLogic Serverドメインにも同様に適用されます。
ノート: FMWインフラストラクチャ・ドメインは、Domain on PV ドメイン・ホーム・ソース・タイプのみを使用してサポートされます。
KubernetesでのOracle Fusion Middleware製品のデプロイメントの詳細は、https:// oracle.github.io /fmw-kubernetes/を参照してください。
オペレータを使用してKubernetesでWebLogic Serverドメインを実行する場合と比較して、FMW Infrastructureドメインには現在次の制限があります:
WebLogic Kubernetes Operatorにはパッチ29135930が必要です。 標準の事前構築済のFMWインフラストラクチャ一般提供イメージcontainer-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3
には、すでにこのパッチが適用されています。 FMW Infrastructureの12.2.1.4.0イメージでは、このパッチは必要ありません。 Oracle Container Registryにログインしてライセンス契約に同意する方法の詳細は、この「ドキュメント」を参照してください。
ノート: 2022年12月現在、Fusion Middleware 12.2.1.3はサポートされていません。 FMW Infrastructure 12.2.1.3の最後のCritical Patch Updates (CPU)イメージは、2022年10月に公開されました。 2023年6月現在、Oracle WebLogic Server 12.2.1.3はサポートされなくなりました。 WebLogic Server 12.2.1.3の最後のCPUイメージは、2023年4月に公開されました。
このサンプルでは、一般提供 (GA)イメージを使用しています。 GAイメージは、パブリック・インターネットから環境を使用できないデモンストレーションおよび開発目的「のみ」に適しています。「本番での使用はできません」。 本番では、常にOCRのCPU (パッチ適用済)イメージを使用するか、WebLogic Image Tool (WIT)と--recommendedPatches
オプションを使用してイメージを作成する必要があります。 詳細は、「Oracle WebLogic Serverの本番環境の保護」の「最新のパッチと更新の適用」を参照してください。
Oracle Container Registryからイメージをプルするには、webブラウザでhttps://container-registry.oracle.comに移動し、Oracle Single Sign-On認証サービスを使用してログインします。 SSO資格証明がまだない場合は、ページ上部にあるSign Inリンクをクリックして作成します。
webインタフェースを使用して、デプロイするOracleソフトウェア・イメージのOracle標準条件および制限を受け入れます。 これらの用語の受入れは、ソフトウェア・イメージをOracle Single Sign-Onログイン資格証明にリンクするデータベースに格納されます。
まず、Oracle Container Registryにログインする必要があります:
$ docker login container-registry.oracle.com
その後、次のコマンドを使用してイメージをプルできます:
$ docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4
必要に応じて、次のことができます:
docker run container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4 sh -c
'source $ORACLE_HOME/wlserver/server/bin/setWLSEnv.sh > /dev/null 2>&1 && java weblogic.version'
を使用したWLSバージョンの確認
docker run container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4 sh -c
'$ORACLE_HOME/OPatch/opatch lspatches'
によるWLSパッチの確認
このイメージの使用の詳細は、Oracle Container Registryを参照してください。
FMW Infrastructureバイナリを含むイメージを作成することもできます。 FMW Infrastructureを実行するイメージの作成方法を示す「サンプル」がOracle GitHubアカウントに用意されています。 サーバーJREイメージのビルドやプル、Fusion Middleware Infrastructureインストーラ・バイナリのダウンロードなどの重要な前提条件ステップについては、このサンプルに関連付けられているREADMEファイルを参照してください。
リポジトリをクローンし、Oracle Technology Networkまたはe-deliveryからインストーラをダウンロードした後、提供されたスクリプトを実行してイメージを作成します:
$ cd docker-images/OracleFMWInfrastructure/dockerfiles
$ ./buildDockerImage.sh -v 12.2.1.4 -s
生成されるイメージの名前はoracle/fmw-infrastructure:12.2.1.4
になります。
このイメージをオペレータとともに使用するには、「必要なパッチ」もインストールする必要があります。 必要なパッチがインストールされたイメージの作成方法を示す「サンプル」が用意されています。
My Oracle Supportからパッチをダウンロードした後、提供されているスクリプトを実行してパッチ適用済イメージを作成します:
$ cd docker-images/OracleFMWInfrastructure/samples/12213-patch-fmw-for-k8s
$ ./build.sh
これにより、oracle/fmw-infrastructure:12213-update-k8s
という名前のイメージが生成されます。
すべてのサンプルおよび手順は、事前作成済イメージであるcontainer-registry.oracle.com/middleware/fmw_infrastructure:12.2.1.4
を参照しています。 これらのサンプルでは、WebLogic Server 12.2.1.3に基づいてイメージを作成し、タグoracle/fmw-infrastructure:12213-update-k8s
を使用するため、このimage
値を使用するようにサンプル入力を更新してください。
これらのサンプルでは、FMW Infrastructureバイナリおよび必要なパッチを含むイメージを作成できます。 このイメージを使用して、リポジトリ作成ユーティリティを実行し、「永続ボリューム上のドメイン」モデルを使用してドメインを実行できます。 “domain in an image”モデルを使用する場合は、さらに1つのステップを実行して、ドメインを含む別のレイヤーを追加する必要があります。 WLSTまたはWDTを使用してドメインを作成できます。
ドメインを作成する前に、データベースに必要なスキーマを設定する必要があります。
FMW Infrastructureドメインには、必要なスキーマがインストールされているデータベースが必要です。 これらのスキーマを作成できる、リポジトリ作成ユーティリティ(RCU)と呼ばれるユーティリティが用意されています。 ドメインを作成する前に、データベースを設定する必要があります。 FMW InfrastructureをKubernetesで実行することで追加の要件はありません。同じ既存の要件が適用されます。
テストおよび開発では、Kubernetes内またはKubernetes外でデータベースを実行することを選択できます。
Oracle Databaseイメージは、非本番用にのみサポートされています。 詳細は、My Oracle Supportノートを参照してください: Docker 「ドキュメントID 2216342.1」で実行されているデータベースの場合は、Oracle Support。
Kubernetes内でデータベースを実行する場合は、Oracle Container Registryの公式のコンテナ・イメージを使用できます。 ディスク領域(4GB)の要件が減り、コンテナの起動が速くなった、EEのスリム・バリアント(12.2.0.1-slim
タグ)があることに注意してください。
テスト/開発またはCI/CDシナリオでは、Kubernetesクラスタ内でのデータベースの実行がより適切である可能性があります。
Oracleデータベースのデプロイメントを定義するKubernetes YAMLファイルの例を次に示します:
apiVersion: apps/v1
kind: Deployment
metadata:
name: oracle-db
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/instance: dev
app.kubernetes.io/name: oracle-db
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/instance: dev
app.kubernetes.io/name: oracle-db
spec:
containers:
- env:
- name: DB_SID
value: devcdb
- name: DB_PDB
value: devpdb
- name: DB_DOMAIN
value: k8s
image: container-registry.oracle.com/database/enterprise:12.2.0.1-slim
imagePullPolicy: IfNotPresent
name: oracle-db
ports:
- containerPort: 1521
name: tns
protocol: TCP
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: 200m
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
SIDやPDBの名前などを設定するために環境変数を渡すことができます。 このドキュメントでは、使用可能なその他の変数について説明します。
ドキュメントの手順に従って、sys
パスワードを設定します。
また、既知の名前でKubernetesクラスタ内でデータベースを使用できるようにするサービスも作成する必要があります。 例:
apiVersion: v1
kind: Service
metadata:
name: oracle-db
namespace: default
spec:
ports:
- name: tns
port: 1521
protocol: TCP
targetPort: 1521
selector:
app.kubernetes.io/instance: dev
app.kubernetes.io/name: oracle-db
sessionAffinity: None
type: ClusterIP
前述の例では、アドレスoracle-db.default.svc.cluster.local:1521/devpdb.k8s
を使用してクラスタにデータベースが表示されます。
Kubernetesクラスタでデータベースを実行する場合、厳密には必要ありませんが、ネットワーク内のポッドからRCUを実行することもできます。 NodePort
を作成して、Kubernetesクラスタの外部にデータベースを公開し、クラスタにアクセスできる別のマシンでRCUを実行できます。
Kubernetes外でデータベースを実行する場合は、Kubernetesのポッドで実行されているコンテナがデータベースを表示する方法を作成する必要があります。 これを行うには、次の例に示すように、セレクタなしでKubernetesサービスを定義し、それをエンドポイント定義に関連付けます:
kind: Service
apiVersion: v1
metadata:
name: database
spec:
type: ClusterIP
ports:
- port: 1521
targetPort: 1521
---
kind: Endpoints
apiVersion: v1
metadata:
name: database
subsets:
- addresses:
- ip: 129.123.1.4
ports:
- port: 1521
これにより、現在のネームスペースにDNS名database
が作成され、前の例のようにネームスペースが指定されていない場合はdefault
が作成されます。 この例では、完全修飾名はdatabase.default.svc.cluster.local
になります。 2つ目の部分はネームスペースです。 このようなサービスのClusterIP
を検索した場合、オーバーレイ・ネットワーク(Kubernetesクラスタ内のネットワーク)上にIPアドレスがあります。 たとえば、flannelを使用している場合、アドレスは10.0.1.25
のようになります。 これは通常、ルーティングされないアドレスです。
Kubernetesで実行されているポッド内のコンテナから、そのアドレスおよびポート1521
に接続できます。 Kubernetesは、エンドポイント定義で指定されたアドレス(この例では129.123.1.4:1521
)に接続をルーティングします。 このIPアドレス(または名前)は、Kubernetesクラスタ内のオーバーレイ・ネットワークではなく、KubernetesノードのIPスタックの観点から解決されます。 これは実際のルーティングされたIPアドレスです。
データ・ソースを作成するときは、database:1521/some.service
などの内部アドレスを使用します。
データベースは外部からアクセス可能であるため、RCUはネットワーク上の任意のマシンから通常の方法で実行できます。
Kubernetesクラスタ内のポッドからRCUを実行する場合は、前に構築したコンテナ・イメージをサービスポッドとして使用してRCUを実行できます。 これを行うには、次のようにイメージを使用してポッドを起動します:
$ kubectl run rcu --generator=run-pod/v1 --image container-registry.oracle.com/middleware/fmw_infrastructure:12.2.1.4 -- sleep infinity
これにより、sleep infinity
を実行するだけのcontainer-registry.oracle.com/middleware/fmw_infrastructure:12.2.1.4
イメージから作成されたコンテナを実行するポッドを含む、rcu
というKubernetesデプロイメントが作成されます。このコンテナは基本的に、実行する必要があるすべてのコマンドを実行するために実行できるポッドを作成します。
このコンテナ内を取得してコマンドを実行するには、次のコマンドを使用します:
$ kubectl exec -ti rcu /bin/bash
このポッドの操作が終了したら、次のコマンドを使用して削除できます:
$ kubectl delete pod rcu
同じ方法を使用して、WLSTなどの他のユーティリティを実行するための一時ポッドを取得できます。
このポッド内で、次のコマンドを使用してRCUをコマンド行(GUIなし)モードで実行し、FMWスキーマを作成できます。 正しいプレフィクスと接続文字列を指定する必要があります。 sys
ユーザーのパスワードと、通常のスキーマ・ユーザーに使用するパスワードの入力を求められます:
$ /u01/oracle/oracle_common/bin/rcu \
-silent \
-createRepository \
-databaseType ORACLE \
-connectString oracle-db.default:1521/devpdb.k8s \
-dbUser sys \
-dbRole sysdba \
-useSamePasswordForAllSchemaUsers true \
-selectDependentsForComponents true \
-schemaPrefix FMW1 \
-component MDS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component OPSS \
-component WLS \
-component STB
non-Kubernetes環境の場合と同様に、データベース・スキーマと一致するドメイン間の関連付けを維持する必要があります。 これに役立つ特定の機能はありません。 RCUプレフィクス(schemaPrefix
引数の値)をdomainUID
と同じにして、この関連付けを維持することをお薦めします。
スキーマを削除する場合は、次のようなコマンドを使用できます:
$ /u01/oracle/oracle_common/bin/rcu \
-silent \
-dropRepository \
-databaseType ORACLE \
-connectString oracle-db.default:1521/devpdb.k8s \
-dbUser sys \
-dbRole sysdba \
-selectDependentsForComponents true \
-schemaPrefix FMW1 \
-component MDS \
-component IAU \
-component IAU_APPEND \
-component IAU_VIEWER \
-component OPSS \
-component WLS \
-component STB
ここでも、正しいプレフィクスと接続文字列を設定する必要があり、sys
ユーザー・パスワードの入力を求められます。
また、データベース・スキーマの資格証明を含むKubernetesシークレットを作成する必要があります。 次のサンプルを使用してドメインを作成すると、このシークレットからRCU資格証明が取得されます。
シークレットの作成方法を示す「サンプル」が用意されています。 必要なスキーマ所有者ユーザー名は、schemaPrefix
値の後にアンダースコアとコンポーネント名(FMW1_STB
など)が続きます。 スキーマ所有者のパスワードは、RCUの作成時に通常のスキーマ・ユーザーに指定したパスワードになります。
イメージの作成が完了し、RCUスキーマの作成が完了したら、ドメインを作成できます。 FMW Infrastructureドメインの作成方法を示す「サンプル」が用意されています。
FMW Infrastructureバイナリには、次の2種類のパッチを適用できます:
パッチに付随するREADMEファイルを参照して、パッチがゼロ・ダウンタイム・パッチ適用の対象であるかどうかを確認できます。
ローリング再起動で適用できるZDP準拠のパッチを適用する場合は、この「サンプル」に示されているようにFMW Infrastructureイメージにパッチを適用した後、新しいイメージの名前でドメイン・カスタム・リソースを編集すると、オペレータがドメインのローリング再起動を開始します。
非ZDP準拠のパッチをFMW Infrastructureバイナリ・イメージに適用する場合は、パッチを適用する前にドメイン全体を停止する必要があります。 詳細は、「ドメイン・ライフサイクル操作」のドキュメントを参照してください。
ZDPに準拠していないパッチの例として、動的に適用できないスキーマ変更があります。
Coherenceを含むドメインを実行している場合、詳細は「Coherenceの要件」を参照してください。