WebLogic Server for OKEの構成を眺めてみる

# WebLogic Server for OKEの構成を眺めてみる

## はじめに

この記事はOracle Cloud Infrastructure (以下OCI) で提供されている、WebLogic Server for Oracle Container Engine for Kubernetes (以下WLS for OKE) のEnterprise Editionがプロビジョニングされた環境を前提にしています。
今回はWLS for OKEの概要やプロビジョニングの方法などについて紹介した[以前の記事](https://qiita.com/nari_gone/items/54ff3938aae669796d5e)でプロビジョニングを行った環境を前提に、WLS for OKEでどのようなOCIリソースが構成されるのか、を中心に見ていきたいと思います。

## WLS for OKEの全体像

以前の記事でも触れた通り、WLS for OKEはOCIのマーケットプレイスからResource Managerにより利用に必要な全てのOCIリソースがプロビジョニングされます(一部、事前準備で用意するものを除く)。
WLS for OKEの基本的な構成要素、役割は以下の通りです。

- OKEクラスタ
  Jenkins、WebLogic Kubernetes OperatorとWebLogicなどを稼働させるためのKubernetsクラスタ
- OCIR
  利用するWebLogicのコンテナイメージなどを格納するコンテナ・レジストリ
- ファイル・ストレージ
  JenkinsのHomeやパイプラインで利用するスクリプト、WebLogicドメインのYAMLファイルなどを格納する共有ストレージ領域
- プライベート・ロードバランサ
  JenkinsコンソールやWebLogic管理コンソールへのアクセスを集約するエンドポイント
- 管理ホストのComputeインスタンス
  OKEへの管理アクセスや、FSS上のアセットを手動で編集するなどの管理用途で利用するOS環境
- 踏み台ホストのComputeインスタンス
  プライベート・サブネットに構成された管理ホストやOKE上のJenkins環境にアクセスするための踏み台サーバ
- WebLogicクラスタ用ロードバランサ
  WebLogic上のアプリケーションへのアクセスを外部に提供するエンドポイント

WLS for OKEの全体の構成は以下の図の通りです。
![00_diagram_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/e987ea6d-ed14-6c09-ce18-5a348154971f.png)

ここではもう少し詳細なネットワークの構成等も含めて作成されたOCIリソースを順に確認していきましょう。

## WLS for OKEのネットワーク構成

### VCNの構成

まず、ネットワーク構成を理解するために、VCN(仮想クラウド・ネットワーク)から順に確認してみましょう。

![01_vcn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/3d6d4985-29d1-3604-8870-f0179be3e08d.png)

今回のプロビジョニングでは `wls4oke`というリソースのプレフィクスでVCNごとプロビジョニングを行いましたので、`<prefix>-vcn` ここでは`wls4oke-vcn`という名前のVCNが作成されています。基本的にはこのように作成される各OCIリソース名にはプロビジョニング時に指定したプレフィクスから始まる名前が付けられます。

以降、この記事内では、`<prefix>-` を `wls4oke-`で表現します。

### サブネットの構成

VCNの詳細からサブネットを確認すると、以下のような6つのサブネットが作成されています。

![02_subnet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/f17702c3-6214-1f3e-d4b8-f3b9a0dfc239.png)

| サブネット名       | パブリック/プライベート | 用途                                                     |
| ------------------ | ----------------------- | -------------------------------------------------------- |
| `wls4oke-bastion`  | パブリック              | 踏み台ホストが配置されるサブネット                       |
| `wls4oke-admin`    | プライベート            | 管理ホストが配置されるサブネット                         |
| `wls4oke-endpoint` | プライベート            | OKEのAPIエンドポイントが配置されるサブネット             |
| `wls4oke-workers`  | プライベート            | OKEのWorker Nodeが配置されるサブネット                   |
| `wls4oke-fss`      | プライベート            | FSSのマウント・ターゲットが配置されるサブネット          |
| `wls4oke-lb`       | パブリック              | WebLogicクラスタ用のロードバランサが配置されるサブネット |

また、これらのサブネット対応するセキュリティ・リストが作成され、割り当てられています。

![03_seclist.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/544b8353-a401-806a-1f72-8ee29e63e355.png)

| セキュリティ・リスト                    | 対応するサブネット                   |
| --------------------------------------- | ------------------------------------ |
| `wls4oke-bastion`                       | `wls4oke-bastion`                    |
| `wls4oke-admin-seclist`                 | `wls4oke-admin`                      |
| `wls4oke-endpoint-seclist`              | `wls4oke-endpoint`                   |
| `wls4oke-private-workers`               | `wls4oke-workers`                    |
| `wls4oke-fss-seclist`                   | `wls4oke-fss`                        |
| `wls4oke-pub-lb`                        | `wls4oke-lb`                         |
| `Default Security List for wls4oke-vcn` | 未使用 (VCNにデフォルトで作成される) |

### ゲートウェイの構成

WLS for OKE のネットワークには以下の3つのゲートウェイが1つずつ構成されます。

- インターネット・ゲートウェイ
  インターネットから踏み台ホストのサブネットへの経路、及びWebLogicクラスタ用のロードバランサ・サブネットへの経路のためのゲートウェイ
- NATゲートウェイ
  管理ホストのサブネットやWorker Nodeのサブネットからインターネットへの経路のためのゲートウェイ
- サービス・ゲートウェイ
  Worker NodeのサブネットやOKEのAPIエンドポイントのサブネットから、OCIRやOKEのコントロール・プレーンが配置されるサービス・ネットワークへの経路のためのゲートウェイ

![05_igw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/55552c0d-31c4-928f-7adc-a6ff522e5584.png)
![06_natgw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/e074f66f-d629-2192-e82e-3775e414bfed.png)
![07_sgw.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/fc1cf577-8a9c-6988-86cf-a5ea8623f433.png)

これらのゲートウェイを利用するルート表は以下のルート表で利用されています。

- パブリック・サブネットに適用されるルート表 `wls4oke-ig-route`
  - インターネット(`0.0.0.0/0`)への経路としてインターネットゲートウェイを定義。
    ![09_ig-route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/ee0a887a-8b90-b976-3236-292e9d59e1a2.png)
- プライベート・サブネットに適用されるルート表 `wls4oke-nat-route`
  - インターネット(`0.0.0.0/0`)への経路としてNATゲートウェイを定義。
  - サービス・ネットワークへの経路としてサービス・ゲートウェイを定義。
    ![10_nat-route.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/c5b2971c-4f66-ab07-a90c-9a6de7176197.png)


6つのサブネットからの外部へのアクセスは、これらのゲートウェイ、ルート表、及びセキュリティ・リストにより、以下の表のようにアクセス可否が構成されています。

| サブネット名       | パブリック/プライベート | インターネット | サービス・ネットワーク |
| ------------------ | ----------------------- | -------------- | ---------------------- |
| `wls4oke-bastion`  | パブリック              | IGW            | -                      |
| `wls4oke-admin`    | プライベート            | NATGW          | -                      |
| `wls4oke-endpoint` | プライベート            | -              | SGW                    |
| `wls4oke-workers`  | プライベート            | NATGW          | SGW                    |
| `wls4oke-fss`      | プライベート            | -              | -                      |
| `wls4oke-lb`       | パブリック              | IGW            | -                      |

IGW：インターネット・ゲートウェイ
NATGW：NATゲートウェイ
SGW：サービス・ゲートウェイ

### ロードバランサの構成

WLS for OKEのロードバランサはJenkinsコンソールやWebLogic管理コンソールにアクセスするためのプライベート・ロードバランサと、WebLogicクラスタ用に作成されるパブリック・ロードバランサがありますが、いずれも同じパブリック・サブネット (ここでは `wls4oke-lb`) に配置されます。

また、これらのロードバランサはOKE上のKubernetes Service作成時に構成されるため、ロードバランサの名称はプレフィクスなどを伴う規則的な名前にはなっていません。

![11_lb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/5a0d6596-f1f2-8d54-12f5-248db03982be.png)

プライベート・ロードバランサはWLS for OKEプロビジョニング時に1つ構成されます。
![12_private-lb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/56d07e06-ba06-b978-4d02-29434a7b8c90.png)

パブリック・ロードバランサは、Jenkinsコンソール上からWebLogicドメインを作成するたびに作成されます。
![13_public-lb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/85112017-51cb-4c62-30ce-68e6afe8fffe.png)

## 踏み台ホストと管理ホストの配置

WLS for OKEの環境への接続に利用される踏み台ホストは `wls4oke-bastion`、管理用途で利用する管理ホストは`wls4oke-admin`というプレフィクスで始まる名前のComputeインスタンスとして作成されます。
※図中の残りの2つのインスタンスはOKEのWorker Nodeのインスタンスです。

![14_compute.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/78e430df-7050-ef6e-ccc6-6fd91e033876.png)

踏み台ホストはパブリック・サブネットの`wls4oke-bastion`に配置され、パブリックIPを割り当てられます。
![15_bastion_host.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/3cfa1bc6-6a02-4ce3-2872-f9f4433ad32b.png)

管理ホストは、プライベート・サブネットの`wls4oke-admin`に配置されます。
![16_admin_host.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/680659d3-1f68-e9bc-8be0-d46c83448ede.png)

## OKEクラスタの構成

WLS for OKEのOKEクラスタは、`wls4oke-cluster-cluster`という名称で作成されます。作成されるOKEクラスタのサブネットは以下が指定されます。

| サブネットの種類                         | 割り当てられるサブネット |
| ---------------------------------------- | ------------------------ |
| Kubernetes APIエンドポイント・サブネット | `wls4oke-endpoint`       |
| サービスLBサブネット1                    | `wls4oke-lb`             |
| サービスLBサブネット2                    | (未指定)                 |

![17_oke-cluster.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/e4b54fe9-40df-b895-3ac2-a57a663c5205.png)

WLS for OKEのプロビジョニング時に以下の2つのノード・プールが作成されます。

- `wls4oke-wls-np`：WebLogicのPodが稼働するためのノード・プール。
- `wls4oke-non-wls-np`：Jenkinsなどの管理コンポーネントが稼働するためのノード・プール。

![18_oke-nodepool.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/097c9b65-e083-82a3-1397-9af4b5bfabc5.png)

なお、UCMモデルの場合に発生するWebLogicに対する課金は、`wls4oke-wls-np`のWorker Node (のOCPU)に対してのみ発生します。

これらのノード・プールはKubernetes APIエンドポイントやサービスLBサブネットとは異なる、Worker Node専用のプライベート・サブネット `wls4oke-workers`に配置されます。

![19_oke-nodepool-wls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/913f3cc5-c971-6808-3be5-4846a0f53b2d.png)

![20_oke-nodepool-nonwls.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/7316da3e-0560-35d4-114d-7f5037d0fe73.png)

WebLogic用のノード・プールについては、WLS for OKEのプロビジョニング後に、Jenkinsコンソールから追加で作成することも可能です。この場合、指定が無い場合は同じサブネットに配置されますが、異なるサブネットを指定して配置することも可能です。

## ファイル・ストレージの構成

Jenkins Homeなどの用途で利用される共有ストレージのファイル・ストレージは以下の構成で作成されます。

-  マウント・ターゲット `wls4oke-mntTarget`
  - OKEクラスタや管理ホストからマウントするためのエンドポイントを `wls4oke-fss`のサブネットに配置
    ![21_fss_mnt.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/1be5e8fd-c6c2-b3e4-cf71-46a757010dba.png)

- ファイル・システム `wls4oke-fss`
  - WLS for OKEで利用するファイルシステムを `/wls4oke`のパスでマウント・ターゲット`wls4oke-mntTarget`を介してエクスポート
    ![22_fss_fs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/ec1db1e5-33ee-9b05-3d87-b5b740149a21.png)
    
    ![23_fss_fss.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/f34924c4-a131-dc78-d8f7-cd92c3f41b79.png)

## WLS for OKEの全体構成の概観

これまでの構成の内容を図でまとめると、下図のような全体像になります。

![24_diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3119132/6197ec4f-a942-1f04-03e9-ec0aa5b46b78.png)

今回は記事量の観点からセキュリティ・リストの詳細については割愛していますが、環境を作成できる方は是非一度プロビジョニングしていただいて、設定内容を確認いただくことでより理解が深まると思います。

## おわりに

今回の構成はWLS for OKEのプロビジョニング時にVCNごと作成する標準構成としてのネットワーク構成を基準に解説しました。

WLS for OKEは既存のVCNやサブネットに配置する際には、管理ホストとOKEクラスタを同じサブネットに配置する、など柔軟に構成することが可能です。まずはこの標準構成を理解していれば、既存ネットワークに対するゲートウェイやルーティングなどの前提条件も理解しやすくなるかと思いますので、最初に標準構成で作成した環境を眺めて理解していただくことをお薦めします。