用户¶
集群内的用户帐户可以分为两个不同的组:
- 应用程序级用户:非特权用户帐户,
- 系统级用户:自动化集群部署和管理任务所需的帐户。
系统用户¶
系统用户的凭据存储为Kubernetes秘密对象。Operator需要在PostgreSQL集群启动前部署。所需机密的名称(cluster1-users默认情况下)应在spec.secretsName选项部署/ cr.yaml配置文件。
系统用户的名称和用途如下表所示。
警告
这些用户不应该用于运行应用程序。
默认的PostgreSQL实例安装通过Percona Operator for PostgreSQL附带以雷竞技下载官网下用户:
| 角色名 | 属性 |
|---|---|
postgres |
超级用户,创建角色,创建数据库,复制,绕过RLS |
primaryuser |
复制 |
pguser |
非特权用户 |
pgbouncer |
的管理用户pgBouncer连接池 |
的postgresUser将是数据库实例的admin用户。的primaryuser用于主副本和副本之间的复制。的pguser默认是非特权用户(您可以在?中配置此用户的不同名称)spec.user自定义资源选项)。
YAML对象格式¶
这些用户的Secrets对象的默认名称是cluster1-users并且可以在集群的CR中设置spec.secretName去不同的地方。当你自己创建对象时,它应该匹配以下简单的格式:
apiVersion:v1种类:秘密元数据:名字:cluster1-users类型:不透明的stringData:pgbouncer:pgbouncer_passwordpostgres:postgres_passwordprimaryuser:primaryuser_passwordpguser:pguser_password
中提供的内容与上面的示例相匹配部署/ secrets.yaml文件。
如你所见,我们使用stringData类型,因此每个键/值对的所有值都以用户方便的纯文本格式声明。但是生成的Secrets对象包含存储为数据-即base64编码的字符串。如果您想要更新任何字段,则需要将值编码为base64格式。要做到这一点,你可以跑步Echo -n "password" | base64——wrap=0(或只是Echo -n "password" | base64在Apple macOS的情况下)在您的本地shell中获取有效值。例如,设置PMM服务器用户的密码为new_password在cluster1-users对象可以通过以下命令实现:
美元kubectl补丁秘密/ cluster1-users- p{“数据”:{“pguser”:“$ (回声- nnew_password|base64——包装=0)““}}”
美元kubectl补丁秘密/ cluster1-users- p{“数据”:{“pguser”:“$ (回声- nnew_password|base64)““}}”
应用程序用户¶
默认情况下,您可以以非特权连接到PostgreSQLpguser用户。此外,您还可以登录为postgres(超级用户)到PostgreSQL Pods,但是pgBouncer(PostgreSQL的连接池)不允许postgres默认为用户访问。这样做是出于安全考虑。
如果你还需要提供postgres用户从外部访问PostgreSQL实例,设置pgBouncer.exposePostgresUser选项中的部署/ cr.yaml配置文件真正的并像往常一样应用更改Kubectl apply -f deploy/cr.yaml命令。
请注意
不建议允许超级用户访问集群。