从旧的 AWX 实例迁移数据¶
要从旧的 AWX 安装迁移数据,您必须通过密钥提供一些信息。
创建用于迁移的密钥¶
密钥¶
您可以在用于在版本 18 之前的版本中部署 AWX 的清单文件中找到旧的密钥。
apiVersion: v1
kind: Secret
metadata:
name: <resourcename>-secret-key
namespace: <target-namespace>
stringData:
secret_key: <old-secret-key>
type: Opaque
注意
<resourcename>
必须与您正在创建的 AWX 对象的 name
相匹配。在下面的示例中,它是 awx
。
旧数据库凭据¶
密钥应格式化为如下所示
---
apiVersion: v1
kind: Secret
metadata:
name: <resourcename>-old-postgres-configuration
namespace: <target namespace>
stringData:
host: <external ip or url resolvable by the cluster>
port: "<external port, this usually defaults to 5432>" # quotes are required
database: <desired database name>
username: <username to connect as>
password: <password to connect with>
type: Opaque
注意
对于 host
,集群可以解析的 URL 可能类似于 postgresql.<namespace>.svc.<cluster domain>
,其中 <namespace>
用您要从其迁移数据的 AWX 部署的命名空间填充,而 <cluster domain>
用内部 Kubernetes 集群域填充(在大多数情况下,它是 cluster.local
)。
如果您的 AWX 部署已经使用外部数据库服务器或其数据库未由 AWX 部署管理,您可以改为创建与上述相同的密钥,但从 name
中省略 -old-
。在下一节中,通过 postgres_configuration_secret
传递它,从密钥中省略 _old_
,并确保值与密钥的名称匹配。这将使 AWX 拾取现有数据库并应用任何待处理的迁移。强烈建议您事先备份您的数据库。
旧部署的 postgresql Pod 用于将数据流式传输到新的 postgresql Pod。如果您的 postgresql Pod 有自定义标签,您可以通过 postgres_label_selector
变量传递它,以确保可以找到 postgresql Pod。
部署 AWX¶
应用 AWX 对象时,必须为上面创建的数据库密钥指定名称
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
spec:
old_postgres_configuration_secret: <resourcename>-old-postgres-configuration
secret_key_secret: <resourcename>-secret-key
...
在迁移期间排除 postgreSQL 表(可选)¶
使用 AWX.spec
下的 pg_dump_suffix
参数自定义在迁移期间将执行的 pg_dump 命令。此变量将您的提供 pg_dump 参数附加到“标准”命令的末尾。例如,要排除来自 main_jobevent
和 main_job
的数据以减小备份的大小,请使用
重要说明¶
如果您打算将所有上述内容放在一个文件中,请确保用三个破折号将每个块分隔开,如下所示
否则会导致无法运行的设置。