Knative 服务 API 令牌存储

问题描述

我正在评估 knative 是否对我的项目有意义。我正在尝试创建连接到第三方 API 的服务。我想知道从 knative 的角度来看,存储需要定期更新的第三方 API 令牌的最佳策略是什么。

  • 秘密是要走的路吗?我试过了,但我认为无法从 Pod 修改机密,对吗?
  • 对于这个用例,传统的 k8 部署是否更有意义?
  • 从 knative 服务存储数据的正确方法是什么?

解决方法

Knative 是 Kubernetes 的一个插件。您将以与在 kubernetes 中管理机密相同的方式在 knative 中管理机密。 https://kubernetes.io/docs/concepts/configuration/secret/

使用 Knative 时使用 Pod,如果使用 Kubernetes Deployment 或 DeamonSet,则使用相同类型的 Pod。 https://kubernetes.io/docs/concepts/workloads/pods/

现在就您而言是第 3 方 API 令牌。 不知道您的用例,但我熟悉的是使用 API 密钥的概念,您可以将其放入 kubernetes 机密中,然后当您的应用程序启动时,您的 Pod 将可以访问。

您将使用密钥请求令牌(也称为刷新令牌),然后使用此令牌访问 API。您将在内存中保留它,并在即将到期时使用刷新令牌刷新令牌。

那么,如果您的 Pod 在缩小时关闭会发生什么,这可能是在普通的 kubernetes 中,而不是必需的 knative。您想将该令牌存储在某个可能像缓存的地方吗?人们在这种情况下会做什么,他们会将其保存在 memcache 或 redis 中,因此,如果出现新的 pod,它将检查缓存中是否有最近的令牌,如果有效,则在无效或未找到时使用它,然后使用 API 密钥从 Secret 中获取新令牌。 https://zapier.com/engineering/apikey-oauth-jwt/

没有更多细节很难更准确地回答。