You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kubernetes中通过Helm部署Ory Kratos失败求助

排查Ory Kratos Helm安装失败(automigrate Pod反复崩溃)问题

第一步:查看崩溃Pod的日志

先获取失败Pod的具体名称,再查看日志定位错误原因:

# 列出集群内所有Pod
kubectl get pods
# 替换为你的automigrate Pod名称,查看详细日志
kubectl logs kratos-automigrate-xxxxxx-xxxxx

日志会直接暴露核心问题,比如数据库连接失败、配置格式错误、权限不足等。

常见问题及修复方案

1. 数据库连接异常

你的DSN配置为postgres://admin:Strongpassword@10.43.90.243:5432/postgres_db,需逐一验证:

  • 确认Kubernetes集群网络能访问该PostgreSQL地址的5432端口(如果是集群外数据库,需打通网络)
  • 数据库用户admin必须拥有创建表的DDL权限(自动化迁移需要修改数据库结构)
  • 目标数据库postgres_db需提前创建,Kratos不会自动生成数据库
  • 若密码包含特殊字符(如@、#),需做URL编码(例如@替换为%40)

2. Secrets长度不达标

Ory Kratos对密钥长度有强制要求:

  • Cookie密钥:至少32字节
  • Cipher密钥:至少16字节(AES-128)或32字节(AES-256)
  • Default密钥:至少32字节
    你当前使用的randomsecret长度不足,会导致启动失败。可以用以下命令生成符合要求的随机字符串:
# 生成32字节随机字符串(用于cookie/default)
openssl rand -hex 16
# 生成16字节随机字符串(用于cipher)
openssl rand -hex 8

将生成的字符串替换values.yaml中对应的randomsecret字段。

3. SMTP配置错误

你的SMTP连接URI为smtps://username:password@smtp.gmail.com,需修正:

  • Gmail SMTP需开启“不太安全的应用”(若开启2FA则必须使用App密码)
  • 明确指定端口:smtps://username:password@smtp.gmail.com:465(Gmail SMTPS默认端口为465)
  • 验证账号密码有效性,2FA账号必须使用专门的App密码而非登录密码

4. 身份Schema转义字符错误

你的Schema中使用了HTML转义的",在YAML多行字符串中需直接使用双引号",否则会导致Schema解析失败。修正后的identitySchemas部分:

identitySchemas:
  'identity.default.schema.json': |
    {
      "$id": "https://schemas.ory.sh/presets/kratos/identity.email.schema.json",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "title": "Person",
      "type": "object",
      "properties": {
        "traits": {
          "type": "object",
          "properties": {
            "email": {
              "type": "string",
              "format": "email",
              "title": "E-Mail",
              "ory.sh/kratos": {
                "credentials": {
                  "password": {
                    "identifier": true
                  }
                },
                "recovery": {
                  "via": "email"
                },
                "verification": {
                  "via": "email"
                }
              }
            }
          },
          "required": [
            "email"
          ],
          "additionalProperties": false
        }
      }
    }

修复后重新安装

先清理之前的失败部署残留资源:

helm uninstall kratos
# 删除残留的自动化迁移Job和Pod
kubectl delete job kratos-automigrate
kubectl delete pods --selector app.kubernetes.io/name=kratos

使用修正后的values.yaml重新安装:

helm install kratos -f values.yaml ory/kratos

内容的提问来源于stack exchange,提问作者ninety-ninehundred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:45:47