WebLogic Kubernetes Operatorバージョン3.3.2以降、またはIstio-enabledドメインを使用している場合、kubectl port-forward
コマンドを使用して、WebLogic Server管理コンソール、リモート・コンソールおよびWLSTの外部アクセスを設定できます。 この方法は、WebLogicのポートをパブリック・ネットワークに公開せずに、プライベート・ローカル・ネットワークからWebLogicを管理する場合に特に便利です。
ステップは、次のとおりです。
Kubernetes NodePort
、ロード・バランサ、ポート転送または同様のメソッドで、管理、RMIまたはT3対応のWebLogicチャネルを外部で公開すると、安全でない構成を作成できます。 詳細は、「外部ネットワーク・アクセスのセキュリティ」を参照してください。
kubectl port-forward
コマンドがWebLogic管理サーバー・ポッドと通信できるようにするには、オペレータが管理サーバー構成を変更して、既存の管理プロトコル対応ポートごとにlocalhost
アドレスでネットワーク・チャネル(ネットワーク・アクセス・ポイント)を追加する必要があります。 この動作は、バージョンおよびドメインのリソース構成によって異なります:
Istioがドメインで有効になっていない場合、オペレータ・バージョン3.3.2以降、またはIstio 1.10以降を実行しているIstio対応ドメインの場合、この動作は、domain.spec.adminServer.adminChannelPortForwardingEnabled
ドメイン・リソース属性を使用してドメイン・リソースで構成できます。
この属性は、オペレータ・バージョン4.0以降ではデフォルトで有効になり、4.0より前のバージョンではデフォルトで無効になっています。
この属性の詳細は、kubectl explain domain.spec.adminServer.adminChannelPortForwardingEnabled
コマンドを実行するか、ドメイン・リソースschemaを参照してください。
1.10より前のバージョンのIstioを実行しているドメインにWLSTアクセスが必要な場合は、次の属性で構成されたWebLogic管理サーバーに追加のネットワーク・チャネルを追加する必要があります:
t3
として定義されるプロトコル。localhost
で定義されたリスニング・アドレス。 (ノート): アドレスをlocalhostに設定するのは、自己文書化のみを目的としています。 住所は任意の値に設定でき、オペレータは必須値にオーバーライドします。) HTTP
プロトコルを有効にします。external listen address
またはexternal listen port
を設定「しない」でください。1.10より前のIstioバージョンを実行しているIstio対応ドメインの場合、コンソールのみのアクセスが必要な場合は、WebLogic管理サーバーにネットワーク・チャネルを追加する必要はありません。
たとえば、管理サーバーのチャネルPortForward
のWebLogicドメインconfig.xml
ファイルのスニペットを次に示します。
<server>
<name>admin-server</name>
<network-access-point>
<name>PortForward</name>
<protocol>t3</protocol>
<listen-address>localhost</listen-address>
<listen-port>7890</listen-port>
<http-enabled-for-this-protocol>true</http-enabled-for-this-protocol>
</network-access-point>
</server>
Model in Image (MII)およびDomain in Image (DII)の場合は、管理サーバー用のチャネルPortForward
のスニペット・モデル構成を次に示します。
topology:
...
Server:
'admin-server':
ListenPort: 7001
NetworkAccessPoint:
PortForward:
Protocol: 't3'
ListenAddress: 'localhost'
ListenPort: '7890'
HttpEnabledForThisProtocol: true
ドメインがすでに実行中で、構成を変更した場合は、そのイントロスペクタ・ジョブを再実行し、構成の変更を有効にするために管理ポッドが再起動することを確認する必要があります。
IstioがドメインまたはIstio 1.10以降を実行しているIstio対応ドメインで有効化されて「いない」場合、管理チャネルのポート転送が有効になると、オペレータは次のネットワーク・チャネル(ネットワーク・アクセス・ポイントとも呼ばれる)をWebLogic管理サーバー・ポッドに自動的に追加します:
説明 | チャネル名 | リスニング・アドレス | ポート | プロトコル |
---|---|---|---|---|
管理ポートまたは管理チャネルが構成されておらず、非SSLデフォルト・チャネルが存在する場合 | internal-t3 | localhost | サーバー・リスニング・ポート | t3 |
管理ポートまたは管理チャネルが構成されておらず、SSLデフォルト・チャネルが存在する場合 | internal-t3s | localhost | サーバーSSLリスニング・ポート | t3s |
管理ポートが有効な場合 | internal-admin | localhost | WebLogic管理ポート | admin |
1つ以上のカスタム管理チャネルが構成されている場合 | internal-admin${index} ($ {index}は1から始まり、カスタム管理チャネルごとに1ずつ増える数値) | localhost | カスタム管理ポート | admin |
「ポート転送アクセスのための管理サーバー・ネットワーク・チャネルの設定」がある場合は、kubectl port-forward
コマンドを実行してそのようなチャネルにアクセスできます。 次のコマンドを実行するとします。
localhost
で選択したポートを開きます。ポート転送は、リモート・ポッドおよびコマンドが実行されているかぎり発生します。 コマンドを終了すると、転送が停止し、ローカル・ポートとアドレスが解放されます。 ポッドがサイクルまたはシャットダウンした場合、フォワーディングは停止し、フォワーディングを再開するには、ポッドが回復した後にコマンドを再実行する必要があります。
kubectl port-forward
コマンドの構文は次のとおりです:
kubectl port-forward K8S_RESOURCE_TYPE/K8S_RESOURCE_NAME [options] LOCAL_PORT:REMOTE_PORT_ON_RESOURCE
詳細な使用方法については、Kubernetesリファレンス・ドキュメントのport-forwardを参照し、kubectl port-forward -h
を実行します。
例、ノートおよび警告については、「ポート転送の例」および「ポート・フォワード・ノートと警告」を参照してください。
たとえば、WebLogicドメインに次のものがあるとします:
domain1
mynamespace
7001
でリスニングするadmin-server
という名前の管理サーバーまた、このドメインには「ポート転送アクセスのための管理サーバー・ネットワーク・チャネルの設定」があり、次のいずれかのコマンドを実行してローカル・ポート32015
を管理サーバー・ポッドに転送できます:
kubectl port-forward pods/domain1-admin-server -n mynamespace 32015:7001
または
kubectl port-forward service/domain1-admin-server -n mynamespace 32015:7001
コマンド出力は次のようになります:
Forwarding from 127.0.0.1:32015 -> 7001
この例では、次のようになります。
kubectl port-forward
コマンドを実行するマシン上のブラウザを使用して、http://localhost:32015/console
URLでWebLogic Server管理コンソールにアクセスできます。
kubectl port-forward
コマンドを実行するマシンでWLSTを使用して、次のようにt3://localhost:32015
に接続できます:
$ $ORACLE_HOME/oracle_common/common/bin/wlst.sh
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
wls:/offline> connect('myadminuser','myadminpassword','t3://localhost:32015')
Connecting to t3://localhost:32015 with userid myadminuser ...
Successfully connected to Admin Server "admin-server" that belongs to domain "base_domain".
Warning: An insecure protocol was used to connect to the server.
To ensure on-the-wire security, the SSL port or Admin port should be used instead.
wls:/base_domain/serverConfig/> exit()
セキュリティ警告: ポート・フォワード接続では、WebLogic T3またはKubernetesクラスタの外部の管理チャネルを公開できます。 ドメインのセキュリティに関する考慮事項については、「外部ネットワーク・アクセスのセキュリティ」を参照してください。
管理ポートまたはSSLポートの操作: 管理サーバーでWebLogic管理ポートが構成および有効化されている場合は、ポッドの他のポートではなく、このポートに転送する必要があります。 この場合、管理コンソール・アクセスにはセキュアなhttps
プロトコルを使用し、WLSTアクセスにはt3s
プロトコルを使用する必要があります。 同様に、SSLポートに転送する場合は、管理コンソールのhttps
およびt3s
プロトコルとWLSTアクセスをそれぞれ使用する必要があります。
ポッド失敗および再起動からのリカバリ: ポッド・インスタンスに失敗が発生したり再起動すると、ポート・フォワード接続が終了します。 同じコマンドを再実行して、新しい転送セッションを確立し、転送を再開できます。
ローカル・ポートがリモート・ポートと異なる場合のWLSTの使用: WLSTアクセスを設定していて、ポート転送ローカル・ポートがWebLogic管理サーバー・ポッドのポート番号と同じにならない場合は、ローカル・ポートとリモート・ポートが一致しない場合のWLSTアクセスの有効化で追加の設定ステップを参照してください。
ポート転送用のカスタム・ローカルIPアドレスの指定:
ポート転送にカスタムのローカルIPアドレスを指定すると、WLSTまたはブラウザをport forwardコマンドとは異なるマシンで実行できます。
kubectl port-forward
コマンドの--address
オプションを使用すると、localhost
の代わりに、またはそれに加えて特定のIPアドレスをリスニングできます。
--address
オプションは、数値IPアドレスまたはローカル・ホスト(コンマ区切り)のみを値として受け入れます。
たとえば、管理コンソールへのアクセスをhttp://my-ip-address:32015/console
で有効にするには、次のコマンドを使用します:
kubectl port-forward --address my-ip-address pods/domain1-admin-server -n mynamespace 32015:7001
ヘルプおよび例については、kubectl port-forward -h
を参照してください。
オプションで、kubectl port-forward
にローカル・ポートを選択:
port forwardコマンドにローカル・ポートを指定しない場合は、次のようになります:
kubectl port-forward pods/domain1-admin-server -n mynamespace :7001
このコマンドでは、使用されていないローカル・ポート番号が検索され、その出力は次のようになります:
Forwarding from 127.0.0.1:63753 -> 7001
また、管理コンソールにはhttp://localhost:63753/console
URLを使用してアクセスできます。
ローカル(転送された)ポート番号が管理ポート番号と同じでない場合、WLSTアクセスはデフォルトで機能せず、管理サーバー・ログにBEA-000572
RJVMエラーが表示されることがあります:
<Aug 30, 2021 9:33:24,753 PM GMT> <Error> <RJVM> <BEA-000572> <The server rejected a connection attempt JVMMessage from: '-2661445766084484528C:xx.xx.xx.xxR:-5905806878036317188S:domain1-admin-server:domain1:admin-server' to: '0B:xx.xx.xx.xx:[-1,-1,32015,-1,-1,-1,-1]' cmd: 'CMD_IDENTIFY_REQUEST', QOS: '102', responseId: '-1', invokableId: '-1', flags: 'JVMIDs Sent, TX Context Not Sent, 0x1', abbrev offset: '114' probably due to an incorrect firewall configuration or administrative command.><
問題を回避するには、ドメイン・リソースYAMLの-Dweblogic.rjvm.enableprotocolswitch=true
システム・プロパティを使用して、管理サーバーのJAVA_OPTIONS
環境変数を構成します。 このスイッチの詳細については、MOS 'Doc 860340.1 'を参照してください。
ポート・フォワード接続は、kubectl port-forward
コマンドの実行中にのみアクティブになります。
port forwardコマンドを実行している端末でCTRL+Cキーを押すと、ポート・フォワード接続を終了できます。
バックグラウンドでコマンドを実行すると、kill -9 <pid>
コマンドを使用してプロセスを強制終了できます。 例えば:
$ ps -ef | grep port-forward
oracle 27072 25312 1 21:45 pts/3 00:00:00 kubectl -n mynamespace port-forward pods/domain1-admin-server 32015:7001
oracle 27944 11417 0 21:45 pts/1 00:00:00 grep --color=auto port-forward
$ kill -9 27072