数据库配置¶
PostgreSQL 版本¶
与最新版本 awx-operator 捆绑在一起的 AWX 版本的默认 PostgreSQL 版本为 PostgreSQL 15。您可以在默认值 supported_pg_version 中找到给定版本的此默认值。
我们只对 PostgreSQL 的默认版本提供覆盖范围。较新版本的 PostgreSQL 可能会工作,但应仅配置为外部数据库。如果您的数据库由 awx-operator 管理(如果您没有指定 postgres_configuration_secret
,则为默认值),则不应覆盖默认版本,因为这可能会在 awx-operator 尝试升级您的 postgresql pod 时导致问题。
外部 PostgreSQL 服务¶
要将 AWX 配置为使用外部数据库,自定义资源需要了解连接详细信息。为此,请使用这些连接详细信息创建一个 k8s 密钥,并在 CR spec 级别将密钥的名称指定为 postgres_configuration_secret
。
密钥应按以下格式设置
---
apiVersion: v1
kind: Secret
metadata:
name: <resourcename>-postgres-configuration
namespace: <target namespace>
stringData:
host: <external ip or url resolvable by the cluster>
port: <external port, this usually defaults to 5432>
database: <desired database name>
username: <username to connect as>
password: <password to connect with>
sslmode: prefer
target_session_attrs: read-write
type: unmanaged
type: Opaque
提示
可以设置特定的用户名、密码、端口或数据库,但仍然可以让数据库由运营商管理。在这种情况下,在创建 postgres-configuration 密钥时,应添加 type: managed
字段。
注意
变量 sslmode
仅对external
数据库有效。允许的值为:prefer
、disable
、allow
、require
、verify-ca
、verify-full
。
变量 target_session_attrs
仅对clustered external
数据库有用。允许的值为:any
(默认)、read-write
、read-only
、primary
、standby
和 prefer-standby
,其中只有 read-write
和 primary
在 AWX 使用中真正有意义,因为您希望连接到提供写入支持的数据库节点。
创建密钥后,您可以在您的规范中指定它
从旧的 AWX 实例迁移数据¶
有关如何从旧版 AWX 迁移的说明,请参阅 migration.md。
托管 PostgreSQL 服务¶
如果您无法访问外部 PostgreSQL 服务,则 AWX 运营商可以为您在 AWX 实例旁边部署一个。
以下变量可用于托管 PostgreSQL 服务
名称 | 描述 | 默认值 |
---|---|---|
postgres_image | 要拉取的镜像路径 | quay.io/sclorg/postgresql-15-c9s |
postgres_image_version | 要拉取的镜像版本 | latest |
postgres_resource_requirements | PostgreSQL 容器(和 initContainer)资源需求 | requests: {cpu: 10m, memory: 64Mi} |
postgres_storage_requirements | PostgreSQL 容器存储需求 | requests: {storage: 8Gi} |
postgres_storage_class | PostgreSQL PV 存储类 | 空字符串 |
postgres_priority_class | 用于 PostgreSQL Pod 的优先级类 | 空字符串 |
自定义示例可能为
---
spec:
...
postgres_resource_requirements:
requests:
cpu: 500m
memory: 2Gi
limits:
cpu: '1'
memory: 4Gi
postgres_storage_requirements:
requests:
storage: 8Gi
limits:
storage: 50Gi
postgres_storage_class: fast-ssd
postgres_extra_args:
- '-c'
- 'max_connections=1000'
注意
如果未定义 postgres_storage_class
,则 PostgreSQL 将将其数据存储在使用集群默认存储类的卷上。
关于覆盖 postgres 镜像的说明¶
我们建议您使用默认的 sclorg 镜像。如果您来自使用来自 dockerhub 的旧 postgres 镜像(postgres:13)的部署,从 awx-operator 版本 2.12.2 及以下版本升级到 2.15.0+ 将处理将您的数据迁移到新的 postgresql 镜像(postgresql-15-c9s)。
您无法再配置自定义 postgres_data_path
,因为它在 quay.io/sclorg/postgresql-15-c9s 镜像中是硬编码的。
如果您覆盖 postgres 镜像以使用自定义 postgres 镜像(例如 postgres:15),则默认数据目录路径可能不同。这些镜像不能互换使用。
初始化 Postgres 数据卷¶
当使用 hostPath 支持的 PVC 和其他一些存储类(如 longhorn 存储)时,postgres 数据目录需要 postgres pod 中的用户(UID 26)能够访问。
要使用正确的权限初始化此目录,请配置以下设置,该设置将使用 init 容器在 postgres 卷中设置权限。
如果您需要修改 init 容器命令,下面有一个示例。