機械翻訳について

構成のオーバーライド

目次

概要

構成のオーバーライドは、Domain in ImageおよびDomain on PVドメインと組み合せてのみ使用できます。 Model in Imageドメインの場合は、かわりに「Model in Imageランタイムの更新」を使用します。

構成オーバーライド(「状況構成」とも呼ばれる)を使用して、ドメインの実際のconfig.xmlまたはシステム・リソース・ファイルを変更せずに、Domain in ImageまたはDomain on PVドメインのWebLogicドメイン構成をカスタマイズします。 たとえば、JDBCデータ・ソースのXMLモジュールのユーザー名、パスワードおよびURLを、ローカル・データベースを参照するようにオーバーライドできます。

ノート: Domain in Image ドメイン・ホーム・ソース・タイプは、WebLogic Kubernetes Operatorバージョン4.0では非推奨です。 Oracleでは、必要に応じてDomain on PVまたはModel in Imageを選択することをお薦めします。

オーバーライドを使用して、QAから本番に移行するとき、異なるサイトにデプロイされるとき、または同じサイトに複数回デプロイされるときに、ドメインをカスタマイズできます。 オペレータ・バージョンの3.0.0から、実行中のWebLogic Serverインスタンスの構成オーバーライドを変更して、これらの新しいオーバーライドを動的に有効にできるようになりました。 オーバーライドによって変更できるWebLogic構成属性に対する「制限事項」があり、サーバーの実行中に変更できるのは動的構成のMBean属性に対する変更のみです。 その他の変更、特に動的でないMBeansに対するオーバーライドは、サーバーの起動時または再起動時に適用する必要があります。

どのようにオーバーライドを指定しますか。

  • ドメイン・ホームが前提条件を満たしていることを確認します。 「前提条件」を参照してください。
  • オーバーライドがサポートされていることを確認します。 「一般的なオーバーライド」および「サポートされないオーバーライド」を参照してください。
  • 次のものを含むKubernetes ConfigMapを作成します:
  • ドメインconfiguration.overridesConfigMapフィールドをこのConfigMapの名前に構成します。
  • テンプレートでシークレット・マクロを利用する場合:
    • テンプレート・マクロ値を含むKubernetesシークレットを作成します。
    • 前述のシークレットを参照するようにドメインconfiguration.secretsを設定します。
  • 構成オーバーライドによって動的でないMBean属性が変更され、現在このドメインのWebLogic Serverインスタンスが実行されている場合:
    • 影響を受けるクラスタまたは管理対象サーバー・インスタンスをローリングすることで、動的でないMBean属性に加えた変更を適用できるかどうか、または変更に完全なドメイン停止が必要かどうかを決定します。
    • ドメイン全体の停止が必要な場合は、ドメイン内で実行中のすべてのWebLogic Serverインスタンス・ポッドを停止してから再起動します。 (「サーバーの起動と停止」を参照。)
    • それ以外の場合は、ローリング・クラスタを含むドメインを再起動するだけです。 (「サーバーの再起動」を参照。)
  • オーバーライドが有効になっていることを確認します。 (「デバッグ」を参照してください)。

これらのステップの詳細は、「段階的なガイド」を参照してください。

実行時のオーバーライドの動作

  • 構成のオーバーライドは、オペレータの「イントロスペクション」フェーズで処理されます。
  • イントロスペクションは次の場合に自動的に行われます:
    1. オペレータは、他のサーバーが現在実行されていないときにWebLogic Serverインスタンスを起動しています。 これは、オペレータが最初にドメインのサーバーを起動したとき、または完全なドメイン停止後にサーバーを起動したときに発生します。
    2. Model in Imageの場合、オペレータは、現在実行中のWebLogic Serverインスタンスを停止して再起動する必要があると判断します。 これには、1つ以上のクラスタのローリング、1つ以上のWebLogic Serverインスタンスの停止と再起動、またはこれらの組合せがあります。
  • ドメインintrospectVersionフィールドの値を変更して、「イントロスペクションの開始」を実行できます。
  • 構成オーバーライドの場合、およびイントロスペクション時に、オペレータは次のことを行います:
    • オーバーライド・テンプレートのマクロを解決します。
    • 拡張されたオーバーライド・テンプレートを、各WebLogicドメイン・ホーム・ディレクトリにあるoptconfigディレクトリに配置します。
  • WebLogic Serverインスタンスが起動すると、次の処理が行われます:
    • オーバーライド・ファイルをoptconfigディレクトリから自動的にロードします。
    • config.xmlまたはシステム・リソースのXMLファイルで指定された値のかわりに、オーバーライド・ファイルのオーバーライド値を使用します。
  • WebLogic Serverインスタンスは、サーバーの実行中にこれらのファイルが変更された場合に、WebLogicがこれらのファイルの更新された内容に基づいて新しい構成値を検出して使用するように、optconfigディレクトリ内のファイルを監視します。 これは、動的構成MBean属性に関連する構成オーバーライドの変更に対してのみ機能します。

