# Oracle CloudとのVPCピアリング接続

本ドキュメントでは、Local Peering Gateway（LPG）を使用してEMQX CloudとOracle Cloud Infrastructure（OCI）間でVPCピアリング接続を作成する方法について説明します。

この構成では：

- Oracle Cloudリソースが存在するVirtual Cloud Network（VCN）がリクエスター側として機能します。
- EMQX Cloudのデプロイメントが存在するVCNがピアリング接続のアクセプター側として機能します。

## 前提条件

開始する前に、以下を確認してください：

- Oracle CloudのVCNとEMQX Cloudのデプロイメントが同じリージョンにあること。
- Oracle CloudのVCNのCIDRブロックがEMQX CloudのVCNのCIDRブロックと重複していないこと。
- Oracle CloudでVCN、Local Peering Gateway、ルートテーブル、およびセキュリティルールを管理する十分な権限を持っていること。

## VPCピアリング接続の作成

### ステップ1：Oracle Cloudから必要なOCIDを収集する

ピアリング接続を開始する前に、Oracle Cloudアカウントから以下のOCIDを収集してください。これらはEMQX Cloudコンソールで接続リクエストを送信する際に必要です。

#### グループOCIDの取得

1. Oracle Cloudコンソールで、**Identity & Security** -> **Identity** -> **Domains** に移動します。

2. 既存のドメイン（例：`Default`）を開くか、新規作成します。

   ![domains](./_assets/vpc_oracle/domains.png)

3. ドメイン内で、**User Management** -> **Groups** に移動し、既存のグループを選択するか、**Create group** をクリックして新規作成します。

   ピアリング接続を確立するユーザーがグループに含まれていることを確認してください。

   ![user_groups](./_assets/vpc_oracle/user_groups.png)

4. グループを開き、グループ詳細に表示される**OCID**をコピーします。

   ![group_ocid](./_assets/vpc_oracle/group_ocid.png)

#### コンパートメントOCIDの取得

1. **Identity & Security** -> **Identity** -> **Compartments** に移動します。

2. EMQX CloudとピアリングするVCNが含まれるコンパートメントを選択します。

3. コンパートメント詳細ページから**OCID**をコピーします。

   ![compartment_ocid](./_assets/vpc_oracle/compartment_ocid.png)

#### テナンシーOCIDの取得

1. **Governance & Administration** -> **Account Management** -> **Tenancy Details** に移動します。

2. **General Information** セクションから**OCID**をコピーします。

   ![tenancy_ocid](./_assets/vpc_oracle/tenancy_ocid.png)

### ステップ2：EMQX Cloudでピアリング接続を開始する

1. EMQX Cloudコンソールにログインし、対象デプロイメントの**Deployment Overview**ページに移動します。

2. 左側ナビゲーションメニューから**Network Management**をクリックします。

3. **VPC Peering Connection**セクションで、**+ VPC Peering Connection**をクリックします。

   ダイアログページで**Region of Deployment**を確認し、Oracle CloudのVCNのリージョンと一致していることを確認してください。

   <img src="./_assets/vpc_oracle/region_of_deployment.png" alt="region_of_deployment" style="zoom:67%;" />

4. ステップ1で収集した**Requestor Tenancy OCID**と**Requestor Group OCID**を入力し、**Confirm**をクリックします。

5. 認証が完了したら、**Create Local Peering Gateway**をクリックします。

   EMQX Cloudは自動的に自身のVCNにLocal Peering Gatewayを作成し、以下の情報を表示します：

   - **Local Peering Gateway OCID**
   - **Acceptor Tenancy OCID**
   - **Region of Deployment**
   - **EMQX Cloud VCNのCIDR**

   次のステップで使用するため、このダイアログは開いたままにしてください。

   <img src="./_assets/vpc_oracle/vpc_guidelines.png" alt="vpc_guidelines" style="zoom:67%;" />

### ステップ3：Oracle CloudでIAMポリシーを設定する

クロステナンシーのピアリング接続を許可するために、Oracle CloudでIAMポリシーを作成する必要があります。ポリシーは**ルートコンパートメント（テナンシー）レベル**で作成してください。

1. Oracle Cloudコンソールで、**Identity & Security** -> **Policies** に移動します。

2. **Create Policy**をクリックします。

3. **Policy Builder**セクションで、**Show manual editor**をクリックします。

   ![policy_builder](./_assets/vpc_oracle/policy_builder.png)

