Permify项目在Fly.io平台上的部署指南
前言
Permify是一个开源的权限服务解决方案,本文将详细介绍如何在Fly.io云平台上部署Permify服务。Fly.io是一个支持容器化部署的云平台,特别适合需要快速部署和扩展的应用场景。
准备工作
在开始部署之前,需要完成以下准备工作:
- 安装Fly.io命令行工具
flyctl
,这是与Fly.io平台交互的主要工具 - 确保拥有Fly.io账户并已完成登录验证
方案一:使用PostgreSQL持久化存储
1. 创建PostgreSQL数据库实例
在Fly.io上创建PostgreSQL数据库实例,用于持久化存储权限数据:
fly postgres create
执行命令后,系统会提示输入数据库名称、选择区域和机器配置。开发环境可以选择基础配置,生产环境建议选择高可用选项。
命令执行完成后,会输出数据库连接信息,包括:
- 用户名
- 密码
- 主机地址
- 连接字符串
重要提示:请妥善保管这些凭证,建议使用专业的密钥管理工具存储。
2. 准备Docker镜像
创建简单的Dockerfile文件:
FROM ghcr.io/permify/permify:latest
这个基础镜像包含了Permify服务的所有必要组件。
3. 配置Fly应用
使用fly launch
命令创建新应用,然后编辑生成的fly.toml
配置文件:
app = 'permify-fly-deploy-with-postgres'
primary_region = 'lax'
[experimental]
cmd = ["serve", "--database-engine=postgres", "--database-uri=postgres://<username>:<password>@permify-psql.flycast:5432"]
[[services]]
internal_port = 3476
protocol = 'tcp'
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 1
processes = ['app']
[[services.ports]]
handlers = ["tls", "http"]
port = 3476
[[services]]
internal_port = 3478
protocol = 'tcp'
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 1
processes = ['app']
[services.ports]
port = 3478
tls_options = { "alpn" = ["h2"] }
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
配置说明:
- 指定了数据库引擎类型和连接字符串
- 暴露了两个服务端口:3476(REST API)和3478(gRPC)
- 配置了自动启停策略和最小运行实例数
- 设置了虚拟机资源规格
4. 部署应用
在包含Dockerfile和fly.toml的目录中执行:
fly deploy
部署完成后,Permify服务将在Fly.io平台上运行,并使用PostgreSQL作为持久化存储。
方案二:不使用数据库的轻量部署
1. 创建项目目录
mkdir permify-fly-deploy
cd permify-fly-deploy
2. 创建Dockerfile
FROM ghcr.io/permify/permify:latest
CMD ["serve"]
3. 初始化Fly配置
执行fly launch
命令,根据提示完成基础配置:
fly launch
4. 修改Fly配置
编辑生成的fly.toml文件:
app = 'permify-fly-deploy'
primary_region = 'lax'
[experimental]
allowed_public_ports = [3476, 3478]
auto_rollback = true
[[services]]
internal_port = 3476
protocol = 'tcp'
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services.ports]]
handlers = ["tls", "http"]
port = 3476
[[services]]
internal_port = 3478
protocol = 'tcp'
auto_stop_machines = 'stop'
auto_start_machines = true
min_machines_running = 0
processes = ['app']
[[services.ports]]
port = 3478
[[vm]]
memory = '1gb'
cpu_kind = 'shared'
cpus = 1
5. 部署应用
fly deploy
部署完成后,可以通过访问https://<your-app-url>:3476/healthz
端点验证服务是否正常运行,预期返回{"status":"SERVING"}
。
部署后验证
无论采用哪种部署方式,部署完成后都应进行以下验证:
- 检查服务健康状态
- 测试API端点是否可访问
- 验证数据库连接(如果使用数据库方案)
- 检查日志是否有错误信息
总结
本文详细介绍了在Fly.io平台上部署Permify服务的两种方案:使用PostgreSQL持久化存储的完整方案和不使用数据库的轻量方案。开发者可以根据实际需求选择合适的部署方式。Fly.io平台提供了便捷的容器化部署能力,结合Permify的权限服务特性,可以快速构建可靠的权限管理系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考