原文はこちら。
https://www.thatjeffsmith.com/archive/2018/05/announcing-oracle-sql-developer-web/
Oracle CloudでOracle SQL Developer Webがご利用いただけるようになりました!
「でも、それって何?」というあなたに。
これはブラウザベースのOracle SQL Developerで、Oracle REST Data Servicesを使っています。
Oracle Database Cloudをお使いのお客様であれば、順次ロールアウトしているところです。
もっと知りたい方や簡単なデモを見たい方のために以下の動画を用意しました。
Oracle Blogsの主としてテクノロジー製品のエントリを日本語でご紹介します(オリジナルのエントリを投稿することもあります)。厳密性をご所望の方は原文をどうぞ。よい内容でしたら原文に対し、"Good Entry, thanks!"でもいいので、是非コメントお願いします(Typoや誤訳はコメント欄からどうぞ)。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。また、エントリ内でご紹介している製品・サービスは国内導入時期が未定の場合もありますのでご了承下さい。
Good entries on Oracle Blogs are put into Japanese. Mainly this blog covers technology products. Opinions expressed in this blog is my personal one and does not represent the official opinion of Oracle Corporation and my employer.
[WLS, Docker, Kubernetes] Announcing General Availability version of the WebLogic Server Kubernetes Operator
原文はこちら。
https://blogs.oracle.com/weblogicserver/announcing-general-availability-version-of-the-weblogic-server-kubernetes-operator
WebLogic Server Kubernetes Operator(以下Operator)の一般提供(GA)リリースの発表ができうれしく思っています。OperatorはTechnology Previewとして2月にリリースしたもので、Kubernetes環境でWebLogic Server 12.2.1.3ドメインの作成、管理を簡単にするものです。このGA版では、Technology Previewの機能に加え、その他のWebLogic Serverの機能もサポートしており、開発、本番用途でご利用いただけるように動作保証ならびにサポートいたします。
この動作保証にはOracle Cloud Infrastructure(OCI)ならびにTerraform Installer for Kubernetes on Oracle Cloud Infrastructureを使って作成したKubernetes Clusterで動作するOperatorとWebLogic Serverの構成のサポート、そしてOracle Cloud Infrastructure Registry(OCIR)を使ったOperatorとWebLogic Serverドメインイメージの保存に対するサポートが含まれます。

Kubernetes上でのWebLogic Serverの動作保証ならびにOperatorに関する追加情報は、以下のサポートドキュメントと発表のブログエントリをご覧ください。
https://blogs.oracle.com/weblogicserver/announcing-general-availability-version-of-the-weblogic-server-kubernetes-operator
WebLogic Server Kubernetes Operator(以下Operator)の一般提供(GA)リリースの発表ができうれしく思っています。OperatorはTechnology Previewとして2月にリリースしたもので、Kubernetes環境でWebLogic Server 12.2.1.3ドメインの作成、管理を簡単にするものです。このGA版では、Technology Previewの機能に加え、その他のWebLogic Serverの機能もサポートしており、開発、本番用途でご利用いただけるように動作保証ならびにサポートいたします。
この動作保証にはOracle Cloud Infrastructure(OCI)ならびにTerraform Installer for Kubernetes on Oracle Cloud Infrastructureを使って作成したKubernetes Clusterで動作するOperatorとWebLogic Serverの構成のサポート、そしてOracle Cloud Infrastructure Registry(OCIR)を使ったOperatorとWebLogic Serverドメインイメージの保存に対するサポートが含まれます。
Oracle Cloud Infrastructure
https://cloud.oracle.com/ja_JP/cloud-infrastructure
Terraform Installer for Kubernetes on Oracle Cloud Infrastructure
https://github.com/oracle/terraform-kubernetes-installer/

