Пустая переменная при использовании `status.HostIP` в качестве поля ссылки для моей переменной env в kubernetes

#kubernetes #yaml #kubernetes-helm #kubernetes-pod #datadog

#kubernetes #yaml #kubernetes-helm #kubernetes-pod #datadog

Вопрос:

Я развертываю модуль kubernetes с использованием helm v3, мои клиент и сервер kubectl выше 1.7, поэтому он должен поддерживать ссылочные поля. Однако при развертывании значение просто пустое.

использование

 environment:
  - name: DD_AGENT_HOST
    valueFrom:
      fieldRef:
        fieldPath: status.hostIP
  

Где DD_AGENT_HOST — это моя переменная env, которой должен быть присвоен IP-адрес хоста.

Есть идеи, почему это может происходить?

Комментарии:

1. Исправлено, по-видимому, helm не копирует его правильно

2. Можете ли вы опубликовать это как ответ, чтобы быть более заметным для сообщества?

Ответ №1:

Пришлось добавить это в спецификацию контейнера напрямую, не передавая из env и используя include from helm, поскольку это не работает

Ответ №2:

Проблема связана с шаблоном развертывания приложения helm (ЕСЛИ вы его используете). Например, если у вас есть развертывание.yaml с

       env:
      {{- range .Values.env }}
        - name: {{ .name }}
          value: {{ .value | quote }}
      {{- end }}
  

И одно из env значений заключается valueFrom в том, что вы должны добавить явно (если нет более удобного способа сделать это):

         - name: DD_AGENT_HOST
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
  

В противном случае копия range вышеуказанного не будет использоваться valueFrom и в результате DD_AGENT_HOST будет пустой