ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

使用 Vagrant 一键搭建 OpenReplay 本地开发环境:从虚拟机到可调试的 Session Replay 平台

使用 Vagrant 一键搭建 OpenReplay 本地开发环境:从虚拟机到可调试的 Session Replay 平台 可观测性开发工具前端后端【免费下载链接】openreplaySession replay, cobrowsing and product analytics you can self-host. Best for reproducing issues and iterating on your product.项目地址https://gitcode.com/gh_mirrors/op/openreplay点击查看免费下载OpenReplay 是一套可自托管的 Session Replay、实时协同浏览与产品分析平台其生产部署基于 Kubernetes/Helm本地开发同样需要一套完整的容器化基础设施。本指南以仓库中的 scripts/dev_env/vagrant/README.md 与 Vagrantfile 为核心讲解如何用 Vagrant VirtualBox 在 Intel/AMD 机器上开箱即用地拉起一套 OpenReplay 开发环境并深入剖析虚拟机内部的自动化供应脚本与底层 Helm 部署链路。读完后你将掌握从vagrant up到浏览器注册账号、再到用快照管理开发基线的完整本地开发闭环。一、为什么需要 Vagrant 开发环境OpenReplay 的完整运行依赖 PostgreSQL、ClickHouse、Kafka、Redis、MinIO、Nginx Ingress 等一批中间件并且官方通过 Helm Chart 将它们编排在 Kubernetesk3s之上。直接在宿主机上手动安装这些依赖既繁琐又容易污染系统环境因此仓库在 scripts/dev_env/README.md 中给出了两条开发环境搭建路线Intel/AMD 机器使用 Vagrant 方案即本篇文章的主题——用虚拟机承载完整的 Kubernetes 集群与 OpenReplay 应用Mac M1Apple Silicon机器使用 Colima 方案通过 Colima 在本地运行 x64 容器镜像VirtualBox 目前不支持 Mac M1。Vagrant 方案的核心价值在于可复现 可回滚一份 Vagrantfile 定义了虚拟机的规格与一键供应脚本任何团队成员都能在几分钟内得到完全一致的环境配合快照snapshot机制随时可以回到一个已知可用的基线版本。二、前置条件安装 Vagrant 与 VirtualBox开始之前需要在本机安装两个工具Vagrant虚拟机生命周期管理工具负责定义、启动、销毁虚拟机并执行初始化脚本VirtualBoxVagrant 的虚拟化后端provider为虚拟机提供 CPU、内存与磁盘资源。从各自的官方下载页获取对应平台的安装包并完成安装即可Windows 用户安装后建议确认vagrant命令已加入 PATH。安装完成后可用以下命令验证环境vagrant --version VBoxManage --version注意平台限制仓库在 scripts/vagrant/README.md 中明确提示VirtualBox 目前不支持 Mac M1虽然可以尝试以 VMware 作为 Vagrant 后端但该组合未被官方测试验证。因此本方案面向 Intel/AMD 机器M1 用户请参考 Colima 方案。三、拉取配置并启动虚拟机准备好前置工具后创建目录、克隆仓库dev 分支、复制 Vagrant 配置并启动mkdir openreplay-contributions cd openreplay-contributions git clone https://gitcode.com/gh_mirrors/op/openreplay -b dev cp -rf openreplay/scripts/vagrant/ . vagrant up几点说明-b dev指定克隆 dev 分支确保与开发中的代码保持同步当前仓库中该 Vagrant 配置存放于 scripts/dev_env/vagrant/内含README.md与Vagrantfile旧路径 scripts/vagrant/ 下也保留着一份等价配置README 中沿用的是scripts/vagrant/路径vagrant up是核心命令它会首次下载基础镜像box、创建虚拟机、执行供应脚本全程可能需要数分钟到十几分钟取决于网络状况。启动成功后终端会打印出虚拟机的 IP 地址以及后续访问 OpenReplay 所需的操作提示。四、深入解读 Vagrantfile虚拟机规格与一键供应脚本scripts/dev_env/vagrant/Vagrantfile 完整定义了这台开发虚拟机。逐段拆解如下。4.1 基础镜像与虚拟机标识config.vm.box peru/ubuntu-20.04-server-amd64 config.vm.define openreplay-dev使用peru/ubuntu-20.04-server-amd64作为基础镜像Ubuntu 20.04 Serveramd64 架构虚拟机被命名为openreplay-dev后续vagrant snapshot、vagrant ssh等命令都以此标识该机器。4.2 网络配置DHCP 私有网络config.vm.network private_network, type: dhcp虚拟机使用 DHCP 分配一个私有网络 IP宿主机可访问。这个 IP 会在vagrant up的输出中给出是后面配置域名解析的关键信息。README 中Add ip address from about output to your local resolver指的就是它。4.3 同步目录宿主机与虚拟机共享代码config.vm.synced_folder ./, /home/vagrant/openreplay-dev/将当前目录即复制进来的 openreplay 代码目录同步挂载到虚拟机内的/home/vagrant/openreplay-dev/。这意味着你在宿主机上修改代码虚拟机内立即可见是在本地写代码、在虚拟机里跑服务的开发模式基础。4.4 VirtualBox Provider 资源配额config.vm.provider virtualbox do |vb| vb.gui false vb.cpus 2 vb.memory 4096 end以无界面headless模式运行不弹出 VirtualBox 图形窗口分配2 个 CPU 核心、4096 MB4 GB内存。请确保宿主机能满足这一资源开销——OpenReplay 全家桶k3s 各中间件对内存比较敏感内存不足会导致启动失败或服务频繁重启。4.5 Shell 供应脚本开机即完成整套部署config.vm.provision shell, inline: -SHELL ... SHELL段是整套自动化部署的灵魂虚拟机启动后会按顺序执行以下步骤解析 IP 并写入/etc/hosts通过ip r | tail -n1 | awk {print $NF}拿到虚拟机 IP把openreplay.local域名解析写入虚拟机的/etc/hosts安装基础工具apt-get install -y git curl安装 Dockercurl -fsSL https://get.docker.com | sh -并把vagrant用户加入 docker 组克隆 OpenReplay 仓库在虚拟机内再次克隆仓库到infra目录调整 k3s 容器运行时将 scripts/helmcharts/init.sh 中 k3s 的安装参数追加--docker让 k3s 直接使用第 3 步装好的 Docker 作为容器运行时而非默认的 containerd执行安装脚本DOMAIN_NAMEopenreplay.local bash init.sh这是真正把 OpenReplay 全家桶部署到 k3s 集群里的步骤拷贝集群凭证与配置把/root/.kubek3s 的 kubeconfig与安装生成的vars.yaml复制到共享目录方便后续用kubectl和 helm 在宿主机侧管理集群。五、底层部署链路init.sh 与 vars.yaml 做了什么Vagrantfile 调用的 scripts/helmcharts/init.sh 是 OpenReplay 一键安装脚本其main函数按顺序执行四个阶段均可用环境变量跳过conditional_step SKIP_K8S_INSTALL install_k8s Skipping Kubernetes installation. conditional_step SKIP_K8S_TOOLS install_tools Skipping Kubernetes tools installation. conditional_step SKIP_ROTATE_SECRETS create_passwords Skipping secrets rotation. conditional_step SKIP_OR_INSTALL install_openreplay_actions Skipping OpenReplay installation.各阶段要点install_k8s安装 k3s锁定版本v1.31.5k3s1通过K3S_RESOLV_CONF指定 DNS、--disabletraefik关闭内置 Ingress由 OpenReplay 自己的 ingress-nginx 接管并把 kubeconfig 放到~/.kube/configcreate_passwords读取vars.yaml用templater将{{ randAlphaNum 20 }}占位符渲染为随机密码/密钥并写入global.domainNameinstall_openreplay_actions创建存储目录/openreplay/storage/nfs并赋予1001:1001权限然后通过 helm 依次安装三套 Charthelm upgrade --install toolings ./toolings -n app --create-namespace --wait -f ./vars.yaml --atomic --debug helm upgrade --install databases ./databases -n db --create-namespace --wait -f ./vars.yaml --atomic --debug helm upgrade --install openreplay ./openreplay -n app --create-namespace --wait -f ./vars.yaml --atomic --debug即先装工具链ingress-nginx、cert-manager 等对应 toolings/再装数据库对应 databases/最后装应用本体对应 openreplay/。脚本末尾还会把openreplay-cli安装到/bin/openreplay并提示用openreplay -h查看集群管理命令。5.1 关键配置项vars.yaml所有部署参数集中在 scripts/helmcharts/vars.yaml以下是本地开发环境最核心的几组配置块关键字段默认值 / 说明postgresqlpostgresqlHost/Portpostgresql.db.svc.cluster.local:5432主数据库clickhousechHost、use_tlsclickhouse-openreplay-clickhouse.db.svc.cluster.local分析型存储use_tls: falseredisredisHost/Portredis-master.db.svc.cluster.local:6379缓存/队列kafkakafkaHost、replicationFactorkafka.db.svc.cluster.local:9092消息队列社区版默认enabled: falseminioenabled、accessKey/secretKey默认开启作为本地 S3 对象存储global.s3endpoint、assetsBucket、recordingsBucket等http://minio.db.svc.cluster.local:9000桶包括sessions-assets、mobs、sourcemaps、spots等globalassistKey、jwtSecret、tokenSecret等随机生成的服务间密钥与 JWT 密钥global.domainName—由DOMAIN_NAME环境变量注入本方案为openreplay.local对于单节点本地安装global.pvcRWXName默认为hostPath无需共享存储若集群多节点才需要改成 RWX PVC。六、访问 OpenReplay配置本地域名解析OpenReplay 的 Web 界面通过openreplay.local这个域名对外提供服务因此宿主机必须把该域名解析到虚拟机的 IP。Vagrant 供应脚本执行完毕后会在输出中打印出可复制的命令。Mac / Linux直接复制粘贴vagrant up输出中给出的命令即可其本质是往/etc/hosts中追加一条记录sudo -- sh -c grep -q openreplay.local /etc/hosts || echo $IP_ADDR openreplay.local /etc/hosts sudo sed -i s/.*openreplay.local/${IP_ADDR} openreplay.local/g /etc/hosts; grep openreplay.local /etc/hosts其中$IP_ADDR替换为vagrant up输出中的虚拟机 IP例如192.168.50.4 openreplay.local。WindowsWindows 10 / Windows 8按Windows 键在搜索框输入Notepad在搜索结果中右键点击记事本选择以管理员身份运行在记事本中打开文件c:\Windows\System32\Drivers\etc\hosts在文件末尾追加一行IP 替换为 vagrant 输出中的地址ip address from vagrant output openreplay.local选择文件 保存。注册账号并进入系统完成解析后打开浏览器访问注册页http://openreplay.local/signup创建账号后即可进入 OpenReplay 控制台开始体验 Session Replay、产品分析等功能。若只是试用README 给出的入口是http://openreplay.local。七、开始开发同步目录与各组件开发指南由于 Vagrantfile 通过config.vm.synced_folder将代码目录挂载到了虚拟机内的/home/vagrant/openreplay-dev/宿主机上的源码修改会实时反映到虚拟机中。在本地开发时可以结合各子项目的开发文档进行针对性调试前端开发指南Web 控制台React/TypeScript的本地启动与调试API 开发指南后端 API 服务Python/Chalice的开发说明Backend 开发指南数据管道Go的构建与运行方式。开发完成后通过vagrant ssh进入虚拟机使用kubectl凭证已拷贝到/home/vagrant/.kube或openreplayCLI 查看服务状态与日志。八、快照机制为开发基线上一道保险OpenReplay 组件众多一次错误的配置改动可能导致整个环境异常。README 强烈建议在初始安装完成后立即保存一份快照这样任何时刻都能回滚到已知稳定的版本# 进入配置目录即挂载目录所在位置 cd openreplay-dev # 保存快照命名为可识别的版本标识 vagrant snapshot save openreplay-160-base实际使用时可以把快照名换成你的版本号例如openreplay-160-base表示基于 v1.6.0 的基础环境。需要回滚时cd openreplay-dev vagrant snapshot restore openreplay-160-base两点提醒快照依赖基础虚拟机存在一旦基础 VM 被删除如执行vagrant destroy后再vagrant up重建快照将不可用恢复快照会丢弃之后的所有状态建议在改动前先手动保存新快照。九、常见问题与注意事项Mac M1 无法使用本方案VirtualBox 不支持 Apple SiliconIntel/AMD 机器请用本文方案M1 用户改用 Colima 方案colima start --with-kubernetes --cpu 2 --memory 8 -p openreplay然后SKIP_K8S_INSTALL1 SKIP_K8S_TOOLS1 DOMAIN_NAMEopenreplay.local bash -x init.sh。资源不足导致启动失败Vagrantfile 默认分配 2 CPU / 4 GB 内存若宿主机构建虚拟机时资源紧张可调整vb.cpus与vb.memory后重新vagrant up同理若集群内 MinIO 等组件出现资源限额resources limits导致 CrashLoop可在vars.yaml中为对应组件调高 limits。k3s 使用 Docker 运行时的原因Vagrantfile 特意将 k3s 的INSTALL_K3S_EXEC追加--docker参数使 k3s 复用虚拟机内已安装的 Docker daemon便于在开发机上直接观察容器与镜像而不是让 k3s 自带 containerd。域名解析不生效检查宿主机/etc/hosts或 Windows 的c:\Windows\System32\Drivers\etc\hosts中openreplay.local对应的 IP 是否与vagrant up输出一致——DHCP 网络在虚拟机重建后 IP 可能变化。结语Vagrant 方案把 OpenReplay 整套开发环境的搭建收敛成了一条命令 一个 Vagrantfile从 Ubuntu 虚拟机、Docker、k3s 集群到三套 Helm Chart 的编排部署全部自动化完成。结合快照机制开发者可以安心地在共享代码目录中修改前端、API 或后端代码随时回滚到稳定的基线版本。若你使用的是 Apple Silicon 设备则请转向 Colima 路线两者的部署脚本最终都汇入同一套 init.sh 与 vars.yaml 配置体系。赞分享可观测性开发工具前端后端【免费下载链接】openreplaySession replay, cobrowsing and product analytics you can self-host. Best for reproducing issues and iterating on your product.项目地址https://gitcode.com/gh_mirrors/op/openreplay点击查看免费下载相关推荐OpenReplay 本地开发环境搭建指南基于 Vagrant 与 VirtualBox 的一键式开发虚拟机方案OpenReplay 本地开发环境搭建指南基于 Vagrant 与 VirtualBox 的一键式开发虚拟机方案 本文基于 scripts/vagrant/R可观测性开发工具前端后端Symfony/Translation调试环境使用Vagrant搭建一致开发环境Symfony/Translation调试环境使用Vagrant搭建一致开发环境 想要高效开发和调试symfony/translation组件吗Vagran国际化后端Watchman 构建验证环境用 Vagrant 搭建可复现的多平台构建虚拟机Watchman 构建验证环境用 Vagrant 搭建可复现的多平台构建虚拟机 本指南基于 watchman/build/vagrant/README.md后端开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表