Kubernetes上でのWebLogic Serverの動作保証ならびにOperatorに関する追加情報は、以下のサポートドキュメントと発表のブログエントリをご覧ください。
WebLogic Server 12.2.1.3 Certification on Kubernetes (ドキュメントID 2349228.1)KubernetesがWebLogic Serverインスタンスをホストするコンテナインフラストラクチャとして機能するよう、WebLogic ServerとKubernetesを統合するためにOperatorを開発してきました。OperatorはWebLogicドメインの作成、構成、管理をするためにKuberenetesを拡張します。以前の発表のエントリをご一読いただいた上で、WebLogic Server Kubernetes OperatorのGitHubプロジェクトをご覧ください。
https://support.oracle.com/rs?type=doc&id=2349228.1
WebLogic Server Certification on Kubernetes
https://blogs.oracle.com/weblogicserver/weblogic-server-certification-on-kubernetes
https://orablogs-jp.blogspot.jp/2018/01/weblogic-server-certification-on.html
Announcing the New WebLogic Server Kubernetes OperatorKubernetes上でWebLogic Serverを実行すると、以下のことが可能になります。
https://blogs.oracle.com/weblogicserver/announcing-the-new-weblogic-server-kubernetes-operatorhttps://orablogs-jp.blogspot.jp/2018/02/announcing-new-weblogic-server.html
Oracle Weblogic Server Kubernetes Operator
https://github.com/oracle/weblogic-kubernetes-operator
- Kubernetes環境でWebLogic Serverのアプリケーションを活用できる
- WebLogic Serverアプリケーションを他のクラウドアプリケーションと統合できる
- WebLogic Serverの使用を発展させ、Kubernetesの使用を拡大することができる
- Kubernetes内のWebLogic Serverの管理を簡素化
- KubernetesのリソースのWebLogicドメインへの割り当てを確保
- ロードバランサ、Ingress controller、ネットワークファブリック、セキュリティなどの環境全体をKubernetesのAPIを使って管理
- パッチ適用やスケールといった操作の簡素化ならびに自動化
- WebLogicのベストプラクティスに則ることの保証
- WebLogicドメインを問題なく、安全に実行
- Kubernetes 1.7.5、1.8.0、1.9.0、1.10.0のサポート
- Operator GitHubプロジェクトでは、wercker.ymlを使用し、Oracle Container Pipelineからオペレータ用のDockerイメージを直接ビルド、テスト、パブリッシュする方法について説明しています。
Oracle Weblogic Server Kubernetes Operator
https://github.com/oracle/weblogic-kubernetes-operator - 動的クラスタおよび動的クラスタを使用したWebLogic Serverクラスタの自動スケーリングのサポート。詳細は以下のエントリをご覧ください。
WebLogic Dynamic Clusters on Kubernetes
https://blogs.oracle.com/weblogicserver/weblogic-dynamic-clusters-on-kubernetes - クラスタ構成で動作するWebLogic Server管理対象サーバ間でHTTPリクエストを負荷分散するためのIngress Controllerとして、Kubernetesクラスタ内で動作するApache HTTP Serverおよび(HAProxyを利用する)Voyagerをサポート。Operatorとの統合により、これらのロードバランサの設定を自動化する。詳細はApache HTTP ServerとVoyager Ingress Controllerの構成のためのドキュメントを参照してください。
Load balancing with the Apache HTTP Server
Apache HTTP Server
Load balancing with Voyager/HAProxy
https://github.com/oracle/weblogic-kubernetes-operator/blob/develop/site/voyager.md - マルチノード環境のためのNFSストレージの永続的ボリューム(Persistent Volumes、PV)のサポート。このプロジェクトでは、OCIでNFSボリュームを構成するチートシート、NFSボリュームとKubernetesのWebLogic Serverドメインに関する重要な注意事項を提供します。
Cheat sheet for setting up Kubernetes
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/k8s_setup.md
Creating a WebLogic domain
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/creating-domain.md - WebLogicドメインリソースの削除スクリプト。これはドメイン用のKubernetesリソースをKubernetesクラスタから永久に削除します。
delete-weblogic-domain-resources.sh
OperatorプロジェクトのREADMEのRemoving a domainの項をご覧ください。
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/kubernetes/delete-weblogic-domain-resources.sh
README.md
https://github.com/oracle/weblogic-kubernetes-operator/tree/master/README.md - Prometheusのサポート強化。詳細は以下のエントリをご覧ください。
Using Prometheus to Automatically Scale WebLogic Clusters on Kubernetes
https://blogs.oracle.com/weblogicserver/using-prometheus-to-automatically-scale-weblogic-clusters-on-kubernetes-v5
https://orablogs-jp.blogspot.jp/2018/04/using-prometheus-to-automatically-scale.html - 統合テストをOperatorのGitHubプロジェクトにUpしてあります。
- OCI Container Engine for Kubernetesで動作するKubernetes上のWebLogic Serverの動作保証
- WebLogic Deploy Toolingを使った、既存KubernetesのWebLogic Serverドメインへの簡単な再プロビジョニングならびに再デプロイ方法の提供
- Oracle Container Pipelines(werckerとしても知られています)を使ったKubernetes上のWebLogicデプロイメントのCI/CDの追加
- その他時間と共に追加される新機能や機能強化
[Java] Update and FAQ on the Java SE Release Cadence
原文はこちら。
https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
Java SE 9の作業が2017年の早い段階で終了したため、OpenJDKコミュニティのコントリビュータから、Java SEプラットフォームとJDKをより早い段階で進化させて機能をよりタイムリーに配信できる方法があるだろうかという疑問が投げかけられました。Java Community Processがそのような変化に対応する方法を検討するため、JCPワーキンググループが設立されました。
ということで、新しいケイデンスは、私たちが長年にわたって慣れ親しんできた用語やプロセスに新しいイディオムや意味を導入します。明らかに、容易に新機能を取り込めるという、予測可能なリリーススケジュールの利点は、エコシステムの最大のプロジェクトに対する成果に値します。この傾向は、Java SEエコシステムの他の部分でも発生しています。たとえば、Eclipseでは長年にわたって年1回のrelease trainがありますし、Wildflyは四半期ごとのリリースモデルに移行しています。
Java 9→10→11は、7→8→9よりも8→8u20→8u40の方が近いものです。3年ごとにメジャーリリースに慣れていて、そうした大きな変化の巨大な影響のメンタルモデルを持っているときは、当初は怖いと感じるでしょう。6ヶ月のリズムはそうではありません。FAQの後半で、これについてより具体的な証拠をご紹介します。
Java 10がリリースされたとき、主要なIDEはすべて、数日で新しいローカル変数型推論機能を含むJava 10をサポートしました。
この新しいリリースサイクルは、ツールベンダーにとってより管理しやすく、予測可能にします。今では小規模なアップデートの安定した流れがあります。さらに、将来を見越した開発者は、OpenJDK Project Valhallaのminimal value typeや、OpenJDK Project ZGCのZ Garbage Collector(ZGC)などの新しい機能を、使い慣れたオープンソースライセンスで利用可能な早期アクセスビルドを使って調べることができます。
新しいリリースサイクルの速い普及は印象的です。人気のあるIDEや他のツールベンダーがJava 10を迅速に採用してJava 10のサポートを利用できるようになるのを見て、非常に力づけられています。
例えば、Java SE 9のリリースでは、Java SE 8の上に約19,000のソースコードの変更が組み込まれていましたが、Java 9とJava 10の間では2,700の変更しかありませんでした。これは、Java 8とJava 8u40の変更とほぼ同じです。したがって、Java SE 9はJava SE 8に対するメジャーアップグレードですが、Java SE 9はJava SE 9のシンプルな機能アップデートです。
feature releaseの最終更新から3ヶ月で、次の機能リリースのセキュリティ更新プログラムがあります。この間に移行することを強くお勧めします。新機能リリースと次回の予定されているセキュリティ更新から約1ヶ月あります。例えば、Java 9.0.4は2018年1月に、Java 10.0.0は2018年3月に、10.0.1は2018年4月にリリースされました。Java 10.0.1リリース以降、Java 9.0.4やJava 10.0.0の使用はお勧めしません。ですが、1ヶ月、もしくはテスト開始まで3ヶ月待つ必要はありません。10.0.1のアップデートリリースが出る6ヶ月以上前から、JDK 10の早期アクセスビルドは2017年11月から定期的に公開されているからです。
Oracleは、JDK Updates Project内で確立されたプロセスを提供するとともに、新しい役割、そして大事なことを言い忘れていましたがVulnerability Groupの役割に慣れるために新しいメンテナーへの支援を提供することで、OpenJDK Communityでこうした移行をサポートしています。
Oracle JDKの場合、Java 8はJava 7やJava 6と全く同じ移行プロセスを辿りますが、いくつかの例外があります。まず、新しいリリース・モデルに慣れるための猶予時間を増やすために、Oracleは商用本番利用用途向けに2019年1月、個々のデスクトップ向けに少なくとも2020年末までにOracle JDKのパブリック・アップデートを拡張しました。2つ目は、Java 6→7およびJava 7→8の場合と同様に、次のリリースに移行したい人向けに、Oracle JDKをOracleのOpenJDKビルドと互換性を持たせるための取り組みを発表しました。あなたがまだ移行されていないならば、10に移行し、新しいリリーストレインに乗ることをご提案します。
OpenJDKの領域では、Oracleは2019年1月までJDK 8 Updatesプロジェクトを継続してリードし、貢献する予定です。その前に、(これまで10年にわたって実施されていたように)新しいメンテナの要請が行われます(詳細は前の質問をご覧ください) 。
https://blogs.oracle.com/java-platform-group/update-and-faq-on-the-java-se-release-cadence
Java SE 9の作業が2017年の早い段階で終了したため、OpenJDKコミュニティのコントリビュータから、Java SEプラットフォームとJDKをより早い段階で進化させて機能をよりタイムリーに配信できる方法があるだろうかという疑問が投げかけられました。Java Community Processがそのような変化に対応する方法を検討するため、JCPワーキンググループが設立されました。
17 February 2017 OpenJDK Working Group Meeting Minutes主要なコントリビュータの間でのさらなる議論の後、計画が提案され、並行して、Oracleは商用Java SE製品の計画を発表しました[1]。
https://community.oracle.com/docs/DOC-1015451
Moving Java Forward Fasterその後数ヶ月の短期間で、OpenJDKコミュニティは、Oracleのリーダーシップの下、Java SE 9、Java SE 10、Java SE 11の早期アクセスビルドだけでなく、調整されたスケジュールでセキュリティアップデートを複数提供してきました。
https://mreinhold.org/blog/forward-faster
Faster and Easier Use and Redistribution of Java SE
https://blogs.oracle.com/java-platform-group/faster-and-easier-use-and-redistribution-of-java-se
https://orablogs-jp.blogspot.jp/2017/09/faster-and-easier-use-and.html
JDK 9OpenJDK Vulnerability Groupが結成されました。
http://openjdk.java.net/projects/jdk9/
JDK 10
http://openjdk.java.net/projects/jdk/10/
JDK 11
http://openjdk.java.net/projects/jdk/11/
OpenJDK Vulnerability GroupJava SE 10では、小さな新しい言語機能が追加されました。
http://openjdk.java.net/groups/vulnerability/
JEP 286: Local-Variable Type Inferenceこれは、新しいケイデンスが、実装だけでなくJCPの仕様作業でも機能していることを示しています。
http://openjdk.java.net/jeps/286
ということで、新しいケイデンスは、私たちが長年にわたって慣れ親しんできた用語やプロセスに新しいイディオムや意味を導入します。明らかに、容易に新機能を取り込めるという、予測可能なリリーススケジュールの利点は、エコシステムの最大のプロジェクトに対する成果に値します。この傾向は、Java SEエコシステムの他の部分でも発生しています。たとえば、Eclipseでは長年にわたって年1回のrelease trainがありますし、Wildflyは四半期ごとのリリースモデルに移行しています。
Simultaneous Releaseこのブログエントリでは、この数ヶ月間に尋ねられたよくある質問にお答えします。
https://wiki.eclipse.org/Simultaneous_Release
[wildfly-dev] WildFly 12 Plans, EE8, and Move to Quarterly Iterative Releases
http://lists.jboss.org/pipermail/wildfly-dev/2017-December/006250.html
Q: Surely you can’t expect everyone to adopt major releases every six months?! (誰も6ヶ月ごとにメジャーリリースを採用するとは思いませんが?)
正確な意味では、もう「メジャーリリース」はありません。その用語は古いものです。その代わりに、feature releaseという安定した流れがあります。これは、バージョン管理の新しい取り組みを除いて、過去のリリース回数に一致しています。例えば、Java 8は2014年3月にリリースされました。feature releaseである8u20は、8月のほぼ半年後にリリースされました。次のfeature releaseである8u40は、その後6ヶ月後にリリースされました。8u20 Update Release Notesしたがって、以前と同様に、6か月ごとにfeature releaseの取り込みを期待しています。
http://www.oracle.com/technetwork/java/javase/8u20-relnotes-2257729.html
8u40 Update Release Notes
http://www.oracle.com/technetwork/java/javase/8u40-relnotes-2389089.html
Java 9→10→11は、7→8→9よりも8→8u20→8u40の方が近いものです。3年ごとにメジャーリリースに慣れていて、そうした大きな変化の巨大な影響のメンタルモデルを持っているときは、当初は怖いと感じるでしょう。6ヶ月のリズムはそうではありません。FAQの後半で、これについてより具体的な証拠をご紹介します。
Q: If the new releases are basically the long standing six-month cadence, why rev the major release number each time? Why not just call it 9u20, 9u40, etc.? (新しいリリースが基本的に長年の6ヶ月サイクルである場合、毎回メジャーリリース番号を上げるのはなぜですか?なぜ9u20、9u40などと呼ばないのですか?)
JCPプロセスを合理化することで、major releaseのために何年も待つ必要はなくなり、新しいクラスライブラリ、JVM機能やローカル変数型推論などの言語機能をわずか6ヶ月で導入することが可能になりました。JEP 286: Local-Variable Type Inference2年ごとに数多くの仕様変更をリリースするのではなく、導入の準備が整い次第、より実用的に安定した流れに導入できます。
http://openjdk.java.net/jeps/286
Q: Spec changes sound dangerous and they’ll inhibit tools ecosystem from updating, right? (仕様変更は危険に感じます。ツールのエコシステムがアップデートされなくなるのではないでしょうか?)
いくつかのツールは8→9への移行に苦労していますが、その移行が済んでいればほぼ一晩で9→10に移行できました。Java 10がリリースされたとき、主要なIDEはすべて、数日で新しいローカル変数型推論機能を含むJava 10をサポートしました。
Webinar: IntelliJ IDEA and Java 10GradleやLuceneのような人気のあるプロジェクトは、すぐに正式なサポートを追加しました。
https://blog.jetbrains.com/idea/2018/04/webinar-intellij-idea-and-java-10/
The Eclipse Project Downloads
http://download.eclipse.org/eclipse/downloads/#Latest_Release
JDK 10 (March 2018) - Apache NetBeans 9.0 New and Noteworthy
https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=75971001
Gradle Release NotesUbuntuやSUSE Linux Enterprise Serverなどの人気のあるLinuxディストリビューションでは、最新のOpenJDKをプラットフォーム上のデフォルトのJRE/JDKにするために積極的に調整していました。
https://docs.gradle.org/4.7/release-notes.html
Apache Lucene
https://lucene.apache.org/
OpenJDK SRU exceptionElasticsearchは、新機能の恩恵を受けるために、できるだけ早くLTSリリースと非LTSリリースの両方と互換性を持たせることを計画しています。
https://lists.ubuntu.com/archives/ubuntu-release/2018-February/004275.html
SUSE Linux Enterprise Server 15 GA Release Notes
Supported Java Versions
https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#TechInfo.Java
Elasticsearch: Java 9 and Beyond!これらは、他のプロジェクトや製品が6ヶ月のリズムに追随している例のほんの一部です。
https://www.elastic.co/blog/elasticsearch-java-9-and-beyond
この新しいリリースサイクルは、ツールベンダーにとってより管理しやすく、予測可能にします。今では小規模なアップデートの安定した流れがあります。さらに、将来を見越した開発者は、OpenJDK Project Valhallaのminimal value typeや、OpenJDK Project ZGCのZ Garbage Collector(ZGC)などの新しい機能を、使い慣れたオープンソースライセンスで利用可能な早期アクセスビルドを使って調べることができます。
Project Valhalla "Minimal Value Types" Early-Access Builds
http://jdk.java.net/valhalla/
Project ZGC "The Z Garbage Collector" Early-Access Builds
http://jdk.java.net/zgc/
Q: Why would anyone update to version X when a new release X+1 is only six-months away? (新しいリリースX+1がわずか6ヶ月先にリリースされるのに、バージョンXにアップデートするのはなぜですか?)
最新のOracle JDKビルドとOracleのOpenJDKビルドを、開発者は毎月何百万回もダウンロードしています。Java SE DownloadsJDK 9、10を含め、各feature releaseでJDKダウンロード件数は着実に増加しています。Java 10の最新リリースはJava 7やJava 8よりもはるかに速いペースでダウンロードされています。例えば、このエントリ記述の時点でのJDK 10のダウンロード数は、JDK 8アップデートのダウンロード件数を5倍上回ります。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Java Development Kit builds, from Oracle
http://jdk.java.net/
新しいリリースサイクルの速い普及は印象的です。人気のあるIDEや他のツールベンダーがJava 10を迅速に採用してJava 10のサポートを利用できるようになるのを見て、非常に力づけられています。
Q: I’m still not convinced. Java 9 was a challenge to adopt, so that means 10 and 11 will be, too. (私はまだ納得していません。Java 9は採用が難しかったのです。10と11も同じだと考えています。)
多くのJava SE開発者とユーザーは、これまで新しいmajor versionを採用する前にアップデートを待っていました。これは、major releaseに数多くの主要な仕様変更の機能がある場合に想定されるものでしたが、6ヶ月のリリースではそういうことにはなりません。つまり、Java SE 9以降ではあてはまりません。例えば、Java SE 9のリリースでは、Java SE 8の上に約19,000のソースコードの変更が組み込まれていましたが、Java 9とJava 10の間では2,700の変更しかありませんでした。これは、Java 8とJava 8u40の変更とほぼ同じです。したがって、Java SE 9はJava SE 8に対するメジャーアップグレードですが、Java SE 9はJava SE 9のシンプルな機能アップデートです。
Q: How can I be confident that the X+1 release transition will be smooth? How much time is there to transition? (X+1リリースの移行がスムーズになることは、どうすればわかりますか?移行にどのくらいの時間が必要ですか?)
早期アクセスビルドは、Oracle独自のOpenJDKビルドを含めて、以前よりダウンロードや試用が簡単です。JDK 11 Early-Access BuildsOracleのOpenJDK早期アクセスビルドをビルドテストシステムで使用することを開発者に推奨します。そうすれば、問題が早期に発見される可能性があります。
http://jdk.java.net/11/
feature releaseの最終更新から3ヶ月で、次の機能リリースのセキュリティ更新プログラムがあります。この間に移行することを強くお勧めします。新機能リリースと次回の予定されているセキュリティ更新から約1ヶ月あります。例えば、Java 9.0.4は2018年1月に、Java 10.0.0は2018年3月に、10.0.1は2018年4月にリリースされました。Java 10.0.1リリース以降、Java 9.0.4やJava 10.0.0の使用はお勧めしません。ですが、1ヶ月、もしくはテスト開始まで3ヶ月待つ必要はありません。10.0.1のアップデートリリースが出る6ヶ月以上前から、JDK 10の早期アクセスビルドは2017年11月から定期的に公開されているからです。
Java Development Kit builds, from Oracleこれは、feature releaseとそれに続くセキュリティアップデートの間に4〜6週間あるという、これまでのfeature releaseと一致しています。例えば、2015年3月初旬に8u40がリリースされ、後に続くセキュリティアップデートの8u45は2015年4月14日にリリースされました。
http://jdk.java.net/
Q: Ok, but I don’t want new features. I have a system in production and just want stability, performance and security updates only. What do I do? (わかりましたが、本番環境のシステムがあるので、新しい機能ではなく、安定性、パフォーマンス、およびセキュリティの更新のみを望んでいます。どうすればいいですか?)
Oracleでは、2018年9月のJava SE 11から、「長期サポート」(LTS)リリースとして、3年ごとにリリースを指定する予定です。Java SE 9のリリースはJava 10のリリースでEnd of Lifeを迎え、Java 10もJava 11のリリースで同様にEnd of Lifeを迎えますが、Java 11は少なくとも8年間はOracleの商用サポートを提供する予定です。Oracle Java SE Support RoadmapJava 6とJava 7でほぼ10年間に起こったように(そして2019年にはJava 8でも同様のことが起こるでしょう)、顧客のニーズに集中できるようOracleがOpenJDKの特定のリリースシリーズにソースコードの変更を提供しなくなった後は、OpenJDKコミュニティの他の資格のあるコントリビュータは、リリースシリーズの継続的なメンテナンスを進める可能性があります。彼らは選択する限り、OpenJDKコミュニティ標準に従って、Oracleやその他の人々がまだメンテナンスしている以後のリリースから関連する変更をバックポートします。例えばJDK 6の場合、Sunは2008年にプロジェクトを確立し、Oracleは2013年までそれを維持し続けました。その後、他のメンテナーは、その後以後のリリースからの更新をバックポートすることでプロジェクトの作業を続けました。
http://www.oracle.com/technetwork/java/eol-135779.html
Oracleは、JDK Updates Project内で確立されたプロセスを提供するとともに、新しい役割、そして大事なことを言い忘れていましたがVulnerability Groupの役割に慣れるために新しいメンテナーへの支援を提供することで、OpenJDK Communityでこうした移行をサポートしています。
[9u Communication] End of maintenance timeframe & invitation for prospective new maintainers
http://mail.openjdk.java.net/pipermail/jdk-updates-dev/2018-February/000087.html
Q: What’s happening with Java SE 8? (Java SE 8はどうなるの?)
Java SE 8は、従来のバージョン管理とリリースサイクルモデルの最終で、Java 9は新たなスタートでした。Oracle JDKの場合、Java 8はJava 7やJava 6と全く同じ移行プロセスを辿りますが、いくつかの例外があります。まず、新しいリリース・モデルに慣れるための猶予時間を増やすために、Oracleは商用本番利用用途向けに2019年1月、個々のデスクトップ向けに少なくとも2020年末までにOracle JDKのパブリック・アップデートを拡張しました。2つ目は、Java 6→7およびJava 7→8の場合と同様に、次のリリースに移行したい人向けに、Oracle JDKをOracleのOpenJDKビルドと互換性を持たせるための取り組みを発表しました。あなたがまだ移行されていないならば、10に移行し、新しいリリーストレインに乗ることをご提案します。
OpenJDKの領域では、Oracleは2019年1月までJDK 8 Updatesプロジェクトを継続してリードし、貢献する予定です。その前に、(これまで10年にわたって実施されていたように)新しいメンテナの要請が行われます(詳細は前の質問をご覧ください) 。
[8u-communication] Oracle's plans to contribute to JDK 8 Updates Project in OpenJDK after Java SE 8 End of Public Updates
http://mail.openjdk.java.net/pipermail/jdk8u-dev/2018-March/007341.html
Q: I’m an Oracle Customer, how am I affected? (Oracleの顧客にはどのような影響があるのか?)
Java SEを依存関係に持つOracle製品内で、Java SEを利用する場合には影響を受けます。詳細はMy Oracle Supportの記述をご覧ください。Support Entitlement for Java SE When Used As Part of Another Oracle Product (Doc ID 1557737.1)
https://support.oracle.com/rs?type=doc&id=1557737.1
[脚注]
[1] Oracleがバイナリとビルドのために発表した計画は以下の通り。- Oracle JDKの以前の全てのクローズドソースをOpenJDKに移動する
- GPLv2 + CPEの下でOpenJDKバイナリを公開する
- Oracle JDKとOpenJDKのバイナリは互換性を持たせてスムーズな移行を保証する
[Kubernetes, Fucntions] Oracle Adds New Support for Open Serverless Standards to Fn Project and Key Kubernetes Features to Oracle Container Engine
原文はこちら。
https://blogs.oracle.com/developers/kubecon-europe-2018-oracle-open-serverless-standards-fn-project-and-kubernetes
オープンなserverlessプロジェクトであるFnは、CNCF CloudEvents、Serverless Frameworkのサポート、トレースとメトリックのためのOpenCensusといった、広範なサーバレス標準化のサポートを追加しています。
Oracle Container Engine for KubernetesはK8sユーザーが今日直面している最も困難な現実世界のガバナンス、スケール、管理といった課題に取り組んでいます。
本日Kubecon + CloudNativeCon Europe 2018で、Oracleは以下の内容を発表しました。