ランタイム・フローの詳細は、「内部設計フロー」を参照してください。


前提条件

  • 構成のオーバーライドは、Domain in ImageおよびDomain on PVドメインと組み合せて使用できます。 Model in Imageドメイン(3.0.0で導入)の場合は、かわりに「Model in Imageランタイムの更新」を使用します。

  • WebLogicドメイン・ホームのoptconfigディレクトリに、オペレータによって配置されていない構成オーバーライドXMLファイルを含めることはできません。 このディレクトリ内の既存の構成オーバーライドXMLファイルはすべて削除され、オペレータ・オーバーライド・テンプレート(存在する場合)に置き換えられます。

  • JDBC、JMSまたはWLDF (診断)モジュールをオーバーライドする場合は、元のモジュールをそれぞれドメイン・ホームのconfig/jdbcconfig/jmsおよびconfig/diagnosticsディレクトリに配置する必要があります。 これらは、これらのタイプのモジュールのデフォルトのロケーションです。


一般的なオーバーライド

オーバーライドの一般的な属性は次のとおりです:

  • 次のユーザー名、パスワードおよびURL:
    • JDBCデータ・ソース
    • JMSブリッジ、外部サーバーおよびSAF
  • ネットワーク・チャネルの外部/パブリック・アドレス
    • リモートRMIクライアント(T3、JMS、EJB)の場合
    • リモートWLSTクライアントの場合
  • ネットワーク・チャネルの外部/パブリック・ポート
    • リモートRMIクライアント(T3、JMS、EJB)の場合
  • デバッグ
  • チューニング(MaxMessageSizeなど)

すでに実行中のWebLogic Serverインスタンスに新規または変更された構成のオーバーライドを配布する方法については、「構成のオーバーライド」を参照してください。


サポートされないオーバーライド

重要: オペレータは、次の領域での顧客指定のオーバーライドをサポートしていません。

  • ドメイン・トポロジ(クラスタ・メンバー)
  • ネットワーク・チャネルlisten addressportおよびenabledフィールド
  • サーバーおよびドメインのログのロケーション
  • domain.spec.dataHomeが設定されている場合、デフォルトまたはカスタムのファイル・ストア・ディレクトリ
  • ノード・マネージャ関連の構成
  • 既存のMBean名の変更
  • モジュール(JDBCモジュールなど)の追加または削除

具体的には、次の場合にカスタム・オーバーライドを使用しないでください:

  • 追加または削除:
    • サーバー
    • クラスタ
    • ネットワーク・アクセス・ポイント(カスタム・チャネル)
    • モジュール
  • 次のいずれかの変更:
    • 動的クラスタ・サイズ
    • デフォルト、SSLおよび管理チャネルEnabled、リスニング・アドレスおよびポート
    • ネットワーク・アクセス・ポイント(カスタム・チャネル)、リスニング・アドレスまたはポート
    • サーバーおよびドメインのログのロケーション - かわりにdomain.spec.logHome設定を使用し、domain.spec.logHomeEnabledがtrueに設定されていることを確認してください
    • domain.spec.dataHomeが設定されている場合、デフォルトまたはカスタムのファイル・ストア・ディレクトリ
    • ノード・マネージャのアクセス資格証明
    • 既存のMBean名(たとえば、ドメイン名は変更できません)

ネットワーク・アクセス・ポイントのpublicまたはexternalのアドレスとポートをオーバーライドすることもできます。 また、JMX (MBean)またはオンラインWLSTへの外部アクセスでは、ネットワーク・アクセス・ポイントの内部ポートと外部ポートが一致している必要があります(JMS、RMIまたはEJBへの外部T3またはHTTPトンネリング・アクセスでは、ポートの一致は必要ありません)。

サポートされていないオーバーライドを使用した場合の動作は未定義です。

構成のオーバーライド

オペレータは、オペレータのイントロスペクション・フェーズで、顧客が指定した構成オーバーライドとオペレータが生成したオーバーライドを組み合せて、最終構成オーバーライドを生成します。 これらのオーバーライドは、WebLogic Serverインスタンスの起動時または再起動時に使用されます。 オペレータ・バージョン3.0.0以降、これらのオーバーライドも配布でき、すでに実行中のWebLogic Serverインスタンスに適用されます。

Domain on PVでは、管理コンソールまたはWLSTを含む従来の管理トランザクションを使用してWebLogicドメイン構成を変更する機能を組み合せて、繰返しイントロスペクションを開始し、更新された構成オーバーライドを配布できます。 この組合せでは、新しいWebLogicクラスタの定義や、管理対象サーバー・クラスタ・メンバーの即時起動などのユースケースがサポートされます。


