【发布时间】:2021-06-03 05:52:51
【问题描述】:
我的总体目标是在 Kubernetes 中部署后自动创建 MySQL 用户(尽管有 root)。
我找到了以下资源:
How to create mysql users and database during deployment of mysql in kubernetes?
Add another user to MySQL in Kubernetes
人们建议可以使用 ConfigMap 将 .sql 脚本挂载到 docker-entrypoint-initdb.d 以创建这些用户。为此,我必须将这些用户的密码以纯文本形式放在此脚本中。这是一个潜在的安全问题。因此,我想将 MySQL 用户名和密码存储为 Kubernetes Secret。
这是我的 ConfigMap
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
labels:
app: mysql-image-db
data:
initdb.sql: |-
CREATE USER <user>@'%' IDENTIFIED BY <password>;
如何在此 ConfigMap 中访问关联的 Kubernetes 机密?
【问题讨论】:
-
Kubernetes Secret 与
ConfigMap类似,但不同的 kubernetes 对象。在this guide 你可以找到用例。在部署中,您可以参考ConfigMap和Secret。同样在this guide 中,您可以找到Secret、ConfigMap和MySQL的示例。请详细说明您的最后一个问题。 -
感谢您的评论。我已经知道 Kubernetes Secrets 和 ConfigMaps 是什么。我使用 Secret 通过环境变量设置 MySQL root 密码。但是,没有 MySQL 环境变量可以为其他用户设置凭据。这就是我尝试在 ConfigMap 中检索 Secret 的原因。
-
我有点困惑。在How to create mysql users and database during deployment of mysql in kubernetes? 你有使用脚本的例子。在 Add another user to MySQL in Kubernetes 中,您有创建 configmap 的示例,而不是在 pod 中使用。既然可以使用 secret,为什么还要将 ConfigMap 与 Secret 关联?
-
在 Kubernetes 文档中,您有示例使用
Secret作为 Volume 或 Environment Variable 在此文档中,您还有 2 种不同的方法。您是否需要一些需要通过 ConfigMap 使用 Secret 的特定场景? -
我其实不知道,您可以将
Secret作为卷挂载到 Pod 中并在那里访问它。这实际上可能是我的用例的解决方案。如果它有效,我会尝试一下。谢谢!
标签: mysql docker kubernetes