我正在使用脚本来运行helm
命令,该命令将升级我的k8s部署。
在移至kubectl
并开始使用图表之前,使用helm
直接部署之前,在k8s吊舱中部署后,我看到一个错误:
卷“ secret”的MountVolume.SetUp失败:字符串文字中的字符'\ r'无效
我的脚本类似于:
value1="foo"
value2="bar"
helm upgrade deploymentName --debug --install --atomic --recreate-pods --reset-values --force --timeout 900 pathToChartDir --set value1 --set value2
deployment.yaml
如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploymentName
spec:
selector:
matchLabels:
run: deploymentName
replicas: 2
template:
metadata:
labels:
run: deploymentName
app: appName
spec:
containers:
- name: deploymentName
image: {{ .Values.image.acr.registry }}/{{ .Values.image.name }}:{{ .Values.image.tag }}
volumeMounts:
- name: secret
mountPath: /secrets
readOnly: true
ports:
- containerPort: 1234
env:
- name: DOTENV_CONFIG_PATH
value: "/secrets/env"
volumes:
- name: secret
flexVolume:
driver: "azure/kv"
secretRef:
name: "kvcreds"
options:
usepodidentity: "false"
tenantid: {{ .Values.tenantid }}
subscriptionid: {{ .Values.subsid }}
resourcegroup: {{ .Values.rg }}
keyvaultname: {{ .Values.kvname }}
keyvaultobjecttype: secret
keyvaultobjectname: {{ .Values.objectname }}
可以看出,该错误与secret
卷及其值有关。
我已经三重检查了是否没有换行符或类似的值。
我已经运行helm lint
-找不到错误。
我已经运行helm template
-输出中没有任何奇怪或缺失的内容。
更新:
我已经复制了helm template
的输出并放入了deploy.yaml
文件中。
然后使用kubectl apply -f deploy.yaml
手动部署服务,然后...起作用。
那使我认为这实际上是helm
中的某种错误?有道理吗?
更新2:
我还尝试将azure/kv
卷替换为emptyDir
卷,并且能够使用头盔进行部署。似乎是azure/kv
量的头盔的特定问题?
有任何解决方法的想法吗?
答案 0 :(得分:0)
一个完全正确的答案要求我说您的\ r问题的实际详细信息可能与我的不同。
在我的情况下,我通过查看AKS节点的kv日志(/var/log/kv-driver.log)找到了问题。就我而言,错误是:
原始错误:autorest / azure:服务返回了错误。 Status = 403 Code =“ Forbidden” Message =“访问被拒绝。未在任何访问策略上找到呼叫者。\ r \ n
您可以学习SSH进入此页面上的节点:
https://docs.microsoft.com/en-us/azure/aks/ssh
如果您想采用该解决方案,则打开了一个问题:
https://github.com/Azure/kubernetes-keyvault-flexvol/issues/121