テンプレート名および構文のオーバーライド

オーバーライドは、「構成のオーバーライド」と呼ばれる組込みのWebLogic機能を利用します。この機能は、非公式には「状況構成」と呼ばれます。 構成オーバーライドは、WebLogic config.xmlの構造によく似たXML形式のファイルと、システム・リソース・モジュールのXMLファイルで構成されます。 また、これらのファイルの属性フィールドには、addreplaceおよびdelete動詞を埋め込んで、フィールドに必要なオーバーライド・アクションを指定できます。

テンプレート名のオーバーライド

このオペレータには、WebLogicの組込み構成オーバーライド機能とは異なるオーバーライド・テンプレートのファイル名形式が必要です。 テンプレートをドメイン・ホームのoptconfigディレクトリに移動するときに、名前が構成オーバーライド機能で必要な形式に変換されます。 次の表では、形式について説明します:

元の構成 必須オーバーライド名
config.xml config.xml
JMSモジュール jms-MODULENAME.xml
JDBCモジュール jdbc-MODULENAME.xml
診断モジュール diagnostics-MODULENAME.xml

MODULENAMEは、元のconfig.xmlファイルで定義されているシステム・リソースのMBean名に対応している必要があります。 オーバーライドを使用して新しいモジュールを追加することはできません。 新しいモジュールを設定するためにオーバーライドが必要な場合は、元の構成でオーバーライド可能なスケルトン・モジュールを指定します。

テンプレート・スキーマのオーバーライド

オーバーライド・テンプレートでは、構成オーバーライド機能に必要な正確なスキーマを定義する必要があります。 スキーマは、オーバーライドするファイル・タイプによって異なります。

config.xml

<?xml version='1.0' encoding='UTF-8'?>
<d:domain xmlns:d="http://xmlns.oracle.com/weblogic/domain"
          xmlns:f="http://xmlns.oracle.com/weblogic/domain-fragment"
          xmlns:s="http://xmlns.oracle.com/weblogic/situational-config">
  ...
</d:domain>

jdbc-MODULENAME.xml

<?xml version='1.0' encoding='UTF-8'?>
<jdbc:jdbc-data-source xmlns:jdbc="http://xmlns.oracle.com/weblogic/jdbc-data-source"
                       xmlns:f="http://xmlns.oracle.com/weblogic/jdbc-data-source-fragment"
                       xmlns:s="http://xmlns.oracle.com/weblogic/situational-config">
  ...
</jdbc:jdbc-data-source>

jms-MODULENAME.xml

<?xml version='1.0' encoding='UTF-8'?>
<jms:weblogic-jms xmlns:jms="http://xmlns.oracle.com/weblogic/weblogic-jms"
                  xmlns:f="http://xmlns.oracle.com/weblogic/weblogic-jms-fragment"
                  xmlns:s="http://xmlns.oracle.com/weblogic/situational-config" >
  ...
</jms:weblogic-jms>

diagnostics-MODULENAME.xml

<?xml version='1.0' encoding='UTF-8'?>
<wldf:wldf-resource xmlns:wldf="http://xmlns.oracle.com/weblogic/weblogic-diagnostics"
                    xmlns:f="http://xmlns.oracle.com/weblogic/weblogic-diagnostics-fragment"
                    xmlns:s="http://xmlns.oracle.com/weblogic/situational-config" >
  ...
</wldf:wldf-resource>

テンプレート・マクロのオーバーライド

オペレータは、オーバーライド・テンプレートへのマクロの埋込みをサポートしています。 これにより、テンプレートでは、異なるデプロイメントに対して異なるURL、ユーザー名およびパスワードを指定するなど、複数のユースケースを柔軟に処理できます。

環境変数マクロとシークレット・マクロの2タイプのマクロがサポートされています:

  • 環境変数マクロの構文は${env:ENV-VAR-NAME}で、サポートされている環境変数はDOMAIN_UID, DOMAIN_NAME, DOMAIN_HOMEおよびLOG_HOMEです。

  • シークレット・マクロの構文は、${secret:SECRETNAME.SECRETKEY}および${secret:SECRETNAME.SECRETKEY:encrypt}です。

シークレット・マクロのSECRETNAMEフィールドはKubernetesシークレットの名前を参照する必要があり、SECRETKEYフィールドはそのシークレット内のキーを参照する必要があります。 たとえば、値scottを含むusernameという名前のキーを使用してdbuserという名前のシークレットを作成した場合、テンプレートがWebLogic Serverインスタンス・ポッドにコピーされる前に、マクロ${secret:dbuser.username}scottに置き換えられます。

