跳转到内容
Docs

安装服务

适用于Alpha

先完成部署准备。你不需要源码:Chart 和应用镜像都已经发布,下面的步骤直接使用它们。执行命令前,请替换所有示例域名、地址和凭据。

  1. 选定要安装的版本,并确认你的机器能访问它的 Chart:

    终端窗口
    helm show chart oci://ghcr.io/open-rum/charts/openrum --version 0.1.2

    Chart 默认使用与之配套的 ghcr.io/open-rum/openrum:0.1.2,同时提供 AMD64 和 ARM64 节点的镜像。同一镜像内包含五个服务、迁移工具、控制台和 Browser SDK,所以不需要自己构建或推送。请始终固定 --version,并在之后每条命令里使用同一个版本。

    完成标志: helm show chart 输出 version: 0.1.2 和 appVersion: "0.1.2"。

  2. 先生成首次初始化使用的 Token,并保存在团队的密码管理器中:

    终端窗口
    openssl rand -hex 32

    把三个值放进一个私有文件,并替换所有占位值:

    runtime.env
    POSTGRES_DSN=postgres://openrum:REPLACE_PASSWORD@postgres.example:5432/openrum?sslmode=require
    CLICKHOUSE_DSN=clickhouse://openrum:REPLACE_PASSWORD@clickhouse.example:9000/openrum
    BOOTSTRAP_TOKEN=REPLACE_WITH_GENERATED_TOKEN

    数据库连接中的特殊字符需要 URL 编码;ClickHouse 的端口和 TLS 参数必须与数据库实际配置一致。用这个文件创建 Secret,然后删除文件,因为里面是真实凭据,绝不能提交到 Git:

    终端窗口
    chmod 600 runtime.env
    kubectl -n openrum create secret generic openrum-runtime --from-env-file=runtime.env
    kubectl -n openrum get secret openrum-runtime
    rm runtime.env

    Chart 只按名字引用这个 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 已保存,后续会在创建管理员时使用。

  3. 创建 values.production.yaml:

    values.production.yaml
    config:
    appEnv: production
    publicBaseURL: https://rum.example.com
    existingSecret: openrum-runtime
    kafkaBrokers: kafka-0:9092,kafka-1:9092,kafka-2:9092
    kafkaEventTopic: rum-events-v1
    kafkaRetentionDuration: 168h
    # 替换为你实际管理的 Ingress 代理地址段。
    ingestTrustedProxies: "10.42.0.0/16"
    # Chart 默认自带 Redis。要使用你自己的 Redis:
    # redis:
    # mode: external
    # external:
    # address: redis.example:6379
    ingress:
    enabled: true
    className: nginx
    host: rum.example.com
    tls:
    - hosts: [rum.example.com]
    secretName: openrum-tls
    # 只有使用自己的镜像或镜像仓库时才需要:
    # image:
    # repository: registry.example.com/openrum
    # tag: alpha-deploy-001
    • publicBaseURL 和 host:浏览器真正访问的域名;生产要求 HTTPS。
    • Kafka 地址,以及使用自己的 Redis 时的 Redis 地址:Pod 实际可访问的端点,不是开发机的 localhost。自带 Redis 是单实例,见 Redis:自带或外部。
    • ingestTrustedProxies:只填自己管理的代理地址段,让限流能识别真实客户端 IP。
    • className:与你安装的 Ingress Controller 一致。
    • image:不写就使用与 Chart 版本配套的已发布镜像。

    对象存储配置可先全部留空。更多选项见 Helm values。

    完成标志: 示例地址均已替换,域名已解析到 Ingress,Secret 名称与上一步一致。

  4. 先渲染一次 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 15m
    helm test openrum --namespace openrum
    kubectl -n openrum get pods,deploy,ingress

    安装先运行数据库迁移,再启动应用。部署或健康测试失败时查看:

    终端窗口
    kubectl -n openrum get jobs
    kubectl -n openrum logs -l app.kubernetes.io/component=migration --tail=100
    kubectl -n openrum logs deploy/openrum-api --tail=100
    kubectl -n openrum describe pods

    完成标志: Helm 安装及测试成功,五个 Deployment 可用,打开 https://rum.example.com 没有证书错误。服务健康还不能代替真实事件上报验证。

Release Alpha · commit local