Netbox 迁移到 k3s

本文记录了将 Netbox 从旧环境迁移到 k3s 集群的过程。

迁移步骤

1. 备份数据库

使用 pg_dump 导出 Netbox 数据库,排除变更日志表以减小备份体积:

pg_dump --username netbox --password --host localhost --exclude-table-data=extras_objectchange netbox > netbox.sql

2. 删除旧 Pod

为了避免 Pod 竞争和锁定问题,先删除现有的 Netbox Pod:

kubectl delete po netbox-68cbd8b854-2hvgp

3. 修改 PostgreSQL 认证方式

临时禁用密码认证

# 进入 PostgreSQL Pod
kubectl exec -it netbox-postgresql-0 -- sed -ibak 's/^\([^#]*\)md5/\1trust/g' /opt/bitnami/postgresql/conf/pg_hba.conf

# 重新加载配置
kubectl exec -it netbox-postgresql-0 -- pg_ctl reload

创建新数据库和用户

kubectl exec -it netbox-postgresql-0 -- psql -U postgres

DROP DATABASE netbox;
CREATE DATABASE netbox;
ALTER USER netbox WITH PASSWORD 'balabalabala';
ALTER DATABASE netbox OWNER TO netbox;

-- PostgreSQL 15 及以上版本需要
\connect netbox;
GRANT CREATE ON SCHEMA public TO netbox;

恢复密码认证

kubectl exec -it netbox-postgresql-0 -- sed -i 's/^\([^#]*\)trust/\1md5/g' /opt/bitnami/postgresql/conf/pg_hba.conf
kubectl exec -it netbox-postgresql-0 -- pg_ctl reload

4. 恢复数据库

kubectl exec -it netbox-postgresql-0 -- sh -c "PGPASSWORD=balabalabala psql -U netbox -d netbox < /tmp/netbox.sql"

参考资料