セキュリティ上のノート: シークレット・マクロで:encryptサフィクスを使用して、(プレーン・テキスト値のままにするのではなく) WebLogic WLST encryptコマンドで置換値を暗号化します。 これは、データ・ソースのpassword-encryptedフィールドなど、暗号化された値を必要とするMBean属性をオーバーライドする場合に役立ちます。また、オペレータがドメイン・ホームに配置した構成ファイルをカスタム・オーバーライドしてもプレーン・テキストでパスワードが公開されないようにする場合にも役立ちます。

テンプレート構文の特別な要件のオーバーライド

次の各アイテムでベスト・プラクティスを確認し、カスタムのオーバーライド構成が有効であることを確認します:

  • オーバーライドする階層内の現在のBeanおよび各親Beanの名前を参照します。
  • replaceおよびadd動詞を次のように使用します:
  • config.xmlをオーバーライドする場合:
    • XMLネームスペース(XMLのxmlns:)は、テンプレート・スキーマのオーバーライドで指定されているとおりにする必要があります。
      • たとえば、d:を使用してconfig.xml beanおよび属性を参照し、addf:およびreplace domain-fragment動詞、およびs:を使用して構成オーバーライド・スキーマを参照します。
    • ドメイン名スタンザを指定すると、一部のオーバーライド(たとえば、サーバー・テンプレート・スコープのオーバーライド)が無視される可能性があるため、指定しないでください。
  • モジュールをオーバーライドする場合:
    • JMS、JDBCおよびWLDF (診断)モジュール・オーバーライド・ファイルには、それぞれXMLネームスペースの略称jms:jdbc:およびwldf:を使用することをお薦めします。
    • モジュールをオーバーライドする場合は、そのモジュールがすでに元の構成に存在している必要があります。オーバーライドを使用して新しいモジュールを追加することはできません。 新しいモジュールを設定するためにオーバーライドが必要な場合は、元の構成でオーバーライド可能なスケルトン・モジュールを指定します。
    • ベスト・プラクティスのアドバイスについては、「データ・ソース・モジュールのオーバーライド」を参照してください。 一般に、他のモジュール・タイプにも同様のアドバイスが適用されることに注意してください。
  • 元の構成で無効なユーザー名、パスワードおよびURLを参照することを検討してください:
    • 元の(オーバーライドされていない)構成が動作していないユーザー名、パスワードおよびURLを参照している場合、意図した環境に対して無効な作業構成を誤ってデプロイしないようにするのに役立ちます。 たとえば、基本構成が動作中のQAデータベースを参照しており、オーバーライドの設定に誤りがある場合、本番環境へのデプロイ時に稼働中のサーバーがQAデータベースに接続する可能性があります。

テンプレート・サンプルのオーバーライド

次に、テンプレートのオーバーライド・ファイルの例を示します。

config.xmlのオーバーライド

次のconfig.xmlオーバーライド・ファイルは、次のことを示しています:

  • admin-serverという名前のWebLogic Serverでのmax-message-sizeフィールドの設定。 元のconfig.xmlではこの値が定義されていないため、replaceのかわりにaddが使用されることを前提としています。
  • public-addressおよびpublic-portフィールドに、hostnameおよびportというキーを持つtest-hostという名前のシークレットから取得した値を設定します。 ここでは、元のconfig.xmlでこれらのフィールドがすでに設定されていることを前提としているため、addのかわりにreplaceを使用します。
  • 2つのデバッグ設定を設定します。 元のconfig.xmlにはserver-debugスタンザがないため、スタンザ全体でaddを使用します。
<?xml version='1.0' encoding='UTF-8'?>
<d:domain xmlns:d="http://xmlns.oracle.com/weblogic/domain"
          xmlns:f="http://xmlns.oracle.com/weblogic/domain-fragment"
          xmlns:s="http://xmlns.oracle.com/weblogic/situational-config" >
    <d:server>
        <d:name>admin-server</d:name>
        <d:max-message-size f:combine-mode="add">78787878</d:max-message-size>
        <d:server-debug f:combine-mode="add">
          <d:debug-server-life-cycle f:combine-mode="add">true</d:debug-server-life-cycle>
          <d:debug-jmx-core f:combine-mode="add">true</d:debug-jmx-core>
        </d:server-debug>
        <d:network-access-point>
          <d:name>T3Channel</d:name>
          <d:public-address f:combine-mode="replace">${secret:test-host.hostname}</d:public-address>
          <d:public-port f:combine-mode="replace">${secret:test-host.port}</d:public-port>
        </d:network-access-point>
    </d:server>
</d:domain>

データ・ソース・モジュールのオーバーライド

次のjdbc-testDS.xmlオーバーライド・テンプレートは、secret macrosを使用したtestDSという名前のJDBCモジュールのURL、ユーザー名およびパスワード暗号化フィールドの設定を示しています。 マクロをシークレット値に置き換える生成済の構成オーバーライドは、DOMAIN_HOME/optconfig/jdbcディレクトリにあります。 password-encryptedフィールドには、:encryptサフィクスの付いたシークレット・マクロが使用されるため、暗号化された値が移入されます。 Secretはdbsecretという名前で、3つのキーが含まれています: urlusernameおよびpassword