4. 以下のポリシーステートメントを入力し、プレースホルダーを実際の値に置き換えます：

   ```
   Define tenancy Acceptor as <Acceptor Tenancy OCID>
   Allow group <Requestor Group> to manage local-peering-from in compartment id <Requestor Compartment ID>
   Endorse group <Requestor Group> to manage local-peering-to in tenancy Acceptor
   Endorse group <Requestor Group> to associate local-peering-gateways in compartment id <Requestor Compartment ID> with local-peering-gateways in tenancy Acceptor
   ```

   - `<Acceptor Tenancy OCID>`：ステップ2のEMQX Cloudダイアログで表示された**Acceptor Tenancy OCID**。
   - `<Requestor Group>`：`'Domain'/'group-name'`形式のグループ名（例：`'Default'/'cloud-test-group'`）。
   - `<Requestor Compartment ID>`：ステップ1で収集した**コンパートメントOCID**。

5. ポリシーを保存します。

   ![policy_statements](./_assets/vpc_oracle/policy_statements.png)

### ステップ4：Oracle CloudでLocal Peering Gatewayを作成する

1. **Oracle Cloudコンソール**にログインします。

2. 上部の検索バーで**Virtual Cloud Networks**を検索し、Oracle CloudリソースがデプロイされているVCNを開きます。

3. VCN詳細ページで、左側ナビゲーションから**Gateways**を選択します。

4. **Local Peering Gateways**セクションで、**Create Local Peering Gateway**をクリックします。

5. 名前（例：`vpc-peering-lpg`）を入力し、適切なコンパートメントを選択します。

   ![create_local_peering_gateway](./_assets/vpc_oracle/create_local_peering_gateway.png)

6. **Create**をクリックします。

### ステップ5：ピアリング接続を確立する

1. **Local Peering Gateways**リストで、作成したLPGを探します。

2. **Actions**メニュー（⋯）をクリックし、**Establish Peering Connection**を選択します。

   ![establish_peering_connection](./_assets/vpc_oracle/establish_peering_connection.png)

3. **Establish Peering Connection**ページで：

   - **Enter Local Peering Gateway OCID**を選択します。
   - EMQX Cloudコンソールから取得した**Local Peering Gateway OCID**を貼り付けます。

   ![enter_lpg_ocid](./_assets/vpc_oracle/enter_lpg_ocid.png)

4. **Establish Peering Connection**をクリックします。

**Peering Status**が**Peered**に変わるまで待ちます。

### ステップ6：ルートテーブルを設定する

ピアリング接続が確立したら、EMQX Cloud VCNへのトラフィックを許可するためにルートテーブルを更新する必要があります。

1. Oracle CloudコンソールでVCN詳細ページに戻ります。

2. **Routing**タブを選択します。

3. Oracle Cloudリソースが存在するサブネットに関連付けられている**ルートテーブル**を探します。

4. **Add Route Rules**をクリックし、以下を設定します：

   - **Target Type**：`Local Peering Gateway`
   - **Destination CIDR Block**：EMQX Cloud VCNのCIDR
   - **Target Local Peering Gateway compartment**：Local Peering Gatewayを作成したコンパートメントを選択
   - **Target Local Peering Gateway**：このピアリング接続用に作成したLocal Peering Gatewayを選択

   ![add_route_rules](./_assets/vpc_oracle/add_route_rules.png)

5. ルートルールを保存します。

### ステップ7：セキュリティルールを設定する

最後に、EMQX Cloud VCNからのトラフィックを許可するためにセキュリティルールを更新します。

1. VCN詳細ページで**Security**タブを開きます。

2. Oracle Cloudリソースに関連付けられている**Security Lists**または**Network Security Groups（NSGs）**を探します。

3. EMQX CloudのCIDRブロックからのトラフィックを許可する**Ingress Rules**を追加します。

   - **Source**：EMQX Cloud VCNのCIDR
   - **IP Protocol**：TCP（または必要に応じて）
   - **Destination Port Range**：アプリケーションの要件に応じて設定

4. 変更を保存します。

   ![ingress_rules](./_assets/vpc_oracle/ingress_rules.png)

## VPCピアリング接続の削除

ピアリング接続を削除するには、VPCピアリング接続のステータスが**Running**であることを確認してください。

::: tip

ピアリング接続を削除する前に、デプロイメントに関連するリソースが存在しないことを必ず確認してください。そうしないと予期しないリスクが発生する可能性があります。

:::

1. デプロイメントの**Network Management**ページのVPCピアリング接続エリアに移動します。

2. ピアリング接続の**Actions**列にある「削除」アイコンをクリックします。