出典: The New Stack
さらに、コンテナオーケストレーションの評価時に、拡張性、管理性、アジリティ、セキュリティなど、従来にない非機能要件が関わってくるようになりました。こうしたタイプの問題の解決には、Kubernetesプロジェクトがガートナー・ハイプ・サイクルのTrough of Disillusionment(幻滅期)を抜けSlope of Enlightenment(啓蒙活動期)を過ぎて、Plateau of Productivity(生産性の安定期)という約束された土地に移動するのが役立ちます。

出典: The New Stack
https://blogs.oracle.com/developers/kubecon-europe-2018-oracle-open-serverless-standards-fn-project-and-kubernetes
オープンなserverlessプロジェクトであるFnは、CNCF CloudEvents、Serverless Frameworkのサポート、トレースとメトリックのためのOpenCensusといった、広範なサーバレス標準化のサポートを追加しています。
Oracle Container Engine for KubernetesはK8sユーザーが今日直面している最も困難な現実世界のガバナンス、スケール、管理といった課題に取り組んでいます。
本日Kubecon + CloudNativeCon Europe 2018で、Oracleは以下の内容を発表しました。
- Fn Projectにおいていくつかのオープンなserverless標準の新たなサポート
- 重要な新しいOracle Container Engine for Kubernetes機能が、鍵となる現実世界でのKubernetesの課題(ガバナンス、セキュリティ、ネットワーク、ストレージ、スケール、管理性など)に対処
Kubecon + CloudNativeCon Europe 2018serverlessコミュニティもKubernetesコミュニティも、進化における重要な岐路にさしかかっています。オープンなserverless標準へのコミットメントをさらに高めるために、OracleはFn Projectが標準ベースのプロジェクトCloudEventsおよびServerless Frameworkをサポートすると発表しました。どちらのプロジェクトも、今日のプロプライエタリなserverlessの選択肢に対し、相互運用性とコミュニティ主導型の別の選択肢を作成することを目的としています。
https://events.linuxfoundation.org/events/kubecon-cloudnativecon-europe-2018/
Fn Project
http://fnproject.io/
CloudEvents
https://github.com/cloudevents/spec
Serverless Framework
https://github.com/serverless/serverless
Solving Real World Kubernetes Challenges
Cloud Native Computing Foundation (CNCF) とパートナーシップを結ぶThe New Stackは先頃、Kubernetesユーザーが今日直面している上位の課題を分析したレポートを発表しました。The Top Challenges Kubernetes Users Face with Deployment - The New Stackこのレポートによると、インフラ関連の問題、具体的にはセキュリティ、ストレージ、ネットワーク、が上位にランクインしており、大企業に最も影響を与えているとのことです。
https://thenewstack.io/top-challenges-kubernetes-users-face-deployment/