データ・ソース・モジュールとそのオーバーライドのベスト・プラクティス:

  • データ・ソース・モジュールをオーバーライドする場合は、元の構成にすでに存在している必要があります。オーバーライドを使用して新しいモジュールを追加することはできません。 新しいモジュールを設定するためにオーバーライドが必要な場合は、元の構成でオーバーライド可能なスケルトン・モジュールを指定します。 スケルトン・データ・ソース・モジュールの一般的な内容については、次の2つの箇条書きアイテムを参照してください。
  • 元の(オーバーライドされていない) URL、ユーザー名およびパスワードを無効な値に設定します。 これにより、オーバーライドせずにサーバーを誤って起動し、現在の環境に適していないデータベースにデータ・ソースが正常に接続するのを防ぐことができます。 たとえば、これらの属性が元の構成でQAデータベースを参照するように設定されている場合、本番Kubernetesデプロイメントでオーバーライドを誤って構成すると、本番アプリケーションでQAデータベースが使用される可能性があります。
  • 元の(オーバーライドされていない) JDBCConnectionPoolParams MinCapacityおよびInitialCapacity0に設定し、元のDriverNameを既存のJDBCドライバを参照するように設定します。 これにより、無効なURL/username/password値を構成した場合、データベースが稼働していない場合、またはまだオーバーライドを指定していない場合でも、サーバーを正常に起動できます。
<?xml version='1.0' encoding='UTF-8'?>
<jdbc:jdbc-data-source xmlns:jdbc="http://xmlns.oracle.com/weblogic/jdbc-data-source"
                       xmlns:f="http://xmlns.oracle.com/weblogic/jdbc-data-source-fragment"
                       xmlns:s="http://xmlns.oracle.com/weblogic/situational-config">

  <jdbc:name>testDS</jdbc:name>
  <jdbc:jdbc-driver-params>
    <jdbc:url f:combine-mode="replace">${secret:dbsecret.url}</jdbc:url>
    <jdbc:properties>
       <jdbc:property>
          <jdbc:name>user</jdbc:name>
          <jdbc:value f:combine-mode="replace">${secret:dbsecret.username}</jdbc:value>
       </jdbc:property>
    </jdbc:properties>
    <jdbc:password-encrypted f:combine-mode="replace">${secret:dbsecret.password:encrypt}</jdbc:password-encrypted>
  </jdbc:jdbc-driver-params>
</jdbc:jdbc-data-source>

