[Docker, WLS, Kubernetes] Announcing the Oracle WebLogic Server Kuberentes Operator

原文はこちら。
https://blogs.oracle.com/developers/announcing-oracle-weblogic-server-kuberentes-operator

Oracle WebLogic Server Kubernetes Operatorを発表でき非常にわくわくしています。これは、現在テクノロジープレビューとして入手可能で、オープンソースで提供されています。
Oracle Weblogic Server Kubernetes Operator
https://github.com/oracle/weblogic-kubernetes-operator
Operatorは、Kubernetes環境で実行されている任意の数のWebLogicドメインを管理できます。具体的には、ドメインの作成、ドメイン起動の自動化、手動(オンデマンド)、またはWebLogic Diagnostics FrameworkまたはPrometheusと統合したWebLogicクラスタのスケールアップ/ダウン、WebLogicクラスタにデプロイされたWebアプリケーションの負荷分散の管理、ElasticSearch、logstash、Kibanaとの統合が可能です。
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
Kubernetes上でのWebLogic Serverの動作保証ならびにサポートについては、My Oracle Supportの以下のサポートドキュメントをご覧ください。
WebLogic Server 12.2.1.3 Certification on Kubernetes (Doc ID 2349228.1)
https://support.oracle.com/rs?type=doc&id=2349228.1
Operatorの動画は以下のURLからご覧いただけます。
  • 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のアラートを作成
Operatorのインストールと構成、およびOperatorを使ったWebLogicドメインの管理に使用する全体的なプロセスは、以下のステップで構成されています。提供されたスクリプトでこれらの手順のほとんどを実行できますが、一部手動で実行する必要があります。
  • Oracle Container Registryへのアクセス登録
  • Oracle Container Registryへアクセスするためのシークレットの設定
  • Operatorのパラメータ・ファイルのカスタマイズ
  • OperatorのKubernetesクラスタへのデプロイ
  • 管理サーバの資格証明のためのシークレットの設定
  • WebLogicドメインのための永続ボリュームの作成
  • ドメインパラメータファイルのカスタマイズ
  • WebLogicドメインの作成
最新の手順は、以下のURLをご覧になるか、上記動画の簡略版をご覧ください。
Installation
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/installation.md

Build the Docker image for the operator

KubernetesクラスタでOperatorを実行するには、Dockerイメージをビルドしてクラスタにデプロイする必要があります。
まず、以下のコマンドでビルドします。
mvn clean install
続いて、Dockerイメージを以下のコマンドで作成します。
docker build -t weblogic-kubernetes-operator:developer --no-cache=true 
イメージを識別しやすくするため、latest以外のタグを使うことを推奨します。上記の例では、タグは開発者のGitHub IDです。
続いて、Kubernetesサーバにイメージをアップロードします。
# ビルドマシン上で
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
Oracle Container Registryでイメージを公開する予定で、使用可能になった時点で手順を更新します。公開後は、ご自身でイメージを構築する必要はなく、レジストリからイメージをプルすることもできます。

Customizing the operator parameters file

Operatorをインストールスクリプトを使ってデプロイします。
create-weblogic-operator.sh
このスクリプトへの入力はcreate-weblogic-operator-inputs.yamlファイルで、ターゲット環境を反映するようにファイルの内容を更新する必要があります。
入力ファイルには、次のパラメータを指定する必要があります。

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ベースのセッションアフィニティを提供します。
管理サーバを含む、WebLogicクラスタに属しないサーバに対してIngressを作成しないことにご注意ください。Ingressが作成されないサーバは、NodePortサービスを使用して外部に公開されます。

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

0 件のコメント:

コメントを投稿