我有以下文件,它为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
1条答案
按热度按时间nbysray51#
部署文件似乎正确,但您的机密没有所需的密钥。密钥区分大小写。在您的机密.yaml文件中,我看不到
MYSQL_KEY
。请编辑该文件并添加密钥。然后运行kubectl apply -f。* 当然,应该安装Kubectl工具并指向正确的集群。*
如果这个命令运行良好,您的pod将在几分钟内启动。
另一种直接编辑密钥的方法是运行
kubectl edit secret secret-name
或kubectl patch
命令,这样就可以直接编辑k8s对象了。