如何使 kubernetes 集群中的 PODs 可以访问全局环境变量

how to make a global environment variable accessible for PODs in a kubernetes cluster

在我的公司,我们有一个内部安全令牌服务供所有 Web 应用程序使用,以验证公司中央访问管理服务器(例如 BigIP/APM)颁发的 STS 令牌。因此,必须在部署配置中为每个单独的 Web 应用程序(Openshift 项目)重复设置用于令牌验证 REST API 的相同端点作为环境变量。每个 Web 应用程序都使用 ES256 public 密钥来验证 JWT 令牌。

我想知道是否有一种方法可以在 Openshift 中为这些 commonshared 设置全局环境变量或 ConfigMap 或其他任何东西 每个集群的设置,以便集群中所有 PODs 中的所有 Web 应用程序 运行 默认可以访问它们?当然,每个单独的部署配置都应该随意覆盖全局设置中的这些默认值。

未内置任何内容。您可以使用一些网络挂钩和自定义代码自行构建。否则,您需要将指向 Secret and/or ConfigMap 的 envFrom 添加到每个 pod 模板,并将 Secret/ConfigMap 复制到所有需要它的命名空间(kubed 至少可以帮助这部分)。

I'm wondering if there exists a way to set up a global Environment variable or ConfigMap or anything else in Openshift for these kind of common, shared

就微服务而言,不共享任何内容 并避免“紧耦合”是一种很好的做法。拥有全局变量通常不好。

当你想要发展和维护它时,这会很困难。密钥是您应该定期轮换的东西。

In my company, we have an internal Security Token Service consumed by all web apps to validate the STS token issued by the company central access management server (e.g BigIP/APM).

So is an ES256 public key used by each web app for validating JWT token.

当您收到 JWT 令牌时,您应该检查 iss(颁发者 - 值可以是 HTTP URL)声明,如果您信任颁发者,通常可以找到一个OpenID Connect Discovery endpoint where the issuer publishes Json Web Key Set 使用密钥验证令牌。

有了这个架构,您就有了一个中央服务来发行令牌 - 并且还发布密钥来验证它们。所以不需要以另一种方式分发它们——没有共享变量。现在您还有一个 单一位置来轮换令牌,因此它变得更易于维护。