安装服务
适用于Alpha
先完成部署准备。你不需要源码:Chart 和应用镜像都已经发布,下面的步骤直接使用它们。执行命令前,请替换所有示例域名、地址和凭据。
-
选定要安装的版本,并确认你的机器能访问它的 Chart:
终端窗口 helm show chart oci://ghcr.io/open-rum/charts/openrum --version 0.1.2Chart 默认使用与之配套的
ghcr.io/open-rum/openrum:0.1.2,同时提供 AMD64 和 ARM64 节点的镜像。同一镜像内包含五个服务、迁移工具、控制台和 Browser SDK,所以不需要自己构建或推送。请始终固定--version,并在之后每条命令里使用同一个版本。完成标志:
helm show chart输出version: 0.1.2和appVersion: "0.1.2"。 -
创建运行时 Secret 和 HTTPS 证书
Section titled “创建运行时 Secret 和 HTTPS 证书”先生成首次初始化使用的 Token,并保存在团队的密码管理器中:
终端窗口 openssl rand -hex 32把三个值放进一个私有文件,并替换所有占位值:
runtime.env POSTGRES_DSN=postgres://openrum:REPLACE_PASSWORD@postgres.example:5432/openrum?sslmode=requireCLICKHOUSE_DSN=clickhouse://openrum:REPLACE_PASSWORD@clickhouse.example:9000/openrumBOOTSTRAP_TOKEN=REPLACE_WITH_GENERATED_TOKEN数据库连接中的特殊字符需要 URL 编码;ClickHouse 的端口和 TLS 参数必须与数据库实际配置一致。用这个文件创建 Secret,然后删除文件,因为里面是真实凭据,绝不能提交到 Git:
终端窗口 chmod 600 runtime.envkubectl -n openrum create secret generic openrum-runtime --from-env-file=runtime.envkubectl -n openrum get secret openrum-runtimerm runtime.envChart 只按名字引用这个 Secret,所以也可以用 External Secrets 或 Sealed Secrets 这类密钥管理工具来创建
openrum-runtime。然后把域名证书导入同一个 Namespace;若由证书控制器管理,可使用它生成的 Secret:终端窗口 kubectl -n openrum create secret tls openrum-tls \--cert=/path/to/certificate-chain.pem --key=/path/to/private-key.pem完成标志:
openrum-runtime、openrum-tls都存在。首次初始化 Token 已保存,后续会在创建管理员时使用。 -
填写部署配置
Section titled “填写部署配置”创建
values.production.yaml:values.production.yaml config:appEnv: productionpublicBaseURL: https://rum.example.comexistingSecret: openrum-runtimekafkaBrokers: kafka-0:9092,kafka-1:9092,kafka-2:9092kafkaEventTopic: rum-events-v1kafkaRetentionDuration: 168h# 替换为你实际管理的 Ingress 代理地址段。ingestTrustedProxies: "10.42.0.0/16"# Chart 默认自带 Redis。要使用你自己的 Redis:# redis:# mode: external# external:# address: redis.example:6379ingress:enabled: trueclassName: nginxhost: rum.example.comtls:- hosts: [rum.example.com]secretName: openrum-tls# 只有使用自己的镜像或镜像仓库时才需要:# image:# repository: registry.example.com/openrum# tag: alpha-deploy-001publicBaseURL和host:浏览器真正访问的域名;生产要求 HTTPS。- Kafka 地址,以及使用自己的 Redis 时的 Redis 地址:Pod 实际可访问的端点,不是开发机的
localhost。自带 Redis 是单实例,见 Redis:自带或外部。 ingestTrustedProxies:只填自己管理的代理地址段,让限流能识别真实客户端 IP。className:与你安装的 Ingress Controller 一致。image:不写就使用与 Chart 版本配套的已发布镜像。
对象存储配置可先全部留空。更多选项见 Helm values。
完成标志: 示例地址均已替换,域名已解析到 Ingress,Secret 名称与上一步一致。
-
先渲染一次 Chart。values 文件里的错误会在这里失败,不会碰到集群:
终端窗口 helm template openrum oci://ghcr.io/open-rum/charts/openrum \--version 0.1.2 --namespace openrum \--values values.production.yaml > /dev/null然后安装,运行 Chart 自带的测试,并查看启动了什么:
终端窗口 helm upgrade --install openrum oci://ghcr.io/open-rum/charts/openrum \--version 0.1.2 --namespace openrum \--values values.production.yaml \--wait --timeout 15mhelm test openrum --namespace openrumkubectl -n openrum get pods,deploy,ingress安装先运行数据库迁移,再启动应用。部署或健康测试失败时查看:
终端窗口 kubectl -n openrum get jobskubectl -n openrum logs -l app.kubernetes.io/component=migration --tail=100kubectl -n openrum logs deploy/openrum-api --tail=100kubectl -n openrum describe pods完成标志: Helm 安装及测试成功,五个 Deployment 可用,打开
https://rum.example.com没有证书错误。服务健康还不能代替真实事件上报验证。
Release Alpha · commit local