次のアプローチを使用して、Kubernetesクラスタの外部にあるWebLogic Server管理コンソールにアクセスできます:
NOTES:
本番ユース・ケースでは、Oracleでは、イングレス・パス・ルーティング・ルールおよびSSLポートを使用してWebLogic Server管理コンソールにアクセスすることをお薦めします。
ロード・バランサ、NodePortまたはkubectl port-forward
設定が想定どおりに動作することを確認するには、「テスト」を参照してください。
WebLogic Server管理コンソールを使用して、サーバーを起動または停止したり、クラスタをスケーリングしないでください。 「サーバーの起動と停止」および「スケーリング」を参照してください。
ドメイン・ホーム・タイプがDomain in ImageまたはModel in Imageの場合は、管理コンソールを使用してWebLogicドメイン構成を変更しないでください。これらの変更は一時的なもので、サーバーの再起動時に失われます。 「ドメイン・ホーム・ソース・タイプの選択」を参照してください。
Kubernetes NodePort
、ロード・バランサ、ポート転送または同様のメソッドで、管理、RMIまたはT3対応のWebLogicチャネルを外部で公開すると、安全でない構成を作成できます。 詳細は、「外部ネットワーク・アクセスのセキュリティ」を参照してください。
ロード・バランサからWebLogic Server管理コンソールにアクセスするには、最初にIngressを設定します。 これは、SSLとの組合せで、本番ユースケースのベスト・プラクティス・アプローチです。
次のpath-routing
イングレス手順は、同じ外部ロード・バランサ・ポートを介して同じKubernetesクラスタ内の複数のドメインに同時にアクセスする必要がある場合には適用されません。 複数ドメインのユース・ケースについては、「ホスト・ベースのルーティング」サンプルを参照し、ホスト名がDNSサーバーによって解決可能であることを確認してください(例:サンプルのdomain1.org
およびdomain2.org
)。
次の例では、非SSLポートを介してWebLogic Server管理コンソールにアクセスするためのイングレス・パス・ルーティング・ルールを設定します。
Traefikロード・バランサのpath-routing
YAMLファイルを設定します:
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
annotations:
kubernetes.io/ingress.class: traefik
name: traefik-pathrouting-1
namespace: weblogic-domain
spec:
routes:
- kind: Rule
match: PathPrefix(`/console`)
services:
- kind: Service
name: domain1-adminserver
namespace: weblogic-domain
port: 7001
WebLogic Server管理コンソールにアクセスするには、ブラウザから次のURLを開きます:
http://${HOSTNAME}:${LB_PORT}/console
説明:
${HOSTNAME}
は、イングレス・ロード・バランサが実行されている場所です。
Traefikロード・バランサの使用時に${LB_PORT}
を決定するには:
$ export LB_PORT=$(kubectl -n traefik get service traefik-operator -o jsonpath='{.spec.ports[?(@.name=="web")].nodePort}')
「FMWインフラストラクチャ」ドメインがある場合は、PathPrefix /em
のイングレス・パス・ルーティング・ルールを追加し、次のURLを使用してFusion Middleware Control (Enterprise Manager)にアクセスできます:
http://${HOSTNAME}:${LB_PORT}/em
WebLogic Plugin Enabled
を有効にします次の例では、SSLポートを介してWebLogic Server管理コンソールにアクセスするためのロード・バランサ・ルーティングを設定します。
WebLogic構成でWebLogic Plugin Enabled
設定を有効にします:
WebLogic構成設定WebLogic Plugin Enabled
をtrue
に設定すると、ロード・バランサ・プロキシの存在がWebLogic Serverに通知されます。 この設定を有効にしないと、クライアントIPアドレスが必要な場合やSSLがロード・バランサで終了した場合に予期しない結果が発生します。
WDTを使用してWebLogicドメインを構成する場合は、モデルYAMLファイルのドメイン・レベルでリソース・セクションを使用します:
resources:
WebAppContainer:
WeblogicPluginEnabled: true
WLST
スクリプトを使用してWebLogicドメインを構成する場合は、次のコマンドを使用します:
# Configure the Administration Server
cd('/Servers/AdminServer')
set('WeblogicPluginEnabled',true)
...
cd('/Clusters/%s' % cluster_name)
set('WeblogicPluginEnabled',true)
イングレス・パス・ルーティング・ルールを構成し、イングレス・リソースをcustomRequestHeaders
値で更新します:
たとえば、Traefikロード・バランサの次のpath-routing
YAMLファイルを参照してください。 SSL終了の場合、Traefikはカスタム・ヘッダーWL-Proxy-SSL:true
をWebLogic Serverエンドポイントに渡す必要があります。
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
annotations:
kubernetes.io/ingress.class: traefik
name: traefik-console-tls
namespace: weblogic-domain
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: PathPrefix(`/console`)
middlewares:
- name: tls-console-middleware
namespace: weblogic-domain
services:
- kind: Service
name: domain1-adminserver
namespace: weblogic-domain
port: 7002
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: tls-console-middleware
namespace: weblogic-domain
spec:
headers:
customRequestHeaders:
WL-Proxy-SSL: "true"
sslRedirect: true
HTTPSポートを使用して、WebLogic Server管理コンソールにアクセスします:
KubernetesサービスからSSLポートを取得します:
# Get the ingress controller secure web port
$ SSLPORT=$(kubectl -n traefik get service traefik-operator -o jsonpath='{.spec.ports[?(@.name=="websecure")].nodePort}')
ブラウザから次のURLを使用して、WebLogic Server管理コンソールにアクセスします:
https://${HOSTNAME}:${SSLPORT}/console
「FMWインフラストラクチャ」ドメインがある場合は、PathPrefix /em
のイングレス・パス・ルーティング・ルールを追加し、次のURLを使用してFusion Middleware Control (Enterprise Manager)にアクセスできます:
https://${HOSTNAME}:${SSLPORT}/em
NodePort
の使用次のステップを使用して、WebLogic Server管理コンソールにアクセスするようにNodePort
を構成します:
WebLogic管理サーバー構成を更新して、HTTPプロトコルを使用してネットワーク・アクセス・ポイント(カスタム・チャネル)を追加し、domain.spec.adminServer.adminService.channels
属性を使用してこのチャネルをNodePortサービスで公開します。
管理サーバーでのNodePort
の設定例については、「NodePort
の使用」を参照してください。 管理サーバー上のNodePort
サービスの詳細は、「ドメイン・リソース」ドキュメントを参照してください。
ブラウザから次のURLを使用して、WebLogic Server管理コンソールにアクセスします:
http://hostname:adminserver-NodePort/console
adminserver-NodePort
は、Kubernetesクラスタ外部の管理サーバーのポート番号です。
「FMWインフラストラクチャ」ドメインがある場合は、次のURLを使用してFusion Middleware Control (Enterprise Manager)にアクセスすることもできます:
http://hostname:adminserver-NodePort/em
kubectl port-forward
接続の使用Kubernetes port forwardコマンドは、開発ユースケースに便利です。ただし、本番ユースケースでは「推奨されない」です。 専用ローカル・ポートで外部トラフィックを受け入れ、このトラフィックをKubernetesクラスタ内の特定のポッドおよびポートに転送する、Kubernetesクラスタの外部のローカル・プロセスを作成します。 複数のドメインがある場合、各ドメインには専用のポート転送コマンドと個別のローカル・ポートが必要です。
次の「手順」に従って、ローカル・ポート(Kubernetesの外部)を管理サーバー・ポッドの管理ポートに転送します。
ノート: ポート転送コマンドとは異なるマシン上のブラウザからWebLogic Server管理コンソールにアクセスする場合は、ポート転送コマンドで、コマンドを実行しているマシンの外部からアクセス可能なIPアドレスを持つ--address
パラメータを指定する必要があります。
ブラウザで、次のURLを使用します:
http://${HOSTNAME}:${LOCAL_PORT}/console
説明:
${HOSTNAME}
は、kubectl port-forward
コマンドが実行されているマシンのDNSアドレスまたはIPアドレスです。 これは、--address
パラメータを使用してカスタマイズでき、デフォルトでlocalhost
または127.0.0.1
です。
${LOCAL_PORT}
は、kubectl port-forward
コマンドラインで指定されたローカル・ポートです。
「FMWインフラストラクチャ」ドメインがある場合は、次のURLを使用してFusion Middleware Control (Enterprise Manager)にアクセスすることもできます:
http://${HOSTNAME}:${LOCAL_PORT}/em
WebLogic Server管理サーバーURLが正しいことを確認し、ロード・バランサNodePort
またはkubectl port-forward
が期待どおりに動作していることを確認するには、ブラウザと同じロケーションで次のcurlコマンドを実行します:
$ curl http://${HOSTNAME}:${LB_PORT}/console > /dev/null && echo "Connection succeeded."
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 271 100 271 0 0 90333 0 --:--:-- --:--:-- --:--:-- 90333
Connection succeeded.
成功すると、コマンドからの出力にConnection succeeded
メッセージが表示されます。