段階的なガイド

  • ドメイン・ホームが前提条件を満たしていることを確認します。 「前提条件」を参照してください。
  • オーバーライドがサポートされていることを確認します。 「一般的なオーバーライド」「構成のオーバーライド」および「サポートされないオーバーライド」を参照してください。
  • (A)置換するMBeanプロパティをオーバーライドするための一連の構成オーバーライド・テンプレート、および(B) version.txtファイル、を含むディレクトリを作成します。
    • このディレクトリには、他のファイルを含めないでください。
    • version.txtファイルには、文字列2.0を正確に含める必要があります。
      • ノート: 以前のデプロイメントからテンプレートを更新する場合でも、このversion.txtファイルは2.0のままである必要があります。
    • テンプレートは、「サポートされないオーバーライド」にリストされている設定をオーバーライドできません。
    • テンプレートは、「テンプレート名および構文のオーバーライド」に従って書式設定し、名前を付ける必要があります。
    • テンプレートには、環境変数またはKubernetesシークレットを参照するマクロを埋め込むことができます。 「テンプレート・マクロのオーバーライド」を参照してください。
  • テンプレートのディレクトリからKubernetes ConfigMapを作成します。
    • ConfigMapは、ドメインと同じKubernetesネームスペースに存在する必要があります。

    • ConfigMapを単一のDOMAIN_UIDで使用する場合は、リソースの追跡に役立つweblogic.domainUID=<mydomainuid>ラベルを追加することをお薦めします。

    • たとえば、./mydirversion.txtおよび状況構成テンプレート・ファイルが含まれているとします:

      $ kubectl -n MYNAMESPACE create cm MYCMNAME --from-file ./mydir
      
      $ kubectl -n MYNAMESPACE label cm MYCMNAME weblogic.domainUID=DOMAIN_UID
      
  • テンプレートの「シークレット・マクロ」によって参照されるKubernetesシークレットを作成します。
    • シークレットには、クリア・テキストまたはbase64値を保持できる複数のキー(ファイル)を含めることができます。 Opaqueタイプのシークレットをdataフィールドで使用してパスワードにbase64値を使用することをお薦めします。これにより、それらのシークレットを簡単に読めなくなります。 詳細は、https://kubernetes.io/docs/concepts/configuration/secret/を参照してください。

    • シークレットは、ドメインと同じKubernetesネームスペースに存在する必要があります。

    • シークレットを単一のDOMAIN_UIDで使用する場合は、リソースの追跡に役立つようにweblogic.domainUID=<mydomainuid>ラベルを追加することをお薦めします。

    • 例えば:

      $ kubectl -n MYNAMESPACE create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret
      
      $ kubectl -n MYNAMESPACE label secret my-secret weblogic.domainUID=DOMAIN_UID
      
  • ドメインYAMLファイルconfiguration.overridesConfigMapフィールドでConfigMapの名前を構成します。
  • ドメインYAMLファイルの各シークレットの名前を構成します。
    • シークレットにWebLogic管理usernameおよびpasswordキーが含まれている場合は、ドメインYAMLファイルのwebLogicCredentialsSecretフィールドを設定します。
    • その他すべてのシークレットについては、ドメインYAMLファイルconfiguration.secretsフィールドに追加します。 ノート: 1つのシークレットのみを追加する場合でも、これは配列形式である必要があります(次のドメインYAMLファイルのサンプルを参照)。
  • オーバーライド・テンプレートを含むConfigMapのコンテンツや参照されるシークレットのコンテンツなど、構成オーバーライドに対する変更は、オペレータがWebLogicドメイン構成の「イントロスペクション」を実行または繰り返すまで有効になりません。
  • 構成オーバーライドによって動的でないMBean属性が変更され、現在このドメインのWebLogic Serverインスタンスが実行されている場合:
    • 影響を受けるクラスタまたは管理対象サーバー・インスタンスをローリングして、動的でないMBean属性に加えた変更を適用できるかどうか、または変更に完全なドメイン停止が必要かどうかを決定します。 (「構成のオーバーライド」を参照)
    • ドメイン全体の停止が必要な場合は、ドメイン内で実行中のすべてのWebLogic Serverインスタンス・ポッドを停止してから再起動します。 (「サーバーの起動と停止」を参照。)
    • それ以外の場合は、ローリング・クラスタを含むドメインを再起動するだけです。 (「サーバーの再起動」を参照。)
  • 構成のオーバーライドが有効かどうか、またはエラーがあるかどうかを確認する方法については、「デバッグ」を参照してください。

ドメインYAMLの例:

apiVersion: "weblogic.oracle/v9"
kind: Domain
metadata:
  name: domain1
  namespace: default
  labels:
    weblogic.domainUID: domain1
spec:
  [ ... ]
  webLogicCredentialsSecret:
    name: domain1-wl-credentials-secret
  configuration:
    overridesConfigMap: domain1-overrides-config-map
    secrets: [my-secret, my-other-secret]
  [ ... ]

デバッグ

この情報を使用して、オーバーライドが有効であるか、エラーがあるかどうかを確認します。

バックグラウンド・ノート:

  • WebLogic Server管理コンソールには、オーバーライドの変更は反映され「ません」

    • コンソールを使用して、オーバーライドが有効であることを確認できません。
    • かわりに、WLSTを使用してオーバーライドを確認できます。詳細は、次のwlst.shスクリプトを参照してください。
  • 不正なオーバーライド・ファイルは警告やエラーなしで暗黙的に受け入れられる可能性があります。

    • たとえば、WebLogic Serverインスタンス・ポッドは、XMLオーバーライド構文エラーに関係なく、またはMBeanの指定した名前が正しくない場合に完全に起動する可能性があります。
    • そのため、QA環境でテンプレート・ファイルが正しいことを確認することが重要です。そうしないと、重大な必須のオーバーライドが有効になっていなくても、WebLogic Serversが起動する可能性があります。
  • weblogic.SituationalConfig.failBootOnErrorシステム・プロパティをサポートするWebLogic Serverバージョンで、正しくないオーバーライドが検出される場合があります。

    • システム・プロパティがサポートされている場合、構成オーバーライド・ファイルのロード中に構文エラーが発生すると、デフォルトでWebLogic Serverはブートに失敗します。
    • 誤ってフォーマットされたオーバーライド・ファイルを使用してWebLogic Serversを起動「したい」場合は、WebLogic ServersのKubernetesコンテナのFAIL_BOOT_ON_SITUATIONAL_CONFIG_ERROR環境変数をfalseに設定して、このチェックを無効にします。

