原文はこちら。
https://blogs.oracle.com/developers/announcing-oracle-weblogic-server-kuberentes-operatorOracle WebLogic Server Kubernetes Operatorを発表でき非常にわくわくしています。これは、現在テクノロジープレビューとして入手可能で、オープンソースで提供されています。
Oracle Weblogic Server Kubernetes OperatorOperatorは、Kubernetes環境で実行されている任意の数のWebLogicドメインを管理できます。具体的には、ドメインの作成、ドメイン起動の自動化、手動(オンデマンド)、またはWebLogic Diagnostics FrameworkまたはPrometheusと統合したWebLogicクラスタのスケールアップ/ダウン、WebLogicクラスタにデプロイされたWebアプリケーションの負荷分散の管理、ElasticSearch、logstash、Kibanaとの統合が可能です。
https://github.com/oracle/weblogic-kubernetes-operator
Operatorは、標準のOracle WebLogic Server 12.2.1.3 Dockerイメージを使用します。このイメージはDocker StoreまたはOracle Container Registryにあります。Operatorはこのイメージが不変(immutable)であるとみなし、すべての状態はKubernetes永続ボリュームに保持されます。これにより、すべてのPodを使い捨て可能かつ置き換え可能なものとして扱うことができ、実行時にDockerコンテナに書き込まれた状態を管理する必要性が完全に排除されます(書き込まれるものが存在しないためです)。
以下の図は、Operatorを使用する場合のKubernetesのドメインのレイアウトの概要を示しています。
Operatorは、WebLogic Server管理コンソールを(必要であれば、たとえばWLST用に)外部ユーザに公開し、外部のT3アクセスを許可することもできます。 ドメインは互いに対話できるため、分散トランザクションなども可能です。すべてのPodにはKubernetesのlivenessプローブとreadinessプローブが設定されているため、Kubernetesは自動的に障害の発生したPodを再起動し、実際にユーザーの要求に対応できる管理対象サーバーのみをクラスタに含めることができます。
デザイン哲学とアーキテクチャ、Operatorの使い方、Operatorのビデオデモンストレーション、Operatorへのコントリビュートに関心のある人々向けの開発者ページなど、多くのドキュメントがGitHubのプロジェクトページに用意されています。テクノロジープレビューで遊んでいただければ幸いです。皆様のフィードバックをお待ちしております。
Getting Started
Oracle WebLogic Server Kubernetes Operator利用にあたっては以下の前提条件があります。- Kubernetes 1.7.5+, 1.8.0+ (kubectl versionで確認)
- Flannel networking v0.9.1-amd64 (docker images | grep flannelで確認)
- Docker 17.03.1.ce (docker versionで確認)
- Oracle WebLogic Server 12.2.1.3.0
WebLogic Server 12.2.1.3 Certification on Kubernetes (Doc ID 2349228.1)Operatorの動画は以下のURLからご覧いただけます。
https://support.oracle.com/rs?type=doc&id=2349228.1
- Operatorのインストール手順とOperatorのREST APIの利用
- 2個のWebLogicドメインを作成し、管理コンソールへのアクセスとKubernetesで作成された種々のリソース(services、ingresses、pods、ロードバランサなど)を確認
- Webアプリケーションのデプロイ、Operatorを使ったWebLogicクラスタのスケール、負荷分散の確認
- Kubernetesで実行中のドメインに対してWLSTを利用して、Kubernetes上で動作するOracle Databaseに接続するためのデータソースを作成
- WLDF(WebLogic診断フレームワーク)を使ったWebLogicクラスタのスケール
- Prometheusとの統合により、WebLogic ServerのメトリックをPrometheusにエクスポートし、スケールするためのトリガーとなるPrometheusのアラートを作成
- Oracle Container Registryへのアクセス登録
- Oracle Container Registryへアクセスするためのシークレットの設定
- Operatorのパラメータ・ファイルのカスタマイズ
- OperatorのKubernetesクラスタへのデプロイ
- 管理サーバの資格証明のためのシークレットの設定
- WebLogicドメインのための永続ボリュームの作成
- ドメインパラメータファイルのカスタマイズ
- WebLogicドメインの作成
Installation
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/installation.md
Build the Docker image for the operator
KubernetesクラスタでOperatorを実行するには、Dockerイメージをビルドしてクラスタにデプロイする必要があります。まず、以下のコマンドでビルドします。
続いて、Dockerイメージを以下のコマンドで作成します。mvn clean install
イメージを識別しやすくするため、latest以外のタグを使うことを推奨します。上記の例では、タグは開発者のGitHub IDです。docker build -t weblogic-kubernetes-operator:developer --no-cache=true
続いて、Kubernetesサーバにイメージをアップロードします。
Oracle Container Registryでイメージを公開する予定で、使用可能になった時点で手順を更新します。公開後は、ご自身でイメージを構築する必要はなく、レジストリからイメージをプルすることもできます。# ビルドマシン上で
docker save weblogic-kubernetes-operator:developer > operator.tar
scp operator.tar YOUR_USER@YOUR_SERVER:/some/path/operator.tar
# Kubernetesサーバ上で
docker load < /some/path/operator.tar
# 正しいイメージであるかどうかを確認するには、以下のコマンドを両マシンで実行し、イメージIDを比較する
docker images | grep webloogic-kubernetes-operator
Customizing the operator parameters file
Operatorをインストールスクリプトを使ってデプロイします。このスクリプトへの入力はcreate-weblogic-operator-inputs.yamlファイルで、ターゲット環境を反映するようにファイルの内容を更新する必要があります。create-weblogic-operator.sh
入力ファイルには、次のパラメータを指定する必要があります。
CONFIGURATION PARAMETERS FOR THE OPERATOR
Parameter | Definition | Default |
---|---|---|
externalOperatorCert | OperatorがRESTエンドポイントにアクセスするクライアントに提示するX.509証明書を含むbase64エンコードされた文字列。externalRestOptionがcustom-certに設定されている場合にのみこの値を使用する。 | |
externalOperatorKey | 秘密鍵を含むBase64エンコードされた文字列。externalRestOptionがcustom-cert.に設定されている場合のみこの値を使用する。 | |
externalRestOption | 許容値は以下の3種類。 - none : RESTサーバを無効化 - self-signed-cert : Operatorは、RESTサーバ用に自己署名証明書を使用する。この値を指定すると、externalSansパラメータも設定する必要がある。 - custom-cert : この値を指定すると、externalOperatorCertおよびexternalOperatorKeyも指定する必要がある。 | none |
externalSans | カンマ区切りのSubject Alternative Name(SAN、サブジェクトの別名)のリスト。これにはX.509証明書を含む。このリストには以下のような値が含まれる。DNS:myhost,DNS:localhost,IP:127.0.0.1 | . |
namespace | Operatorのデプロイ先のKubernetes名前空間。名前空間defaultではなく、Operator用に名前空間を作成することを推奨。 | weblogic-operator |
targetNamespaces | Operatorが管理するWebLogicドメインを含むKubernetes名前空間のリスト。Operatorはこのリストに含まれていないドメインに対して何らアクションを取らない。 | default |
remoteDebugNodePort | Debugパラメータがonの場合、OperatorはJavaリモートデバッグサーバを指定したポートで起動し、リモートデバッガがアタッチされるまで実行を停止する。 | 30999 |
restHttpsNodePort | HTTPSリクエストをリスニングするOperator RESTサーバに割当てられるNodePort番号 | 31001 |
serviceAccount | Kubernetes API サーバにリクエストする際にOperatorが利用するサービスアカウントの名前 | weblogic-operator |
loadBalancer | WebLogicクラスタの負荷分散のためにインストールされるロードバランサ。許容値は以下の通り。 - none – ロードバランサを構成しない- traefik – Traefik Ingressプロバイダを構成- nginx – 将来の利用のために予約- ohs – 将来の利用のために予約 | traefik |
loadBalancerWebPort | ユーザからのトラフィックを受け付けるロードバランサのNodePort | 30305 |
enableELKintegration | ELK統合を有効にするかどうかを決定する。trueに設定すると、ElasticSearch、Logstash、およびKibanaがインストールされ、LogstashがOperatorのログをElasticSearchにエクスポートするように構成する。 | false |
Decide which REST configuration to use
Operatorでは3個のREST証明書オプションが利用できます。- none : RESTサーバを無効化します。
- self-signed-cert : 自己署名証明書を生成します。
- custom-cert : 別の手段で作成、署名された証明書を提供するメカニズムを提供します。
Decide which optional features to enable
Operatorには設定ファイルで有効にできるオプション機能があります。Load Balancing
OperatorはTraefik Ingressプロバイダをインストールして、WebLogicクラスタで実行されているWebアプリケーションの負荷分散が可能です。有効にすると、各WebLogicクラスタに対してTraefikのインスタンスとIngressが作成されます。ドメインの作成時に追加の構成が実行されます。テクノロジープレビューリリースでは基本的な負荷分散のみ可能です。
- HTTP(S)のみサポートします。他のプロトコルはサポートしません。
- 各クラスタに対してルートパスルールが作成されます。DNS名または '/'以外のURLパスに基づくルールはサポートしません。
- このリリースでは、デフォルト以外のロードバランサ構成は実行されません。 デフォルト構成ではラウンドロビンルーティングを実施し、WebLogic ServerはCookieベースのセッションアフィニティを提供します。
Log integration with ELK
OperatorはELKスタックをインストールし、ログをELKにパブリッシュします。有効化すると、ElasticSearch と Kibana をdefault名前空間にインストールし、LogstashのPodをOperator名前空間に作成します。OperatorのログをElasticsearchにパブリッシュするようにLogstashを構成すると、ログはKibanaで可視化および分析できるようになります。To enable the ELK統合を有効化するためには、enableELKintegrationオプションをtrueにしてください。
Deploying the operator to a Kubernetes cluster
Operatorをデプロイするには、インプットファイルの場所を指定してデプロイメント・スクリプトを実行します。./create-weblogic-operator.sh –i /path/to/create-operator-inputs.yaml
What the script does
スクリプトは以下のアクションを実行します。- 指定された入力から一連のKubernetes YAMLファイルを作成
- Operatorの名前空間を作成
- その名前空間でサービスアカウントを作成
- ELK統合が有効になっている場合は、ELKの永続ボリュームを作成
- 一連のRBACロールとバインディングを作成
- Operatorのデプロイ
- 要求された場合、ロードバランサのデプロイ
- 要求された場合、ELKをデプロイし、Operatorのログ用にlogstashを構成
これにより、KubernetesクラスタにOperatorがデプロイされます。RESTサービスの使用、WebLogicドメインの作成、ドメインの開始を含む以後の手順については、以下のドキュメントを参照してください。
Oracle Weblogic Server Kubernetes Operator - Readme.md
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/README.md