gpt4 book ai didi

spring-boot - 检索作为卷挂载的 Kubernetes Secret

转载 作者:行者123 更新时间:2023-12-02 11:57:29 26 4
gpt4 key购买 nike

嗨,我正在玩 Kubernetes 的 secret 。
我的部署文件是:

---
apiVersion: v1
kind: Secret
metadata:
name: my-secrets
labels:
app: my-app
data:
username: dXNlcm5hbWU=
password: cGFzc3dvcmQ=

我能够创建 secret ,并将它们安装在我的部署中,如下所示:
---
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

我的问题是如何访问 usernamepassword我在 spring-boot 应用程序中 secret 创建的?

我尝试使用 ${my-secrets.username} 加载和 ${username} ,但它无法找到值。

我还尝试在 deployment.yml 中添加 secret 作为环境变量,如下所示:
env:
- name: username
valueFrom:
secretKeyRef:
name: my-secrets
key: username
- name: password
valueFrom:
secretKeyRef:
name: my-secrets
key: password

在这种情况下,值是从 secret 加载的,当我在 minikube 仪表板中更改 secret 值时,它不会反射(reflect)更改。

请帮助我了解这是如何工作的。

我正在使用 minikubedocker作为容器

最佳答案

对于第一种方法,您将在以下位置找到值:

- /app/secrets/my-secret/username
- /app/secrets/my-secret/password

对于第二种方法,您无法在运行时更改 env vars 的值,您需要重新启动或重新部署 pod

关于spring-boot - 检索作为卷挂载的 Kubernetes Secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55052565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com