出典: The New Stack
さらに、コンテナオーケストレーションの評価時に、拡張性、管理性、アジリティ、セキュリティなど、従来にない非機能要件が関わってくるようになりました。こうしたタイプの問題の解決には、Kubernetesプロジェクトがガートナー・ハイプ・サイクルのTrough of Disillusionment(幻滅期)を抜けSlope of Enlightenment(啓蒙活動期)を過ぎて、Plateau of Productivity(生産性の安定期)という約束された土地に移動するのが役立ちます。
Hype Cycle Research Methodology
https://www.gartner.com/technology/research/methodologies/hype-cycle.jsp

出典: The New Stack
Addressing Real-World Kubernetes Challenges
今日のKubernetesユーザーが直面しているこれらの課題に対処するため、Oracle Container Engine for KubernetesはOracle Cloud Infrastructure(OCI)の最高のガバナンス、セキュリティ、ネットワーキング、およびスケール機能と緊密に統合されています。以下にまとめます。Oracle Container Engine for Kubernetes
https://cloud.oracle.com/en_US/containers
- Governance, compliance, & auditing
Kubernetesのアイデンティティおよびアクセス管理(Identity and Access Management、IAM)は、DevOpsチームがKubernetesリソースへのアクセス権を持つユーザーを管理するだけでなく、アクセス権の種類とどの特定のリソースへのアクセスかを記述するポリシーも設定します。これは複雑な組織やユーザーやリソースの論理的なグループに適用されるルールを管理するうえで重要な要素です。ポリシーの定義と管理は非常に簡単です。
- Governance
DevOpsチームは、どのユーザーがKubernetesクラスタのどのリソース、コンパートメント、テナント、ユーザー、およびグループにアクセスできるかを設定できます。異なるチームは、開発、テスト、ステージング、プロダクションなど、開発サイクルのさまざまな段階で異なるリソースを管理することがふつうのため、役割ベースのアクセス制御(RBAC)が重要です。 2つのレベルのRBACが提供されています。- OCI IaaSインフラストラクチャー・リソース・レベルで、クラスタの開始、スケール、利用を定義
- Kubernetesアプリケーション・レベルで、リソース管理を提供