デバッグ・ステップ:

  • 「段階的なガイド」の各ステップに従っていることを確認してください。

  • WebLogic Serverインスタンスのポッドがまったく起動しない場合は、次のようにします:

    • ドメイン・リソース・ステータスの確認: kubectl -n MYDOMAINNAMESPACE describe domain MYDOMAIN

    • ドメインのイベントのチェック: kubectl -n MY_NAMESPACE get events --sort-by='.lastTimestamp' 詳細は、「ドメイン・イベント」を参照してください。

    • イントロスペクタ・ジョブとそのログを確認します。

      • ドメインのネームスペースで、DOMAIN_UID-introspectorという名前のジョブと、DOMAIN_UID-introspector-xxxxのような名前の対応するポッドがあるかどうかを確認します。 その場合は、次の点を確認してください:
        • kubectl -n MYDOMAINNAMESPACE describe job INTROSPECTJOBNAME
        • kubectl -n MYDOMAINNAMESPACE logs INTROSPECTPODNAME
      • イントロスペクタ・ログは、spec.logHomeが構成され、spec.logHomeEnabledがtrueの場合、ドメイン・リソースのspec.logHomeディレクトリにミラー化されます。
    • オペレータ・ログでWarning/Error/Severeメッセージを確認します。

      • kubectl -n MYOPERATORNAMESPACE logs OPERATORPODNAME
  • WebLogic Serverインスタンスのポッドが起動する場合は、次のようにします:

    • 管理サーバー・ポッドのkubectl logでキーワードsituationalを検索します(例: kubectl logs MYADMINPOD | grep -i situational)。
      • 一致するWebLogic Serverログ行は次のようになります:
        • <Dec 14, 2018 12:20:47 PM UTC> <Info> <Management> <BEA-141330> <Loading situational configuration file: /shared/domains/domain1/optconfig/custom-situational-config.xml>
        • この行は、構成オーバーライド・ファイルがロードされたことを示します。
      • 検索でWarning行またはError行が返される場合、カスタム構成オーバーライド・テンプレートの形式が正しくなく、WarningまたはErrorテキストで問題を記述する必要があります。
      • ノート: JDBCモジュールをオーバーライドするときに、次の例外がサーバー・ログに表示される場合があります。 実行時の動作には影響せず、無視できます:
        java.lang.NullPointerException
          at weblogic.management.provider.internal.situationalconfig.SituationalConfigManagerImpl.registerListener(SituationalConfigManagerImpl.java:227)
          at weblogic.management.provider.internal.situationalconfig.SituationalConfigManagerImpl.start(SituationalConfigManagerImpl.java:319)
          ...
          at weblogic.management.configuration.DomainMBeanImpl.setJDBCSystemResources(DomainMBeanImpl.java:11444)
          ...
        
    • DOMAIN_HOME/optconfigディレクトリを確認します。
      • このディレクトリまたはこのディレクトリ内のサブディレクトリには、各カスタム構成オーバーライド・ファイルが含まれている必要があります。
      • そうでない場合は、ドメインYAMLファイルconfiguration.overridesConfigMapがカスタム・オーバーライドConfigMap名と一致するように構成されていないか、カスタム・オーバーライドConfigMapにオーバーライド・ファイルが含まれていない可能性があります。
  • 管理サーバーのポッドが起動しても準備完了状態にならない場合、または再起動を試行する場合:

    • 管理サーバー・ポッドのkubectl logでこのメッセージ WebLogic Server failed to start due to missing or invalid situational configuration filesを確認してください
      • これは、管理サーバーの起動に失敗した原因が、構成オーバーライド・ファイルで見つかったエラーである可能性があることを示しています。
        • String situationalを含む行は、より多くのヒントを提供するために管理サーバーのポッド・ログに記録される場合があります。
        • 例えば:
          <Jun 20, 2019 3:48:45 AM GMT> <Warning> <Management> <BEA-141323>
          <The situational config file has an invalid format, it is being ignored: XMLSituationalConfigFile[/shared/domains/domain1/optconfig/jdbc/testDS-0527-jdbc-situational-config.xml] because org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 3; The element type "jdbc:jdbc-driver-params" must be terminated by the matching end-tag "</jdbc:jdbc-driver-params>".
        
        • 警告メッセージは、testDS JDBCデータ・ソースに指定された構成オーバーライド・ファイルに構文エラーがあることを示します。
    • ポッド関連のKubernetesイベントの確認: kubectl -n MY_NAMESPACE get events --sort-by='.lastTimestamp'
  • WebLogic MBeanツリーで構成のオーバーライドが有効になっていることを確認するには、server configdomain configのMBeanツリー値を比較します。

    • domain config値は、ドメイン・ホーム構成の元の値を反映する必要があります。
    • server config値は、オーバーライドされた値を反映する必要があります。
    • たとえば、DOMAIN_UIDdomain1で、ドメインにadmin-serverという名前のWebLogic Serverが含まれているとします:
    $ kubectl exec -it domain1-admin-server /bin/bash
    $ wlst.sh
    > connect(MYADMINUSERNAME, MYADMINPASSWORD, 't3://domain1-admin-server:7001')
    > domainConfig()
    > get('/Servers/admin-server/MaxMessageSize')
    > serverConfig()
    > get('/Servers/admin-server/MaxMessageSize')
    > exit()
    
  • WebLogic構成オーバーライド機能によってWebLogic Serverログに追加のデバッグ情報が生成されるようにするには、ドメインYAMLファイルでJAVA_OPTIONS環境変数を次のように構成します:

    -Dweblogic.debug.DebugSituationalConfig=true
    -Dweblogic.debug.DebugSituationalConfigDumpXml=true
    

