我试图连接和运行一个pod在一个AKS集群(v1.19.6)作为一个非root用户与Helm (v3.5.2),并得到一个崩溃循环与错误I have no name!
。docker镜像和服务在运行时以正确的用户在本地运行,没有问题。
在helm create mychart
之后,我在值中设置了我的安全性。
podSecurityContext:
runAsNonRoot: true
runAsUser: 123
securityContext:
# capabilities:
# drop:
# - ALL
#readOnlyRootFilesystem: false
runAsNonRoot: true
runAsUser: 123
部署。下面是Yaml。除了连接到AKS集群的参数之外,我没有修改任何其他内容:
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "mychart.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
Dockerfile以
结尾USER 123
EXPOSE 8080
CMD [ "sh", "-c", "./blah; bash"]
我是否正确,这是最有可能的问题?我该如何着手解决这个问题?支持文档会很有帮助的,我发现的所有东西都过时了。
我创建了一个启动脚本,用声明的用户启动服务。不确定这是否是k8的方法,但它有效。如果有人有更好的解决办法,我就不回答了。