Настройка шлема Istio 1.1.4 - образец global.defaultNodeSelector - PullRequest
0 голосов
/ 06 мая 2019

Относительно текущих параметров установки для Istio 1.1.4 должна быть возможность определить селектор узла по умолчанию, который добавляется во все развертывания Istio

В документации не показан отдельный пример того, какселектор должен быть определен, только {} как значение.

В настоящее время мне не удалось найти рабочий формат для передачи значений в рулевые диаграммы с помощью --set, например:

 --set global.defaultNodeSelector="{cloud.google.com/gke-nodepool:istio-pool}"

Я пробовал несколько вариантов, с и без экранирования, JSON map, ... Но в настоящее время все приводит к одному и тому же сообщению об ошибке Helm:

2019/05/06 15:58:10 Warning: Merging destination map for chart 'istio'. Cannot overwrite table item 'defaultNodeSelector', with non table value: map[]

Istio version 1.1.4

Helm 2.13.1

Ожидается, что будет более подробныйдокументация, предоставляя некоторые образцы на стороне Istio.

Ответы [ 2 ]

1 голос
/ 07 мая 2019

При указании переопределений с помощью --set несколько пар ключ / значение глубоко объединяются на основе ключей.
В вашем случае это означает, что в сгенерированном шаблоне будет присутствовать только последний элемент.
То же самое произойдет, даже если вы переопределите с параметром -f (файл YAML).

Вот пример использования опции -f с custom_values.yaml с выделенными ключами:

#custom_values.yaml

global:
  defaultNodeSelector:
    cloud.google.com/bird: stork
    cloud.google.com/bee: wallace

шаблон руля.-x charts / pilot / templates / deploy.yaml -f custom_values.yaml

Фрагмент визуализированного файла манифеста развертывания Istio`s Pilot.yaml:

 volumes:
      - name: config-volume
        configMap:
          name: istio
      - name: istio-certs
        secret:
          secretName: istio.istio-pilot-service-account
          optional: true
      affinity:      
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: beta.kubernetes.io/arch
                operator: In
                values:
                - amd64
                - ppc64le
                - s390x
              - key: cloud.google.com/bee
                operator: In
                values:
                - wallace
              - key: cloud.google.com/bird
                operator: In
                values:
                - stork
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 2
            preference:
              matchExpressions:
              - key: beta.kubernetes.io/arch
                operator: In
                values:
                - amd64

То же самое можнобыть достигнуто с --set:

--set global.defaultNodeSelector."cloud\.google\.com/bird"=stork,global.defaultNodeSelector."cloud\.google\.com/bee"=wallace
1 голос
/ 06 мая 2019

После нескольких часов поиска я нашел решение сразу после публикации вопроса, покопавшись в коммитах Istio.

Я оставлю свои выводы в качестве справки, может быть, кто-то может сэкономить время таким образом.

Настройка селектора узла по умолчанию работает, по крайней мере для меня, путем разделения ключа точками и экранирования дополнительных с помощью \ (если в метке интереса есть точки)

--set global.defaultNodeSelector.cloud\\.google\\.com/gke-nodepool=istio-pool

Чтобы создать defaultNodeSelector для пула узлов, помеченных

cloud.google.com/gke-nodepool: istio-pool

Мне не удалось добавить несколько значений, так что нотация {} для добавления списков в Helm, похоже, не соблюдается.

...