# OCI 部署

在 Oracle Cloud Infrastructure 上使用 OKE、自治数据库或 PostgreSQL 和 OCI Cache 部署 Monetarie PIX。

## 前提条件

- 具有适当策略的 OCI 租户
- OCI CLI 已配置
- `kubectl` 已配置 OKE 集群
- 域名 DNS 已配置

## 架构

```mermaid
graph TB
    LB[OCI 负载均衡器] --> OKE[OKE 集群<br/>3 节点]

    subgraph VCN [虚拟云网络]
        OKE --> PG[(OCI PostgreSQL<br/>或自治数据库)]
        OKE --> REDIS[(OCI Cache<br/>Redis)]
        OKE --> NATS[NATS on Compute<br/>3 节点集群]
    end

    OKE -->|出站| BACEN[BACEN RSFN]
```

## 基础设施设置

### OKE 集群

```bash
# 通过 OCI 控制台或 Terraform 创建 OKE 集群
# 区域: sa-saopaulo-1 (圣保罗)
# 节点规格: VM.Standard.E4.Flex (8 OCPU, 32 GB)
# 节点数量: 3
```

### PostgreSQL 数据库

选项 1 -- OCI Database with PostgreSQL：

```bash
# 创建 PostgreSQL 数据库服务
# 规格: VM.Standard.E4.Flex
# 存储: 500 GB
# 启用高可用 (备用实例在不同可用域)
```

选项 2 -- 使用 StatefulSet 和持久卷在 OKE 上部署 PostgreSQL。

### OCI Cache (Redis)

```bash
# 创建 OCI Cache Redis
# 节点规格: VM.Standard.E4.Flex (4 OCPU, 16 GB)
# 集群模式: 启用以实现高可用
```

### NATS 集群

```bash
# 为 NATS JetStream 部署 3 个计算实例
# 规格: VM.Standard.E4.Flex (4 OCPU, 16 GB)
# 子网: VCN 内的私有子网
```

## 应用部署

### 容器注册表 (OCIR)

```bash
# 标记并推送镜像
docker tag pix-backend:latest sa-saopaulo-1.ocir.io/NAMESPACE/monetarie/pix-backend:latest
docker push sa-saopaulo-1.ocir.io/NAMESPACE/monetarie/pix-backend:latest
```

### OCI Vault Secrets

```bash
# 在 OCI Vault 中创建密钥
oci vault secret create-base64 \
  --compartment-id ocid1.compartment... \
  --vault-id ocid1.vault... \
  --key-id ocid1.key... \
  --secret-name database-url \
  --secret-content-content "base64-encoded-value"
```

### 部署到 OKE

```bash
kubectl create namespace pix
kubectl apply -f deploy/backend.yaml
kubectl apply -f deploy/admin-frontend.yaml

# 迁移
kubectl exec -n pix deployment/pix-backend -- bin/monetarie_pix eval "Shared.Release.migrate()"
```

## 成本估算 (sa-saopaulo-1)

| 资源 | 规格 | 月费 (USD) |
|------|------|------------|
| OKE 集群 | 控制平面 (免费) | $0 |
| 计算 (3x) | VM.Standard.E4.Flex 8/32 | ~$650 |
| PostgreSQL | VM.Standard.E4.Flex 8/32 | ~$500 |
| OCI Cache | Redis 集群 | ~$300 |
| NATS VMs (3x) | VM.Standard.E4.Flex 4/16 | ~$350 |
| 负载均衡器 | 灵活型 | ~$25 |
| **合计** | | **~$1,825** |

::: tip OCI 免费套餐
OCI 提供永久免费资源（Ampere A1 实例、自治数据库）。用于测试时，可以利用这些资源显著降低成本。
:::

## 预期结果

完成此部署后：

- OKE 集群在 sa-saopaulo-1 运行，具有 3 个工作节点
- PostgreSQL 数据库具有高可用配置
- Redis 缓存用于速率限制和会话管理
- NATS 3 节点 JetStream 集群
- OCI 负载均衡器具有 TLS 终止
