每当我尝试在 Kubernetes 上使用 Helm 安装 Ory Kratos 时,它都不起作用。
这是我的 values.yaml 文件
kratos:
config:
dsn: postgres://admin:[email protected]:5432/postgres_db
secrets:
cookie:
- randomsecret
cipher:
- randomsecret
default:
- randomsecret
identity:
default_schema_id: default
schemas:
- id: default
url: file:///etc/config/identity.default.schema.json
courier:
smtp:
connection_uri: smtps://username:[email protected]
selfservice:
default_browser_return_url: http://127.0.0.1:4455/
automigration:
enabled: true
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 install kratos -f values.yaml ory/kratos。它暂停了一会儿,然后输出 错误:安装失败:预安装失败:等待条件超时
然后它创建一个重复创建 kratos-automigrate pod 的作业,该 pod 在几分钟内崩溃,状态为“错误”并创建一个新的 pod。
我在将 Ory Kratos 部署到 Minikube 实例时遇到了同样的问题,并发现它与 Kratos 脚本无法连接或到达
kratos.config.dsn
中定义的数据库有关。
time=2023-03-03T21:53:26Z level=warning msg=Unable to ping database, retrying. audience=application error=map[message:failed to connect to `host=127.0.0.1 user=foo database=db`: dial error (dial tcp 127.0.0.1:5432: connect: connection refused)
由于在我的例子中 127.0.0.1 解析为容器 IP 而不是主机上的本地实例,因此无法完成此先决条件步骤。更改我机器的主机名后,它能够解析地址并连接到数据库(Postgresql)。
kratos:
config:
dsn: postgres://foo:bar@resovable-address-here:5432/db
...
在 mdaniel 建议使用
kubectl logs
检查 pod 的输出后发现了这一点。