【发布时间】:2019-04-16 15:34:12
【问题描述】:
我计划在 k8s 上创建一个特殊的“部署者”部署(每个集群一个“部署者”)。 它的作用是从一个中心位置提取规范,创建 k8s 清单并应用它们。 最终结果应该是多个部署,每个部署都在自己的命名空间中,包含服务和入口,以及包含数据库凭据的机密。
我不想直接传输和管理数据库详细信息。相反,我正在考虑创建一个 CustomResourceDefinition 'dbservice',其中包含一个 DB 服务名称。然后配置一个 k8s 算子:
- 获取(监控)此类“dbservice”资源。
- 检查数据库托管服务是否已存在此类服务。如果不是,它将使用自定义资源中的一些规范来创建它。
- 获取主机名、密码、用户、数据库名称和端口,并将它们存储在将由部署 (envvar) 使用的机密中。
这样:
- 每个部署都会等待它的数据库密钥,并且在密钥存在之前不会启动,这意味着数据库已准备就绪。
- 我不必手动管理数据库服务。
- 我不必通过电线传输密码。
为此需要发生什么(根据我的计划):
- 操作员需要有权限与数据库托管提供商交谈(可能会使用 API 密钥访问另一个 k8s 存储的秘密)。
- 操作员需要拥有在所有命名空间中创建机密的权限。
由于我对 k8s 和 devops 还比较陌生,所以我想验证这种方法是否合理,而不是反模式。
【问题讨论】:
标签: kubernetes kubernetes-secrets kubernetes-custom-resources