运行 Terraform 企业 主动操作 OpenShift: 经验教训

2026年8月21日1 次浏览来源:Dev.to阅读原文

导言 在上篇文章中,我讲述了在OpenShift上运行Vault Entertainment的四项挑战.

同一个实验室集群还以活性模式运行了Terraform Entertainment(TFE),将Vault集群作为其秘密后端.

TFE带来了自己的一套OpenShift特有问题——有的在TFE本身,有的在支持的PostgreSQL和对象存储层中,有的在Vault后期的VSO错误也再次出现在了另一个地方.

部署遵循与Vault相同的GitOps模式:ArgoCD,一个由三源的Helm设置(上流TFE图表,从回波得到的值文件,以及支持部件需要的VSO自定义资源,"路由"和"ImageStream/BuildConfig"的原始运算).

TFE与2个复制品一起运行,对抗一个基于CloudNativePG的PostgreSQL集群,一个用于活性协调的Redis部署,以及一个用于对象存储的NooBaaa S3桶(通过OpenShift数据基金会).

每一个秘密的TFE需要——许可证,加密密码,数据库证书,Redis密码,S3密钥,注册拉密,TLS证书——都来自本地的Vault集群,通过Vault Secrets Operator(VSO).

这篇文章涵盖了5个让我措手不及的事物:TFE在滚动更新期间硬性拒绝运行混合版本,为什么一个Postgres集群最终有两个不同的由Vault管理的角色设计,一个在集群S3端点中缺失的信托主播,VSO卡通调和错误在另外两个秘密中反复出现,以及让TFE的工作代理在OpenShift的限制安全模式下运行需要什么.

挑战1:主动使用手段锁定步骤版本 Problem TFE的活性活性模式将它的Rails进程复制到所有必须就运行版本达成一致的多个吊舱上.

我发现了这一点 在应该是一个常规的图表和图像起伏。

新的舱位出现时, 其根源是Helm图的默认策略——它与两个仍在运行的旧版子舱一起启动新版子舱,以在推出时保持容量.

TFE自己的启动检查将这种混合版本状态视为无效并拒绝上来,所以新出舱-相机会永远地被旧出舱坐在那里看起来健康.

解决办法 将部署设定为: 将所有舱都撕下, 权衡是真实的,值得直言:每次触摸到吊舱模板的部署——无论图像是否起起伏——都会在吊舱重启时(大约3分钟,观察)造成短暂的TFE完全出局.

对于活性活性系统来说,这是从零下架时间推出后退了一步,但这是唯一符合TFE锁步版本要求的选项.

如果你在中上等时撞上坠机(比如说,策略设置被错误地还原),恢复就是协调地重启: 一个微妙的,如果你运行 ArgoCD 与: 它将战斗 规模到0 并开始恢复复制 几乎立即。

这里很好——新图像上的新复制件集将两个吊舱连在一起,这正是你想要的.

两个舱都几分钟内到达 挑战2:一个Postgres集群,两个地壳角色设计 Proble Vault的数据库秘密引擎有明显,平庸的图案:一个动态角色,在每个租地上创建出全新的Postgres用户,并有一个短的TTL.

我先设道: 它奏效了——Vault Happy mints每时每刻都会出出一出新鲜而独特的Postgres角色.

问题是TFE不希望这样.

它期望作为一个稳定的数据库用户通过重启连接起来,它的迁移需要该用户拥有数据库和计划——不仅仅是有赠款。

动态的每个租借角色 随机化的名字 完全不符合这个模型。

解决办法 修补是将Vault的静态角色特征分层在同一数据库连接上,而不是取代动态角色.

静态角色管理前密码

分享