
movetokube/postgres-operator该操作器用于在Kubernetes环境中管理外部PostgreSQL服务器,通过自定义资源(CR)实现数据库和角色的声明式创建,自动生成包含数据库连接信息的Kubernetes密钥,简化外部PostgreSQL服务与Kubernetes应用的集成。
适用于Kubernetes环境中需要管理外部PostgreSQL数据库的场景,支持通过自定义资源实现数据库和用户角色的声明式管理,适用于AWS RDS或Azure PostgreSQL等云托管PostgreSQL服务的集成。
要使操作器与AWS RDS正常工作,需将POSTGRES_CLOUD_PROVIDER设置为AWS,可通过ext-postgres-operator的Kubernetes密钥或直接在部署清单(operator.yaml)中配置。
要使操作器与Azure托管PostgreSQL数据库正常工作,需为操作器提供两个环境变量:
POSTGRES_CLOUD_PROVIDER设置为AzurePOSTGRES_DEFAULT_DATABASE设置为默认数据库,例如postgres操作器需要在其所在命名空间中创建Kubernetes Secret,该Secret需包含以下键:POSTGRES_HOST、POSTGRES_USER、POSTGRES_PASS、POSTGRES_URI_ARGS、POSTGRES_CLOUD_PROVIDER、POSTGRES_DEFAULT_DATABASE。
yamlapiVersion: v1 kind: Secret metadata: name: ext-postgres-operator namespace: operators type: Opaque data: POSTGRES_HOST: cG9zdGdyZXM= # base64编码的PostgreSQL主机地址 POSTGRES_USER: cG9zdGdyZXM= # base64编码的PostgreSQL管理员用户名 POSTGRES_PASS: YWRtaW4= # base64编码的PostgreSQL管理员密码 POSTGRES_URI_ARGS: IA== # base64编码的URI参数(可选) POSTGRES_CLOUD_PROVIDER: QVdT # base64编码的云服务提供商(AWS/Azure) POSTGRES_DEFAULT_DATABASE: cG9zdGdyZXM= # base64编码的默认数据库名
执行以下步骤安装操作器:
deploy/secret.yaml中配置PostgreSQL凭证bashkubectl apply -f deploy/crds/db.movetokube.com_postgres_crd.yaml kubectl apply -f deploy/crds/db.movetokube.com_postgresusers_crd.yaml
bashkubectl apply -f deploy/namespace.yaml
bashkubectl apply -f deploy/secret.yaml
bashkubectl apply -f deploy/role.yaml kubectl apply -f deploy/role_binding.yaml kubectl apply -f deploy/service_account.yaml
bashkubectl apply -f deploy/operator.yaml
用于定义数据库及相关配置的自定义资源。
yamlapiVersion: db.movetokube.com/v1alpha1 kind: Postgres metadata: name: my-db # CR名称 namespace: app # 命名空间 spec: database: test-db # 在PostgreSQL中创建的数据库名称 dropOnDelete: false # 可选,设为true时删除CR将删除数据库和角色 masterRole: test-db-group # 可选,数据库的主角色名称 schemas: # 可选,操作器在数据库中创建的模式列表 - stores - customers extensions: # 可选,在数据库中创建的扩展列表 - fuzzystrmatch - pg***
功能说明:创建名为test-db的数据库及test-db-group主角色,同时创建具有读写权限的角色(test-db-writer、test-db-reader),并对指定模式下的所有表赋予相应权限。
用于定义数据库用户角色的自定义资源,需引用同一命名空间中的Postgres CR。
yamlapiVersion: db.movetokube.com/v1alpha1 kind: PostgresUser metadata: name: my-db-user # CR名称 namespace: app # 命名空间(需与引用的Postgres CR相同) spec: role: username # 角色名前缀 database: my-db # 引用的Postgres CR名称 secretName: my-secret # 存储凭证的密钥名称前缀 privileges: OWNER # 权限类型,可选OWNER/READ/WRITE
功能说明:创建用户角色(名称格式为username-<hash>),根据privileges赋予对应权限(OWNER对应test-db-group、WRITE对应test-db-writer、READ对应test-db-reader),凭证存储在名称为my-secret-my-db-user的密钥中。
注意:多个命名空间中可存在引用同一数据库的Postgres CR,最后一个引用该数据库的CR被删除时,将删除主角色并将数据库所有权转移给操作器使用的角色。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务