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被删除时,将删除主角色并将数据库所有权转移给操作器使用的角色。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务