Helm [stable / nginx-ingress] Получение проблемы при передаче заголовков - PullRequest
0 голосов
/ 15 октября 2019

Версия Хелма и Кубернетеса: Клиент: & 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|...

То, что вы ожидали, произойдет: Я хочу переопределить заголовок, который по умолчанию существует в 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"}' .

Я попытался запустить в режиме отладкиmode (--dry-run --debug), он показывает мне configmap, как показано ниже,

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]

Пожалуйста, помогите мне правильно передать заголовки.

1 Ответ

0 голосов
/ 30 октября 2019

Примечание: controller.headers устарело, обязательно используйте вместо него controller.proxySetHeaders.


Шлем --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" 
...