- Governance
- Compliance
Container Engine for Kubernetesは、カード保持者のデータの保管、処理、送信といった幅広い機密情報を扱うワークロードに対してお客様が利用される、世界的に適用されるセキュリティ基準であるPCI DSS(Payment Card Industry Data Security Standard)をサポートします。DevOpsチームは、オラクルのPCI対応クラウドインフラストラクチャサービスでKubernetesアプリケーションを実行できます。 - Auditing (logging, monitoring)
クラスタ管理監査イベントは、OCI Audit Service(OCI監査サービス)にも統合されており、一貫かつ統一されたイベント収集と可視性を実現します。
Cloud Audit and Security Services
https://cloud.oracle.com/governance/audit/features - Scale
Oracle Container Engineは、高可用性のマネージドKubernetesサービスです。 Kubernetesのマスターは、高い可用性を担保して(クロスアベイラビリティドメイン)管理、保護されています。ワーカークラスタは自己回復型であり、アベイラビリティドメインをまたがることができ、VMからベアメタル、GPUまでのcomputeシェイプで構成されるノードプールでワーカークラスタを構成できます。
- GPUs, Bare Metal, VMs
Oracle Container Engineは、小さな仮想化環境から、非常に大きな専用の構成までの幅広いKubernetesコンピュートノード・ファミリを業界で初めて提供します。ユーザーは、ネットワーク、ブロックストレージやローカルNVMeストレージオプションを使用して、基本的なWebアプリケーションから、高性能コンピューティングモデルまでスケールアップできます。
- Predictable, High IOPS
Kubernetesノードプールでは、予測可能なIOPSブロックストレージと高密度I/O VMを備えた、VMもしくはベアメタル・コンピュートを利用できます。ローカルNVMeストレージは、幅広いコンピュートの種類と高いIOPSを備える容量を提供します。
- Kubernetes on NVIDIA Tesla GPUs
ベアメタルGPUでKubernetesクラスタを実行することで、コンテナアプリケーションは最高のパフォーマンスを実現します。ハイパーバイザーのオーバーヘッドがないので、DevOpsチームは、2つのNVIDIA Tesla P100 GPUを備えるOracle Cloud Infrastructureのベアメタル・コンピュート・インスタンスにアクセスし、インスタンスあたり21 TFLOPSを超える単精度性能を実現するCUDAベースのワークロードを実行することができます。
Oracle and NVIDIA Collaborate to Provide Accelerated Compute Offerings in the Cloud
https://blogs.oracle.com/cloud-infrastructure/oracle-nvidia-collaborate-cloud-compute-offerings
- GPUs, Bare Metal, VMs
- Networking
Oracle Container Engineは、オーバーサブスクライブしない、最先端の非ブロッキングClosネットワーク上に構築されており、予測可能で広帯域、低遅延なネットワークを提供します。
- Load balancing
負荷分散は、構成管理で最も難しい機能の1つです。OracleはOCIの負荷分散機能とシームレスに統合されており、コンテナ・レベルの負荷分散が可能です。Kubernetesの負荷分散はロードバランサのIPアドレスで着信トラフィックをチェックし、負荷分散ポリシーとヘルスチェックポリシーに基づいて着信トラフィックを一連のバックエンドサーバーに配信します。DevOpsチームは、ロードバランサに対して、着信トラフィックをバックエンドサーバーに配信する方法を指示する負荷分散ポリシー(Load Balancing Policy)を定義できます。
- Virtual Cloud Network
Kubernetesのユーザー(ワーカー)ノードは顧客独自のVCN(仮想クラウドネットワーク)内にデプロイされています。VCNを使用してIPアドレス、サブネット、ルートテーブル、およびゲートウェイを安全に管理できます。
- Load balancing
- Storage
Kubernetesストレージを管理する簡単な方法としてのコード・クラックは、DevOpsチームにとって大きな懸念事項でありつづけます。Oracle Cloud Infrastructure用に設計された2つの新たなIaaS Kubernetesストレージの統合により、OCIの業界最高レベル(標準的任意のクラウド・プロバイダーの1 GB当たりIOPSよりも高い)のブロック・ストレージ性能、コスト、予測可能性を実現します。
- OCI Volume Provisioner
Kubernetesデプロイメントとして提供されるOCI Volume Provisionerを使うと、OCI上でKubernetesを実行するためのブロック・ボリューム・ストレージ・リソースを動的にプロビジョニングできます。OCI Flexvolume Driver(下記参照)を利用して、ストレージ・リソースをKubernetesノードにバインドします。
OCI Volume Provisioner
https://github.com/oracle/oci-volume-provisioner
Dynamic Provisioning and Storage Classes in Kubernetes
https://kubernetes.io/blog/2016/10/dynamic-provisioning-and-storage-in-kubernetes
Overview of Block Volume
https://docs.us-phoenix-1.oraclecloud.com/Content/Block/Concepts/overview.htm - OCI Flexvolume Driver
このドライバは、flexvolumeプラグインインタフェースを使用して、OCIブロックストレージボリュームをKubernetes Podsにマウントするために開発されました。
Kubernetes volume driver for Oracle Cloud Infrastructure
https://github.com/oracle/oci-flexvolume-driver
Flexvolume
https://github.com/kubernetes/community/blob/master/contributors/devel/flexvolume.md
- OCI Volume Provisioner
- Simplified, Unified Management
- Bundled in Management
一般的に使用されているKubernetesユーティリティをバンドルすることで、Oracle Container Engine for Kubernetesは、使い慣れたシームレスな開発者エクスペリエンスを実現します。これには、HelmとTiller(標準のKubernetesパッケージ管理を提供)、Kubernetesダッシュボード、およびkube-dnsの組み込みサポートが含まれます。
Helm - The Kubernetes Package Manager
https://helm.sh/ - Running Existing Applications with Kubernetes
Kubernetesは新たな、最終的にはグリーンフィールドのアプリケーションとは言えない、ワークロードをサポートしており、そのワークロードはますます増加しています。Kubernetes Operatorは、「Kubernetes APIを拡張して、Kubernetesユーザーに代わって複雑なステートフル・アプリケーションのインスタンスを作成、構成、および管理するアプリケーション固有のコントローラ」です。
Kubernetes Operators
Oracleはこれをオープンソース化し、近い将来Oracle WebLogic Server Kubernetes Operatorを一般リリースします。
https://coreos.com/operators/
Oracle Weblogic Server Kubernetes Operator
これを使うと、WebLogicユーザーは、アプリケーションの書き換え、再テスト、および追加のプロセスとコストをかけずに、Kubernetes環境でWebLogicドメインを管理できます。また、WebLogic 12.2.1.3はKubernetesでの動作保証済みであり、WebLogic Monitoring Exporterという、Prometheusのような監視ツールが読み取り・収集でき、Graetanaに表示できるWebLogic Serverのメトリックを公開するツールをリリース、オープンソース化しています。
https://github.com/oracle/weblogic-kubernetes-operator
WebLogic Server Certification on Kubernetes
https://blogs.oracle.com/weblogicserver/weblogic-server-certification-on-kubernetes
https://orablogs-jp.blogspot.jp/2018/01/weblogic-server-certification-on.html
Announcing the New WebLogic Monitoring Exporter
https://blogs.oracle.com/weblogicserver/announcing-the-new-weblogic-monitoring-exporter-v2
https://orablogs-jp.blogspot.jp/2017/12/announcing-new-weblogic-monitoring.html
- Bundled in Management
Fn Project
オープンなserverlessの取り組みがCNCF内で進められており、Fn Projectは積極的に従事しこれらの新たな標準を支援しています。- CloudEvents
Fn Projectは、Cloud Event標準の取り組みをサポートすると発表しました。CloudEventsは、イベントデータを標準化し、さまざまなアプリケーション、プラットフォーム、プロバイダ間のイベント宣言と配信を簡略化することを目指しています。
CloudEvents Specification
これまで、開発者にとって、serverlessイベントを記述する共通の方法が欠けていました。これは、serverlessアプリケーションの移植性に重大な影響を与えるだけでなく、開発者の生産性を大幅に低下させます。
https://github.com/cloudevents/spec
- Serverless Framework
オープンソースのFunctions as a Serviceおよびワークフロー・フレームワークであるFn Projectは、FaaS ProviderをServerless Frameworkに提供し、マルチクラウドおよびオンプレミスのserverlessコンピューティングのミッションをさらに推進しています。
Serverless Framework
この新しいProviderを使用すると、慣れ親しんだ統一された開発者体験を得ながら、Serverless Frameworkのユーザは、コンテナネイティブなfunctionを簡単に構築して任意のFn Clusterに展開できます。Fnの成長するコミュニティのために、この統合は、マルチクラウドおよびマルチプロバイダの世界で機能を管理するためのさらなる選択肢をもたらします。
https://github.com/serverless/serverless
"With a rapidly growing community around Fn, offering a first-class integration with the Serverless Framework will help bring our two great communities closer together, providing a “no lock-in” model of serverless computing to companies of all sizes from startups to the largest enterprises,” says Chad Arimura, VP Software Development, Oracle.
「Fn周辺のコミュニティが急速に成長している中で、Serverless Frameworkとの統合により、2つの巨大なコミュニティをより緊密に結びつけることができ、結果としてスタートアップから大企業までのあらゆる規模の企業にserverlessコンピューティングの「ロックインされない」モデルを提供します。 」(Chad Arimura, VP Software Development, Oracle) - OpenCensus
Fnは現在、すべてのFnコードでOpenCensusの統計、トレース、ビューAPIを使用しています。
Tracing all the Fn things with OpenCensus
OpenCensusは、アプリケーションから自動的にトレースとメトリックを収集し、ローカルに表示し、分析ツールに送信するライブラリのディストリビューションです。OpenCensusは、開発者が任意のバックエンドを使用できるように独自のデータ形式を定義する上で優れた決定を下しました(データ収集をシンプルにするために、明示的に独自のデータ構造を作成する必要はありません)。 これにより、コードを大幅に変更することなく、Fnをopsの世界で簡単に最新の状態に追随できます。
https://medium.com/fnproject/tracing-all-the-fn-things-with-opencensus-e579b268aeca
OpenCensus
https://opencensus.io/
Operating a Global Scale FaaS on top of Kubernetes
http://sched.co/Dqvy
[Docker, WLS, Kubernetes] Using Prometheus to Automatically Scale WebLogic Clusters on Kubernetes
原文はこちら。
https://blogs.oracle.com/weblogicserver/using-prometheus-to-automatically-scale-weblogic-clusters-on-kubernetes-v5
WebLogic Serverクラスタの弾力性(スケールアップまたはスケールダウン)は、需要に基づいてリソースを管理できる利点をもたらし、リソースコストを管理しながらお客様のアプリケーションの信頼性を向上させます。Kubernetes環境でWebLogic Serverクラスタの自動スケーリングをトリガする方法にはいくつかありますが、WebLogic Server Elasticityコンポーネントのアーキテクチャと、WebLogic診断フレームワーク(WLDF)ポリシーを使用してWebLogicクラスタをスケールアップする方法の詳細は、「Automatic Scaling of WebLogic Clusters on Kubernetes」のブログエントリをご覧ください。
Kubernetes環境のPodで実行されているすべてのコンポーネントを下図で示しています。

Kubernetesクラスタで動作するWebLogicドメインは以下を構成要素としています。
create-operator-inputs.yaml
create-domain-job-inputs.yaml

以前のブログエントリでは、クラスタで実行されている管理対象サーバにWebLogic Monitoring Exporterをデプロイして、Kubernetes環境のWebLogic Serverインスタンスの起動、実行方法をご紹介しました。

DockerClusterの外部アクセス用NodePortを確認します。

To make sure that the WebLogic Monitoring Exporterがデプロイされ、実行中であることを確認するため、以下のURLを使ってアプリケーションにアクセスします。

Promethus Alertmanagerで設定したいアラートルールがWebLogic Exporterで構成済みのメトリックと一致することを確認しましょう。以下は今回使用したアラートルールの例です。

WebLogic Kubernetes Operatorのデプロイで利用する weblogic-operator.yaml に含まれるプロパティinternalOperatorCertの値で webhook-deployment.yaml ファイルのプロパティINTERNAL_OPERATOR_CERTを更新します。

