【发布时间】:2020-04-25 03:52:26
【问题描述】:
我有一组供应商提供的容器,它们协同工作以提供服务,我们称它们为 A、B 和 C - Kubernetes 集群在单独的 pod 中运行每个容器。
- 容器 A 是一个前端 Nginx 容器,主要将内容转发到容器 B。前端允许您注册一个帐户,这实际上是一个转发到容器 B 的 API 调用。
- 容器 B 是后端 - 它有一个专有的内存数据库,并将帐户存储在那里。创建帐户时,还会创建和存储安全令牌。 (用户可以通过 A 的 API 调用检索该令牌。)
- 容器 C 是连接集群外部某些东西的桥梁。但至关重要的是,您使用环境变量对其进行配置,该变量包含来自存储在容器 B 中的用户帐户的有效安全令牌。C 使用该令牌通过 A 与 B 对话。
理想情况下,我想一次性部署所有这些 - 这意味着我需要在容器 B 中创建一个帐户(通过调用 A),然后将该值放入 C 的环境变量中。
一些想法:
- 我无法使用初始化容器来 SQL 插入新用户,因为数据库未公开。
- 我可以在供应商容器之上构建容器来编辑配置/脚本等,但替换二进制文件可能超出了范围。
- 我可以差不多通过 A 到 B 编写后端 API 脚本。但是,它使用在请求之间持续存在的 XSRF 令牌等具有挑战性。对于最简单的工具/库的任何建议使用来实现这一点是受欢迎的。
- 如果我为帐户创建编写脚本,我需要将该令牌放入容器 C 的部署中 - 我可以使用 ConfigMap,但是我需要调用 Kube API 从集群内修改 ConfigMap ,这对我来说似乎不是一个好主意。
对我来说,唯一可行的解决方案是在 C 上放置一个 initContainer,它将向 B(通过 A)查询安全令牌,然后将其写入共享卷。然后我将在容器 C 之上构建以从共享卷中读取,将环境变量设置为容器内部并启动供应商的进程。但是我必须管理用户帐户的机密。
这种方法有什么改进,或者我没有考虑过什么完全不同的地方吗?
【问题讨论】:
标签: kubernetes vendor