【发布时间】:2019-07-29 20:34:49
【问题描述】:
您好,我正在玩弄 Kubernetes 的秘密。 我的部署文件是:
---
apiVersion: v1
kind: Secret
metadata:
name: my-secrets
labels:
app: my-app
data:
username: dXNlcm5hbWU=
password: cGFzc3dvcmQ=
我能够创建秘密并将它们安装在我的部署中,如下所示:
---
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-service
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: spring-service
labels:
app: spring-service
spec:
replicas: 1
selector:
matchLabels:
app: spring-service
template:
metadata:
labels:
app: spring-service
spec:
containers:
- name: spring-service
image: my-image:tag
imagePullPolicy: Always
ports:
- containerPort: 8080
volumeMounts:
- name: my-secret-vol
mountPath: "/app/secrets/my-secret"
readOnly: true
volumes:
- name: my-secret-vol
secret:
secretName: my-secrets
我的问题是如何访问我在 spring-boot 应用程序中秘密创建的 username 和 password?
我尝试使用${my-secrets.username} 和${username} 加载,但找不到值。
我还尝试在 deployment.yml 中添加秘密作为环境变量,如下所示:
env:
- name: username
valueFrom:
secretKeyRef:
name: my-secrets
key: username
- name: password
valueFrom:
secretKeyRef:
name: my-secrets
key: password
在这种情况下,值是从秘密加载的,当我在 minikube 仪表板中更改秘密值时,它不会反映所做的更改。
请帮助我了解这是如何工作的。
我使用minikube 和docker 作为容器
【问题讨论】:
标签: spring-boot kubernetes kubernetes-secrets mounted-volumes