webhook、Prometheus、Alertmanagerを起動し、管理対象サーバインスタンスを監視します。

http://[ hostname ]:32000にアクセスし、Prometheusが全管理対象サーバを監視していることを確認しましょう。
Insert metric at cursor プルダウンメニューを確認しましょう。WebLogic Monitoring Exporter webアプリケーションの現在の構成に基づいたメトリック名が並んでいるはずです。

http://[hostname]:32000/alertsにアクセスしてPrometheus Alert Settingを確認できます。

prometheus-deployment.yaml 構成ファイルに並べた構成済みのルールが表示されているはずです。
今回のサンプルファイルの構成の場合、初期時点では2個の管理対象サーバPodのみを起動しました。現在実行中の全Podをチェックしましょう。

今回のAlert Ruleの構成では、クラスタでtestwebappというアプリケーションに対するセッションの個数が15を超える場合スケールアップが発生します。curl.shwアプリケーションURLを17回呼び出してみましょう。Let’s invoke the application URL 17 times using curl.sh :

AlertmanagerがHTTP POSTでwebhookに送信したことを確認するには、以下のwebhook Podのログを確認します。

webhookのエンドポイントが呼び出されると、execute-commandプロパティで指定されたコマンドが呼び出されます。今回の場合、該当するコマンドは/var/scripts/scaleUpAction.shです。scaleUpAction.shスクリプトはWebLogic Kubernetes Operatorが提供するscalingAction.shスクリプトへのパラメータを渡します。scalingAction.shスクリプトはOperator Server REST URLに対しスケールのリクエストを発行します。
スケールアップ(訳注:本来スケールアウトですが、原文に従っています)操作を確認するには、実行中の管理対象サーバのPodの個数を確認します。3個の実行中Podに増えているはずです。

https://blogs.oracle.com/weblogicserver/using-prometheus-to-automatically-scale-weblogic-clusters-on-kubernetes-v5
WebLogic Serverクラスタの弾力性(スケールアップまたはスケールダウン)は、需要に基づいてリソースを管理できる利点をもたらし、リソースコストを管理しながらお客様のアプリケーションの信頼性を向上させます。Kubernetes環境でWebLogic Serverクラスタの自動スケーリングをトリガする方法にはいくつかありますが、WebLogic Server Elasticityコンポーネントのアーキテクチャと、WebLogic診断フレームワーク(WLDF)ポリシーを使用してWebLogicクラスタをスケールアップする方法の詳細は、「Automatic Scaling of WebLogic Clusters on Kubernetes」のブログエントリをご覧ください。
Automatic Scaling of WebLogic Clusters on Kubernetesこのデモでは、Kubernetes上のWebLogicクラスタを自動的に拡張する別の方法、つまりPrometheusを使用する方法をご紹介します。Prometheusは利用可能なすべてのWebLogicメトリクスデータにアクセスできるため、ユーザはメトリックを使ってスケーラビリティのためのルールを指定できます。収集されたメトリックデータと設定されたアラートルールの条件に基づいて、PrometheusのAlertmanagerは、アラートを送信して、WebLogic Serverクラスタ内で実行中の管理対象サーバの数を変更します。
https://blogs.oracle.com/weblogicserver/automatic-scaling-of-weblogic-clusters-on-kubernetes-v2
https://orablogs-jp.blogspot.com/2018/01/automatic-scaling-of-weblogic-clusters.html
PrometheusWebLogic Monitoring Exporterを使用して、特定のWebLogic Serverインスタンスの実行時メトリックを取得しPrometheusに流します。
https://prometheus.io/
Prometheus Alertmanager
https://prometheus.io/docs/alerting/alertmanager/
WebLogic Monitoring Exporterまた、スケーリングアラートイベントが発生したときに呼び出されるユーザー定義のRESTサービスであるwebhookレシーバーを使用して、カスタム通知の統合を実装します。
https://github.com/oracle/weblogic-monitoring-exporter
webhook_configアラートルールが指定された条件に一致すると、Prometheus Alert Managerは、スケーリングアクションを要求するwebhookとして指定されたURLにHTTPリクエストを送信します。このサンプルデモで使用しているwebhookの詳細については、以下のリンクを参照ください。
https://prometheus.io/docs/alerting/configuration/#webhook_config
adnanh/webhookこのブログでは、Kubernetesクラスタで動作するWebLogic Serverインスタンスの自動スケーリングを実行するために、Prometheus、Prometheus Alertmanager、Webhookを構成する方法を学習します。
https://github.com/adnanh/webhook/
Kubernetes環境のPodで実行されているすべてのコンポーネントを下図で示しています。

Kubernetesクラスタで動作するWebLogicドメインは以下を構成要素としています。
- 管理サーバ(AS)インスタンスはDockerコンテナで動作し、独自のPod(POD1)を持つ。
- WebLogic Serverクラスタは管理対象サーバインスタンスで構成されており、各インスタンスはDockerコンテナで動作し、それぞれ独自のPod(POD2~POD5)を持つ。
- WebLogic Monitoring Exporter WebアプリケーションはWebLogic Serverクラスタにデプロイされている。
- Prometheus
- Prometheus Alert Manager
- WebLogic Kubernetes Operator
- Webhookサーバ
Installation and Deployment of the Components in the Kubernetes Cluster
インストール手順に従い、WebLogic Kubernetes Operatorおよびドメインを作成します。このエントリでは、以下のパラメータを使ってWebLogic Kubernetes OperatorとWebLogicドメインを作成します。Installation - WebLogic Kubernetes Operator1. WebLogic Kubernetes Operatorのデプロイ( create-weblogic-operator.sh )
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/site/installation.md
create-operator-inputs.yaml
2. ドメインの作成ならびに開始 ( create-domain-job.sh )serviceAccount: weblogic-operator targetNamespaces: domain1 namespace: weblogic-operator weblogicOperatorImage: container-registry.oracle.com/middleware/weblogic-kubernetes-operator:latest weblogicOperatorImagePullPolicy: IfNotPresent externalRestOption: SELF_SIGNED_CERT externalRestHttpsPort: 31001 externalSans: DNS:slc13kef externalOperatorCert: externalOperatorKey: remoteDebugNodePortEnabled: false internalDebugHttpPort: 30999 externalDebugHttpPort: 30999 javaLoggingLevel: INFO
create-domain-job-inputs.yaml
3. 以下のコマンドを実行してコンソールにアクセスするための管理NodePortを識別するdomainUid: domain1 managedServerCount: 4 managedServerStartCount: 2 namespace: weblogic-domain adminPort: 7001 adminServerName: adminserver startupControl: AUTO managedServerNameBase: managed-server managedServerPort: 8001 weblogicDomainStorageType: HOST_PATH weblogicDomainStoragePath: /scratch/external-domain-home/pv001 weblogicDomainStorageReclaimPolicy: Retain weblogicDomainStorageSize: 10Gi productionModeEnabled: true weblogicCredentialsSecretName: domain1-weblogic-credentials exposeAdminT3Channel: true adminNodePort: 30701 exposeAdminNodePort: true namespace: weblogic-domain loadBalancer: TRAEFIK loadBalancerWebPort: 30305 loadBalancerDashboardPort: 30315
下図にあるweblogic-domainは、WebLogicドメインPodがデプロイされている名前空間です。kubectl -n weblogic-domain describe service domain1-adminserver

以前のブログエントリでは、クラスタで実行されている管理対象サーバにWebLogic Monitoring Exporterをデプロイして、Kubernetes環境のWebLogic Serverインスタンスの起動、実行方法をご紹介しました。
Using Prometheus and Grafana to Monitor WebLogic Server on Kubernetes以下のURLでWebLogic Server管理コンソールにアクセスします(資格証明はweblogic/welcome1)。
https://blogs.oracle.com/weblogicserver/use-prometheus-and-grafana-to-monitor-weblogic-server-on-kubernetes
https://orablogs-jp.blogspot.com/2017/12/using-prometheus-and-grafana-to-monitor.html
http://[hostname]:30701/consoleこの例では、testwebapp.warというwebアプリケーションが開いたセッションの個数を基にしてアラートルールを設定します。
bhabermaas/kubernetes-projects/testwebapp.warDeploy the testwebapp.warアプリケーションと、WebLogic Monitoring Exporter(wls-exporter.war)をDockerClusterにデプロイします。
https://github.com/bhabermaas/kubernetes-projects/blob/master/apps/testwebapp.war
bhabermaas/kubernetes-projects/wls-exporter.war
https://github.com/bhabermaas/kubernetes-projects/blob/master/apps/wls-exporter.war

DockerClusterの外部アクセス用NodePortを確認します。
kubectl -n weblogic-domain describe service domain1-dockercluster-traefik

To make sure that the WebLogic Monitoring Exporterがデプロイされ、実行中であることを確認するため、以下のURLを使ってアプリケーションにアクセスします。
http://[ hostname ]:30305/wls-exporter/metricsメトリックデータにアクセスするために必要なWebLogicユーザーの資格証明を求められるので、weblogic/welcome1を入力します。メトリックページはWebLogic Monitoring Exporter用に構成されたメトリックを表示します。

