Cerbos项目在云平台上的部署指南
Cerbos作为一款现代化的授权解决方案,其云原生特性使其能够灵活部署在各种云平台上。本文将深入讲解如何在AWS和Fly.io两大主流云平台上部署Cerbos服务。
AWS平台部署方案
EKS部署流程
准备工作:IAM策略配置
在EKS上部署Cerbos前,需要配置适当的IAM权限。核心是创建允许AWS Marketplace计量注册的IAM策略。以下是典型策略配置:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": ["aws-marketplace:RegisterUsage"],
"Effect": "Allow",
"Resource": "*"
}
]
}
服务账户与IAM角色绑定
使用eksctl工具可以自动化完成以下操作:
- 创建IAM角色并附加策略
- 在集群中创建Kubernetes服务账户
- 建立IAM角色与服务账户的信任关系
执行命令示例:
eksctl create iamserviceaccount \
--name cerbos-serviceaccount \
--attach-policy-arn arn:aws:iam::aws:policy/AWSMarketplaceMeteringRegisterUsage \
--namespace default \
--cluster YOUR_CLUSTER_NAME \
--approve \
--override-existing-serviceaccounts
部署配置要点
部署时需要特别注意:
- 创建包含Cerbos Hub凭证的Kubernetes Secret
- 配置values文件指定服务账户和存储驱动
- 设置审计日志收集路径
典型values文件内容:
serviceAccount:
name: cerbos-serviceaccount
cerbos:
config:
storage:
driver: "hub"
hub:
remote:
bundleLabel: "YOUR_LABEL"
audit:
enabled: true
backend: "hub"
hub:
storagePath: /audit_logs
ECS部署方案
任务角色配置
ECS部署同样需要配置任务IAM角色,策略内容与EKS类似。创建角色后,需要在任务定义中引用其ARN。
任务定义关键参数
ECS任务定义中需要特别注意:
- 容器端口映射(3592和3593)
- 环境变量配置(Cerbos Hub凭证)
- 健康检查设置
- 任务角色ARN引用
典型任务定义片段:
{
"containerDefinitions": [
{
"name": "cerbos",
"image": "{app-aws-img}",
"portMappings": [
{"containerPort": 3592, "protocol": "tcp"},
{"containerPort": 3593, "protocol": "tcp"}
],
"environment": [
{"name": "CERBOS_HUB_CLIENT_ID", "value": "YOUR_CLIENT_ID"}
],
"healthCheck": {
"command": ["CMD", "/cerbos", "healthcheck"],
"interval": 30
}
}
],
"taskRoleArn": "YOUR_TASK_ROLE_ARN"
}
Fly.io平台部署方案
基础部署配置
Fly.io部署使用fly.toml文件定义应用配置。基础配置包括:
- 应用名称和区域设置
- 容器镜像指定
- 服务端口定义(3592和3593)
- 健康检查端点配置
- 资源分配(CPU和内存)
典型配置示例:
app = 'cerbos-app'
primary_region = 'lax'
[build]
image = 'ghcr.io/cerbos/cerbos:latest'
[[services]]
internal_port = 3592
[[services.ports]]
port = 3592
handlers = ['tls', 'http']
高级存储方案
使用Tigris作为策略存储
Tigris作为Fly.io提供的S3兼容存储,适合作为Cerbos的策略仓库。部署步骤:
- 创建存储桶并记录凭证
- 设置应用密钥
- 配置blob驱动参数
关键配置参数:
[experimental]
cmd = [
'server',
'--set', 'storage.driver=blob',
'--set', 'storage.blob.bucket=s3://BUCKET_NAME?endpoint=fly.storage.tigris.dev'
]
使用LiteFS分布式SQLite
LiteFS提供分布式SQLite存储,适合需要高可用的场景。部署要点:
- 创建litefs.yml配置文件
- 构建包含LiteFS的自定义Docker镜像
- 配置挂载点和Consul租约
典型litefs.yml配置:
exec:
- cmd: "/cerbos server --set=storage.driver=sqlite3 --set=storage.sqlite3.dsn=file:/litefs/db"
fuse:
dir: "/litefs"
部署最佳实践
- 资源规划:生产环境建议至少1GB内存和1个vCPU
- 网络配置:确保安全组允许3592/3593端口访问
- 监控设置:配置好健康检查和指标收集
- 存储选择:根据团队工作流选择合适的存储后端
- 版本管理:使用明确的镜像标签而非latest
通过以上方案,您可以在AWS或Fly.io平台上快速部署高可用的Cerbos授权服务,为您的应用提供强大的权限管理能力。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考