我有一个 Spring Boot 应用程序,其中有用于部署、配置映射和机密的 k8s 文件。它们的值正在使用 helm 进行更新。我想要一个secrets.yaml
将值放在那里的地方,它会替换application.yaml
Spring Boot 中的值。我设法为配置图做到了这一点。我创建了configmap.yaml
,把我想替换的值放在那里,设置 Spring Cloud K8s 以获得执行它的权限(创建 rbac)并且它工作。但是对于秘密我没有设法做到这一点。
这是我的application.yaml
。我想更换banana.database.password
.
spring:
main:
banner-mode: off
application:
name: devops-integration
cloud:
kubernetes:
secrets:
name: devops-integration
paths: /etc/secrets
banana:
valueTest: hello
valueDebug: world
database:
password: dGVzdAo=
这是我的secret.yaml
。
apiVersion: v1
kind: Secret
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}
labels:
environment: {{ .Values.cloud.project.environment }}
release: {{ .Release.Name }}
tier: {{ .Values.application.tier }}
data:
banana.database.password: {{ .Values.application.database.password }}
这是我values.yaml
想要的秘密的最终值。
application:
name: devops-integration
database:
password: dGVzdHBhc3N3b3JkCg==
这是我deployment.yaml
尝试为秘密配置坐骑的地方,但它不起作用。
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}-deployment
labels:
environment: {{ .Values.cloud.project.environment }}
release: {{ .Release.Name }}
tier: {{ .Values.application.tier }}
spec:
replicas: {{ .Values.application.pod.replicas }}
selector:
matchLabels:
environment: {{ .Values.cloud.project.environment }}
release: {{ .Release.Name }}
tier: {{ .Values.application.tier }}
template:
metadata:
namespace: {{ .Values.cloud.project.namespace }}
labels:
environment: {{ .Values.cloud.project.environment }}
release: {{ .Release.Name }}
tier: {{ .Values.application.tier }}
spec:
containers:
- image: gcr.io/{{ .Values.cloud.project.name }}/{{ .Values.application.name }}
name: {{ .Release.Name }}-container
volumeMounts:
- mountPath: "/etc/secrets"
name: {{ .Release.Name }}-volume
ports:
- containerPort: {{ .Values.application.pod.container.port }}
protocol: {{ .Values.application.pod.container.protocol }}
volumes:
- name: {{ .Release.Name }}-volume
secret:
secretName: {{ .Release.Name }}
当我部署所有内容时,发生的情况是密码的值是 里面的那个application.yaml
,而不是secret.yaml
正在使用的那个。对于 configmap,同样的模式也有效。
有人知道我做错了什么吗?
PS.:一切都将部署到 GKE。