【发布时间】:2021-06-01 17:03:01
【问题描述】:
问题陈述:
我已经部署了一个 spring boot 应用程序,它在启动时总是使用默认的计算引擎服务帐户凭据来验证应用程序,我创建了一个单独的服务帐户和密钥,但无法替换默认的。我尝试使用“serviceAccountName”字段在 deployement.yaml 中指定新的服务帐户,但仍然收到错误消息说服务帐户,例如:“xyz”未找到。
serviceAccountName:{{ .Values.serviceAccountName }}
那么我如何使用特定服务帐户覆盖计算引擎的默认服务帐户并在deployment.yaml中定义它。
如果我在应用程序代码库中添加新服务帐户的凭据,它会起作用,但这不是最佳做法,请有人帮我解决这个问题
我的 deployment.yaml 文件的 sn-p:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: helloworld
appVersion: {{ .Values.appVersion }}
name: helloworld
spec:
replicas: 1
selector:
matchLabels:
app: helloworld
template:
metadata:
labels:
app: helloworld
environment: {{ .Values.environment }}
spec:
containers:
- name: helloworld
image: {{ .Values.imageSha }}
imagePullPolicy: Always
securityContext:
allowPrivilegeEscalation: false
runAsUser: 1000
ports:
- containerPort: 8080
env:
- name: SPRING_CONFIG_LOCATION
value: "/app/deployments/config/"
volumeMounts:
- name: application-config
mountPath: "/app/deployments/config"
readOnly: true
volumes:
- name: application-config
configMap:
name: {{ .Values.configMapName }}
items:
- key: application.properties
path: application.properties
【问题讨论】:
-
显示您的代码和部署文件。您可以更改分配给计算引擎的默认服务帐户,但这是在 Google Cloud 控制台中完成的,而不是在您的部署文件中。如果您实际上是指应用程序默认凭据,那么您可以在代码中或通过环境变量
GOOGLE_APPLICATION_CREDENTIALS=full_path_service_account_file指定服务帐户 JSON 密钥文件名。 -
请提供更多详细信息,您正在使用 Helm 部署此部署吗?您想在已部署 SA 时更改 SA,还是希望使用新 SA 部署它?您的环境和配置的详细信息会有所帮助。
-
是的,我正在使用 helm 进行部署,我将使用部署文件代码更新问题,因此通过上述配置,当我的应用程序启动时,它使用默认计算引擎凭据进行身份验证,但我有一个特定的服务帐户和 json 密钥所以应用程序应该使用这个密钥来进行身份验证,而不是默认的
标签: spring-boot kubernetes google-cloud-platform google-kubernetes-engine