繁体   English   中英

Helm [stable/nginx-ingress] 传递标头时出现问题

[英]Helm [stable/nginx-ingress] Getting issue while passing headers

Helm 和 Kubernetes 的版本:客户端: &version.Version{SemVer:"v2.14.1" 和 1.13.7-gke.24

哪个图表: stable/nginx-ingress [v0.24.1]

发生了什么:尝试使用 --set-string 覆盖标头,但它没有按预期工作。 它总是给出解析问题

/usr/sbin/helm install --name cx-nginx-1 --set controller.name=cx-nginx-1 --set controller.kind=Deployment --set controller.service.loadBalancerIP= --set controller.metrics.enabled=true --set-string 'controller.headers={"X-Different-Name":"true","X-Request-Start":"test-header","X-Using-Nginx-Controller":"true"}'. Error: release cx-nginx-1 failed: ConfigMap in version "v1" cannot be handled as a ConfigMap: v1.ConfigMap.Data: ReadMapCB: expect { or n, but found [, error found in #10 byte of...|","data":["\"X-Diffe|..., bigger context...|{"apiVersion":"v1","data":["\"X-Different-Name\":\"true\"","\"X-Request-Start|...

您期望发生的事情:我想覆盖 header 默认情况下在 values.yam 中使用自定义标头

如何重现它(尽可能最小和精确):我提供了重现的评论, helm install --name cx-nginx-1 --set controller.name=cx-nginx-1 --set controller.kind=Deployment --set controller.service.loadBalancerIP= --set controller.metrics.enabled=true --set-string 'controller.headers={"X-Different-Name":"true","X-Request-Start":"test-header","X-Using-Nginx-Controller":"true"}'.

我尝试在调试模式下运行(--dry-run --debug),它显示如下配置图,

apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app: nginx-ingress
    chart: nginx-ingress-1
    component: "cx-nginx-1"
    heritage: Tiller
    release: foiled-coral
  name: foiled-coral-nginx-ingress-custom-headers
  namespace: cx-ingress
data:
  - X-Different-Name:true
  - X-Request-Start:test-header
  - X-Using-Nginx-Controller:true

似乎它添加了意图 4 而不是意图 2。我也收到了以下警告, Warning: Merging destination map for chart 'nginx-ingress'. Cannot overwrite table item 'headers', with non table value: map[X-Different-Name:true X-Request-Start:test-header X-Using-Nginx-Controller:true] Warning: Merging destination map for chart 'nginx-ingress'. Cannot overwrite table item 'headers', with non table value: map[X-Different-Name:true X-Request-Start:test-header X-Using-Nginx-Controller:true]

请帮助我以正确的方式传递标题。

注意: controller.headers已弃用,请确保使用controller.proxySetHeaders代替。


Helm --set有一些限制

您最好的选择是避免使用--set ,而使用--values

您可以在这样的文件中声明所有自定义值:

# values.yaml
controller:
  name: "cx-nginx-1"
  kind: "Deployment"
  service:
    loadBalancerIP: ""
  metrics:
    enable: true
  proxySetHeaders:
    X-Different-Name: "true"
    X-Request-Start: "true"
    X-Using-Nginx-Controller: "true"

然后在安装时使用它:

helm install --name cx-nginx-1 stable/nginx-ingress \
--values=values.yaml

如果你想使用--set ,你应该使用这个符号:

helm install --name cx-nginx-1 stable/nginx-ingress \
--set controller.name=cx-nginx-1 \
--set controller.kind=Deployment \
--set controller.service.loadBalancerIP= \
--set controller.metrics.enabled=true \
--set-string controller.proxySetHeaders.X-Different-Name="true" \
--set-string controller.proxySetHeaders.X-Request-Start="true" \
--set-string controller.proxySetHeaders.X-Using-Nginx-Controller="true" 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM