我尝试在Kubernetes中设置一个mysql数据库。我配置了一个ConfigMap来存储数据库名称和一个Secret,其中包含根密码,用户和用户密码。

之后,当我尝试连接到数据库时(在mysql cli的容器内部以及IntelliJ

Database工具的外部),我得到一个“错误1045(28000):用户’testadm’@’localhost’的访问被拒绝(使用密码:是)”错误。

我的kubernetes.yaml文件:

apiVersion: v1

kind: ConfigMap

metadata:

name: db

data:

mysql-database: database

---

apiVersion: v1

kind: Secret

metadata:

name: db-credentials

type: Opaque

data:

mysql-root-password: VGVzdDEyMzQK # Test1234

mysql-user: dGVzdGFkbQo= # testadm

mysql-password: VGVzdDEyMzQK # Test1234

---

apiVersion: apps/v1beta1

kind: Deployment

metadata:

name: mysql

spec:

replicas: 1

strategy:

type: Recreate

template:

metadata:

labels:

app: mysql

spec:

containers:

- name: mysql

image: mysql:5.7

ports:

- containerPort: 3306

env:

- name: MYSQL_DATABASE

valueFrom:

configMapKeyRef:

name: db

key: mysql-database

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: db-credentials

key: mysql-root-password

- name: MYSQL_USER

valueFrom:

secretKeyRef:

name: db-credentials

key: mysql-user

- name: MYSQL_PASSWORD

valueFrom:

secretKeyRef:

name: db-credentials

key: mysql-password

如果我直接像下面那样设置密码,则连接成功 在容器内部和外部进行!

env:

- name: MYSQL_ROOT_PASSWORD

value: Test1234

如果检查容器内的env变量,则无法发现这两种方法之间的差异。

使用秘密中存储的密码是否需要其他格式?我还尝试将值放在数据字典中,如下所示:

data:

mysql-root-password: "VGVzdDEyMzQK"

版本信息

Docker 17.06.0-ce

Minikube 0.21.0

Kubectl Server 1.7.0

Kubectl Client 1.7.3

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