Promethus Alertmanagerで設定したいアラートルールがWebLogic Exporterで構成済みのメトリックと一致することを確認しましょう。以下は今回使用したアラートルールの例です。
if sum(webapp_config_open_sessions_current_count{webapp=”testwebapp”) > 15 ;ここで利用したメトリック ‘webapp_config_open_sessions_current_count’ は、メトリックのWebページに表示されている必要があります。Setting Up the Webhook for Alert Manager
この例では、webhookアプリケーションを使いました。bhabermaas/kubernetes-projectsDockerイメージ構築のため、以下のディレクトリ構造を作成します。
https://github.com/bhabermaas/kubernetes-projects/tree/master/apps
- apps
- scripts
- webhooks
scalingAction.shscriptsディレクトリでscaleUpAction.shファイルを作成し、以下のコードをペーストします。
https://github.com/oracle/weblogic-kubernetes-operator/blob/master/src/scripts/scaling/scalingAction.sh
2. Create a Docker file for the webhook用のDockerファイル(Docker.webhook)を以下のように作成します。#!/bin/bash echo scale up action >> scaleup.log MASTER=https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT echo Kubernetes master is $MASTER source /var/scripts/scalingAction.sh --action=scaleUp --domain_uid=domain1 --cluster_name=DockerCluster --kubernetes_master=$MASTER --wls_domain_namespace=domain1
3. hooks.json ファイルをwebhooksディレクトリを作成します。以下はその例です。FROM store/oracle/serverjre:8 COPY apps/webhook /bin/webhook COPY webhooks/hooks.json /etc/webhook/ COPY scripts/scaleUpAction.sh /var/scripts/ COPY scripts/scalingAction.sh /var/scripts/ CMD ["-verbose", "-hooks=/etc/webhook/hooks.json", "-hotreload"] ENTRYPOINT ["/bin/webhook"]
[
{
"id": "scaleup",
"execute-command": "/var/scripts/scaleUpAction.sh",
"command-working-directory": "/var/scripts",
"response-message": "scale-up call ok\n"
}
]
4. ‘webhook’ Dockerイメージを作成します。docker rmi webhook:latest docker build -t webhook:latest -f Dockerfile.webhook .
Deploying Prometheus, Alert Manager, and Webhook
Prometheus、Alertmanagerとwebhook Podをmonitoringという名前空間で実行します。以下のコマンドを実行して、monitoringという名前空間を作成します。PrometheusインスタンスをKubernetesにデプロイするために、 prometheus-kubernetes.yml というPrometheusの構成ファイルを作成します。サンプルファイルは以下のURLから入手できます。kubectl create namespace monitoring
prometheus-deployment.yamlPrometheus構成ファイルのサンプルでは、以下の情報を設定しています。
https://github.com/bhabermaas/kubernetes-projects/blob/master/kubernetes/prometheus-deployment.yaml
- ユーザー資格証明(weblogic/welcome1)
- WebLogic Serverのメトリックアップデート間隔(5秒)
- Prometheusダッシュボードアクセスのための外部ポート(32000)
- スケーリング・ルール
- Alertmanagerは9093/tcpをリスニングするよう構成
ALERT scaleup if sum(webapp_config_open_sessions_current_count{webapp=”testwebapp”}) > 15 ANNOTATIONS { summary = "Scale up when current sessions is greater than 15", description = "Firing when total sessions active greater than 15" }QUERYING PROMETHEUSアラートを生成するには、Prometheus AlertmanagerをDockerコンテナで動作する別のPodとしてデプロイする必要があります。サンプルとして提供しているPrometheus Alertmanagerの構成ファイルでは、webhookを利用しています。
https://prometheus.io/docs/querying/basics/
alertmanager-deployment.yaml
https://github.com/bhabermaas/kubernetes-projects/blob/master/kubernetes/alertmanager-deployment.yaml

WebLogic Kubernetes Operatorのデプロイで利用する weblogic-operator.yaml に含まれるプロパティinternalOperatorCertの値で webhook-deployment.yaml ファイルのプロパティINTERNAL_OPERATOR_CERTを更新します。
webhook-deployment.yaml以下はその例です。
https://github.com/bhabermaas/kubernetes-projects/blob/master/kubernetes/webhook-deployment.yaml

webhook、Prometheus、Alertmanagerを起動し、管理対象サーバインスタンスを監視します。
全てのPodが起動したことを確認しましょう。kubectl apply -f alertmanager-deployment.yaml kubectl apply –f prometheus-deployment.yaml kubectl apply –f webhook-deployment.yaml

http://[ hostname ]:32000にアクセスし、Prometheusが全管理対象サーバを監視していることを確認しましょう。
Insert metric at cursor プルダウンメニューを確認しましょう。WebLogic Monitoring Exporter webアプリケーションの現在の構成に基づいたメトリック名が並んでいるはずです。

http://[hostname]:32000/alertsにアクセスしてPrometheus Alert Settingを確認できます。

prometheus-deployment.yaml 構成ファイルに並べた構成済みのルールが表示されているはずです。
Auto Scaling of WebLogic Clusters in K8s
このデモでは、2個の実行中の管理対象サーバをもつよう各WebLogic Serverクラスタを構成し、管理対象サーバの個数がちょうど4になるようにしました。configuredManagedServerCount と initialManagedServerReplicas という、create-domain-job-inputs.yamlファイルに含まれるこれらのパラメータを変更し、クラスタ内で実行する管理対象サーバの所望の個数と、許容するレプリカの最大個数を反映することができます。今回のサンプルファイルの構成の場合、初期時点では2個の管理対象サーバPodのみを起動しました。現在実行中の全Podをチェックしましょう。

今回のAlert Ruleの構成では、クラスタでtestwebappというアプリケーションに対するセッションの個数が15を超える場合スケールアップが発生します。curl.shwアプリケーションURLを17回呼び出してみましょう。Let’s invoke the application URL 17 times using curl.sh :
#!/bin/bash
COUNTER=0
MAXCURL=17
while [ $COUNTER -lt $MAXCURL ]; do
OUTPUT="$(curl http:/$1:30305/testwebapp/)"
if [ "$OUTPUT" != "404 page not found" ]; then
echo $OUTPUT
let COUNTER=COUNTER+1
sleep 1
fi
done
コマンドを発行します。testwebappアプリケーションに対するセッションの合計が15を超えると、PrometheusはAlertmanagerを通じてアラートを発生します。現在のアラートの状態をhttp://[hostname]:32000/alertにアクセスして確認できます。. ./curl.sh [hostname]

AlertmanagerがHTTP POSTでwebhookに送信したことを確認するには、以下のwebhook Podのログを確認します。

webhookのエンドポイントが呼び出されると、execute-commandプロパティで指定されたコマンドが呼び出されます。今回の場合、該当するコマンドは/var/scripts/scaleUpAction.shです。scaleUpAction.shスクリプトはWebLogic Kubernetes Operatorが提供するscalingAction.shスクリプトへのパラメータを渡します。scalingAction.shスクリプトはOperator Server REST URLに対しスケールのリクエストを発行します。
スケールアップ(訳注:本来スケールアウトですが、原文に従っています)操作を確認するには、実行中の管理対象サーバのPodの個数を確認します。3個の実行中Podに増えているはずです。

Summary
このエントリでは、Kubernetes環境でWebLogic Serverクラスタの自動スケーリングを呼び出すために、WebLogic ServerとPrometheusを連携して利用する方法を紹介しました。Prometheusが監視・分析する包括的なWebLogicドメイン固有の(カスタム)メトリックのセットに基づいて、Podの数を増加(または減少)して自動的にWebLogic Serverクラスタを拡大/縮小できます。すばらしい監視ツールに加えて、Prometheusは簡単にWebLogic Serverクラスタのスケールの決定を簡単に構成できることもご紹介いたしました。[Java] Background on Oracle’s contribution to Jakarta EE
原文はこちら。
https://blogs.oracle.com/theaquarium/background-on-oracle%E2%80%99s-contribution-to-jakarta-ee
このエントリはWill Lyons(Senior Director, Java EE and WebLogic Server Product Management)によるものです。

本日Eclipse Foundationは、Jakarta EEというブランドの下、Java EE 8テクノロジーがクラウドネイティブJavaの要件を満たすために進化するという、数々のコミュニティアップデートを行っています。新しいJakarta EEウェブサイトとJakarta EEコミュニティ調査の結果をご覧ください。
このプロジェクトは、オープンなEclipseコミュニティ・プロセスによって管理および実行されています。この作業の進行状況は、EE4J Project Bootstrappingステータスページで追跡できます。このページでは、計画済みEE4Jサブプロジェクト、サブプロジェクトの作成、そしてソースコードの提出のステータスをレポートします。このステータスには、Ivar GrimstadとChristian KaltepothがSpec Leadである、MVC 1.0の参照実装のOzarkのステータスと、Oracleの貢献状況が含まれます。
纏めると、現時点ではこのプロセスの一環として…
要するに、我々が昨年9月に提案した貢献を現実にするまさにそのさなかです。Eclipse Foundation、Jakarta EE Working Group、EE4J PMC、およびJakarta EEコミュニティの皆様に感謝し、Jakarta EEブランドの下でクラウドネイティブJavaのためにこれらのテクノロジーを進化させていきたいと考えています。
https://blogs.oracle.com/theaquarium/background-on-oracle%E2%80%99s-contribution-to-jakarta-ee
このエントリはWill Lyons(Senior Director, Java EE and WebLogic Server Product Management)によるものです。

本日Eclipse Foundationは、Jakarta EEというブランドの下、Java EE 8テクノロジーがクラウドネイティブJavaの要件を満たすために進化するという、数々のコミュニティアップデートを行っています。新しいJakarta EEウェブサイトとJakarta EEコミュニティ調査の結果をご覧ください。
Jakarta EE Community Survey of 1,800+ Java Developers Reveals “Cloud Native” Top Requirement in Platform’s Evolution本日アップデートが発表されたので、これまでのこのプロジェクトへのOracleの貢献に関するアップデートを提供してもよいだろう、と考えました。以前のエントリで説明したように、OracleはJava EE 8テクノロジーをこのプロジェクトに寄贈しています。具体的には以下のようなものです。
https://jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/
Jakarta EE Software
https://jakarta.ee/
- Java EE 8のリファレンス実装(RI)であるOracle GlassFish 5.0のソースコード
- Java EE 8互換性のテストに使用されるOracle Technology Compatibility Kit(TCK)のソース
- 製品マニュアル
このプロジェクトは、オープンなEclipseコミュニティ・プロセスによって管理および実行されています。この作業の進行状況は、EE4J Project Bootstrappingステータスページで追跡できます。このページでは、計画済みEE4Jサブプロジェクト、サブプロジェクトの作成、そしてソースコードの提出のステータスをレポートします。このステータスには、Ivar GrimstadとChristian KaltepothがSpec Leadである、MVC 1.0の参照実装のOzarkのステータスと、Oracleの貢献状況が含まれます。
纏めると、現時点ではこのプロセスの一環として…
- 34個のEE4Jサブプロジェクトがレビュー待ち。これらのサブプロジェクトは、GlassFishプロジェクト自体、主要なGlassFishコンポーネントのほとんど、TCK寄贈のためのプロジェクトを含む、GlassFish参照実装(Reference Implementation、RI)の大部分を表す。
- 20個のEE4Jサブプロジェクトが作られ、Oracleからの寄贈を受け取る準備は完了している。
- Eclipse Foundationに対してこうしたEE4Jサブプロジェクトに対する15個のソースの提供があった。この中には、Jersey (JAX-RS)、Mojarra (JSF)、Tyrus (WebSocket)、Open MQ (JMS)、EclipseLink (JPA)、JSON-P、JTAといった、主要なOracle Java EE 8テクノロジーが含まれる。
- 13個のサブプロジェクトのソース・リポジトリにソースコードが投入された
要するに、我々が昨年9月に提案した貢献を現実にするまさにそのさなかです。Eclipse Foundation、Jakarta EE Working Group、EE4J PMC、およびJakarta EEコミュニティの皆様に感謝し、Jakarta EEブランドの下でクラウドネイティブJavaのためにこれらのテクノロジーを進化させていきたいと考えています。
[Java] The road to Jakarta EE
原文はこちら。
https://blogs.oracle.com/theaquarium/the-road-to-jakarta-ee
本日、Eclipse Foundationは、https://jakarta.eeとJakarta EEのロゴの公開、開発者アンケートの結果などを含む、Jakarta EEに関連する複数の発表を行っています。
Eclipse Foundation Unveils New Cloud Native Java Future with Jakarta EEここまでの道のりを紹介するいいタイミングかもしれません。
https://jakarta.ee/news/2018/04/24/eclipse-foundation-unveils-new-cloud-native-java-future-with-jakarta-ee/
Jakarta EE Community Survey of 1,800+ Java Developers Reveals “Cloud Native” Top Requirement in Platform’s Evolution
https://jakarta.ee/news/2018/04/24/jakarta-ee-community-survey/
Jakarta EE Software
https://jakarta.ee/
2016年終わりごろから2017年初頭、Java EEについて説明していたときに以下のようなスライドを冗談で使っていました。

その当時、誰も将来を予測していなかったと思います。その期間中、Java EEプラットフォームの将来について疑問が提起されましたが、Java EEにとって状況は簡単では簡単ではなかったことを思い出す必要があります。当時、OracleはJCP expertsと共にJava EE 8およびAPIの最終化に注力していました。
そのプロセスの比較的早い段階で、私たちはJava EEプラットフォームの将来についても考え始めました。つまり、Java EE 8以後の時代を「Java EE Next」と非公式に呼んでいました。JavaOne 2016で共有されていたJava EE 9の計画は、特に歓迎されなかったため、白紙に戻してやり直しました。Java EEエコシステムが再びわくわくするものかつ多数の方が関与するものたり得るには、根本的に異なる何かをしなければならないことは明らかでした。
長年にわたって提起されたJava EEに対するすべての懸念を取り除くために、我々はその時点から、よりオープンな方法で、より速いペースでプラットフォームを進化させるべきだと考えました。プラットフォームは、十分に確立されたガバナンスを含め、オープンソースモデルを採用しなければならないことは明らかでした。その初期の反省から、Oracleはエコシステムの主要プレーヤー、つまりRed HatとIBMと一緒に、Eclipse Foundationこそがこのラディカルな進化をホストするのにふさわしいと決定しました。多くの理由の1つは、EclipseがすでにMicroProfile.ioプロジェクトをホストしているという点です。MicroProfileでは、Java EEプラットフォームにマイクロサービス・アーキテクチャ向けの機能を追加しています。その後まもなく、Tomitribe、Payara、FujitsuなどのJava EEプレイヤーがイニシアティブに参加しました。こうして
プラットフォーム開発のEclipse Foundationへの移行は大仕事です。私は発言に責任を持てないのでここでは取り扱いませんが、複雑な法的問題を含め、多くの技術的側面と非技術的側面があります。さらに、私たちは小さなプロジェクトについて話しているわけではありません。例を挙げると、GlassFish、Jersey、Grizzly、Mojarra、Open MQを含む多数の確立されたプロジェクトについて話しています。しかもそれで終わりではありません。また、さまざまなTCKのオープン化に関連するあらゆる活動もあります。ただただ巨大な作業であり、おそらくEclipse Foundationがこれまでに進めてきたプロジェクトで最大のものでしょう(背景は以下をご覧ください)。
Background on Oracle’s contribution to Jakarta EEこれこそが、Jakarta EEがベースラインとしてJava EE 8を使用し、旧バージョンのプラットフォームがJakarta EEに含めないことを早期に決定した理由の一つで、このアプローチは端的に合理的かつ実用的でした。こうしている間にも、これらすべての成果が生まれています。Jakarta EEの重要な目標、つまりプラットフォームを進化させることに効果的に注力できるようにするために、そうした取り組みを背後におきながら、すべてが出そろうのを待つ必要があります。それに関連し、著名なコミュニティメンバーから以下のようなメールを最近受け取りました。
https://blogs.oracle.com/theaquarium/background-on-oracle%E2%80%99s-contribution-to-jakarta-ee
https://orablogs-jp.blogspot.jp/2018/04/background-on-oracles-contribution-to.html

私たちはJakarta EEとは無関係の問題について話し合いました。その人からの謝意にを心からありがたく思いつつ、本当にJakarta EE全体の取り組みについて強調する必要があると考えています。コミュニティー内でVisibilityがある人もいます(PMCにおけるOracleの代表であるDmitry Kornilov(@m0mus)、エバンジェリストとしてのDavid Delabassee)が、Oracle側の立場で言えば、まさにチームの成果なのです。Java EEをEclipse Foundationに移管するために背後(Oracle)では多数の人々が関わっています。関わりの濃淡にかかわらず、この作業に非常に多くの同僚が関わっているため、全員を紹介できませんし、リストにしても誰かを忘れてしまう可能性があるのでそういうことはしたくないのですが、特に言及すべきと考えている、Ed Bratt、Will Lyons、そしてBill Shanonの業績を公言させてください。彼らはJakarta EEを確実に誕生させるための作業の初期段階から休むことなく作業してくれました。皆さん、ありがとう!
また、通常プロジェクトがオープンソース化される場合、すべての法的側面を含む関連するすべての活動が上流で行われること、そしてすべてが議論され、合意された場合のみ、プロジェクトが公開されることを認識しておく必要があります。しかし、早い段階で、できるだけ透明性の高いものにすることを決めていました。そのため、昨年の夏の最初の意図を発表したのです。当時、まだ多くのことが決定されていませんでしたが、それゆえに、Jakarta EEの初期段階で、新しいけれどもすでに活発な活動をしているオープンソースコミュニティの創設をも含めて、現在の状況に至りました。Jakarta EEの究極の目標、すなわち、プラットフォームを来る10年に必要なオープンソースおよびJavaベースのクラウドネイティブの基盤への進化に適切に取り組むためには、まだまだ多くの作業が必要です。Jakarta EEコミュニティはそのゴールに向けて活発に活動しており、本日の発表が重要な初期マイルストンを表しています。
Eclipse Foundation Unveils New Cloud Native Java Future with Jakarta EE
https://jakarta.ee/news/2018/04/24/eclipse-foundation-unveils-new-cloud-native-java-future-with-jakarta-ee/
登録:
投稿 (Atom)