内部設計フロー

  • オペレータが生成したオーバーライドのマージ、およびイントロスペクション・フェーズでの顧客が指定した構成オーバーライド・テンプレートとシークレットの処理を含む、最終構成オーバーライドが生成されます。
  • このオペレータは、DOMAIN_UID-introspectorという名前のイントロスペクション用のKubernetesジョブを作成します。
  • イントロスペクタ・ジョブのポッド:
    • オペレータDomain configuration.overridesConfigMapwebLogicCredentialsSecretおよびconfiguration.secretsフィールドを使用して指定されたKubernetes ConfigMapおよびシークレットをマウントします。
    • マウントされた構成オーバーライド・テンプレートをConfigMapから読み取り、展開してドメインの実際の構成オーバーライド・ファイルを作成します:
      • 一部の固定の置換可能な値(${env:DOMAIN_UID}など)が拡張されます。
      • 対応するマウント済シークレット・ファイル(${secret:mysecret.mykey}など)から値を読み取ることで、参照されるシークレットを拡張します。
      • オプションで、オフラインWLSTを使用してシークレットを暗号化し、値を暗号化 - パスワード(${secret:mysecret.mykey:encrypt}など)に便利です。
      • 展開された構成オーバーライド・ファイルをオペレータに返します。
      • オペレータを拡張しようとすると、エラーが報告されます。
  • オペレータ・ランタイム:
    • 拡張構成オーバーライド・ファイルまたはエラーをイントロスペクタから読み取ります。
    • イントロスペクタでエラーが報告されなかった場合は、次のようになります:
      • 、名前がDOMAIN_UID-weblogic-domain-introspect-cmで始まる1つ以上のConfigMaps内のファイルをオーバーライドします。
      • これらのConfigMapsをWebLogic Serverインスタンスのポッドにマウントします。
    • それ以外の場合、イントロスペクタがエラーを報告すると、次のようになります:
      • 警告、エラーまたは重大なメッセージを記録します。
      • WebLogic Serverインスタンスのポッドは起動されませんが、すでに実行中のポッドは保持されます。
  • WebLogic ServerインスタンスのポッドのstartServer.shスクリプト:
    • 拡張構成オーバーライド・ファイルを、WebLogicランタイムが検出できる特別なロケーションにコピーします:
      • config.xmlオーバーライドは、そのドメイン・ホームのoptconfigディレクトリにコピーされます。
      • モジュール・オーバーライドは、optconfig/jdbcoptconfig/jmsまたはoptconfig/diagnosticsディレクトリにコピーされます。
    • ConfigMapに対応するテンプレート・ファイルがないoptconfigディレクトリ内の構成オーバーライド・ファイルを削除します。
  • WebLogic Serversは、ドメイン・ホームのoptconfigディレクトリからオーバーライドを読み取ります。
  • イントロスペクションの繰返し時にWebLogic Serverインスタンスのポッドがすでに実行されており、この新しいイントロスペクションで異なる構成オーバーライドが生成される場合は、次のようになります:
    • オペレータがConfigMapを更新すると、Kubernetesは実行中のコンテナ内のマウントされたファイルを、ConfigMapの新しい内容と一致するように変更します。
    • kubeletによるConfigMapデータのこの定期的な同期率は構成可能ですが、デフォルトは10秒です。
    • overridesDistributionStrategyDynamicの場合、Kubernetesによってすでに定期的に起動されているlivenessProbe.shスクリプトは、startServer.shと同じアクションを実行してoptconfigのファイルを更新します。
    • WebLogic Serverインスタンスは、optconfig内のファイルを監視し、構成オーバーライド・ファイルの現在の内容に基づいてアクティブな構成を動的に更新します。
    • それ以外の場合は、overridesDistributionStrategyOnRestartの場合、ConfigMapのマウント・ポイントで更新されたファイルは、WebLogic Serverインスタンスの実行中にoptconfigにコピーされないため、アクティブな構成には影響しません。

実行中のWebLogic Serverインスタンスに配布された構成オーバーライドへの変更は、対応するWebLogic構成のMBean属性が「動的」である場合にのみ有効になります。 たとえば、データソースpasswordEncrypted属性は動的ですが、Url属性は動的ではありません。