带头盔的Kubernetes:卷“ secret”的MountVolume.SetUp失败:字符串文字中的字符'\ r'无效

时间:2019-08-16 15:04:56

标签: kubernetes kubernetes-helm

我正在使用脚本来运行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量的头盔的特定问题?

有任何解决方法的想法吗?

1 个答案:

答案 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