kubernetes 在密码default/mysql-secret中找不到密钥MYSQL_KEY

n6lpvg4x  于 2023-01-16  发布在  Kubernetes
关注(0)|答案(1)|浏览(196)

我有以下文件,它为mysql部署pod创建了一个mysql-secret

apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  mysql-password: MTExMTEx
  mysql-root-password: MTExMTEx
  mysql-user: YQ==

问题是,以前我可以使用以下命令创建的密钥在Kubernetes群集上部署mysql

kubectl create secret generic mysql-secret --from-literal MYSQL_KEY=11111

使用MYSQL_KEY,我可以将其传递给其他deployment文件,如auth,如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: auth
          env:
            - name: MYSQL_URI
              value: 'mysql://auth-mysql-srv:3306/users_auth'
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-secret
                  key: MYSQL_KEY

但是现在我没有密钥,使用yaml文件创建密钥,因此得到以下错误:

- deployment/auth-mysql-depl is ready. [3/5 deployment(s) still pending]
 - deployment/mysql: container mysql in error: &ContainerStateWaiting{Reason:CreateContainerConfigError,Message:couldn't find key MYSQL_KEY in Secret default/mysql-secret,}
    - pod/mysql-78bbf5f6f4-vbpkz: container mysql in error: &ContainerStateWaiting{Reason:CreateContainerConfigError,Message:couldn't find key MYSQL_KEY in Secret default/mysql-secret,}

如何将key: MY_SQL属性添加到secret.yaml文件中,或者找到一种方法将其从使用它的其他deployment文件(如auth)中删除?
如果我只是从auth deployment文件中消除key: MYSQL_KEY,我会得到这个错误:

- The Deployment "auth-depl" is invalid: spec.template.spec.containers[0].env[1].valueFrom.secretKeyRef.key: Required value
nbysray5

nbysray51#

部署文件似乎正确,但您的机密没有所需的密钥。密钥区分大小写。在您的机密.yaml文件中,我看不到MYSQL_KEY。请编辑该文件并添加密钥。

apiVersion: v1
kind: Secret
metadata:
  name: mysql-secret
type: Opaque
data:
  mysql-password: MTExMTEx
  mysql-root-password: MTExMTEx
  mysql-user: YQ==
  MYSQL_KEY: MTExMTEx
  • 请注意,以上代码段中MYSQL_KEY的值是随机的。它应该是实际值的base64字符串 *

然后运行kubectl apply -f。* 当然,应该安装Kubectl工具并指向正确的集群。*
如果这个命令运行良好,您的pod将在几分钟内启动。
另一种直接编辑密钥的方法是运行kubectl edit secret secret-namekubectl patch命令,这样就可以直接编辑k8s对象了。

相关问题