Как добавить дополнительные записи хостов в хелм-чарты

Итак, я развертываю свой стек приложений на диаграммах kubernetes sing helm, и теперь мне нужно добавить некоторые зависимые IP-адреса серверов и имена хостов в файл /etc/hosts моих модулей, поэтому мне нужна помощь в этом сценарии.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
4
0
5 628
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Как указано в документации, вы можете добавить дополнительные хосты в POD, используя функцию псевдонимы хостов.

Пример из документов:

apiVersion: v1
kind: Pod
metadata:
  name: hostaliases-pod
spec:
  restartPolicy: Never
  hostAliases:
  - ip: "127.0.0.1"
    hostnames:
    - "foo.local"
    - "bar.local"
  - ip: "10.1.2.3"
    hostnames:
    - "foo.remote"
    - "bar.remote"
  containers:
  - name: cat-hosts
    image: busybox
    command:
    - cat
    args:
    - "/etc/hosts"

Kubernetes предоставляет DNS-сервис, который могут использовать все модули. В свою очередь, вы можете определить Служба внешнего имени, который просто определяет запись DNS. Как только вы это сделаете, ваши модули смогут общаться с этой службой так же, как с любой другой службой Kubernetes, и подключаться к любому серверу.

Вы можете развернуть набор служб ExternalName глобально. Вы можете сделать это и на диаграмме Helm, если хотите, что-то вроде

apiVersion: v1
kind: Service
metadata:
  name: {{ .Release.Name }}-{{ .Chart.Name }}-foo
spec:
  type: ExternalName
  externalName: {{ .Values.fooHostname }}

Практика, которую я усвоил, заключается в том, что вам следует избегать использования /etc/hosts, если это вообще возможно.

Шаблонное решение исходного вопроса. Я тестировал это с helm 3.

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
    {{- with .Values.hostAliases }}
      hostAliases:
{{ toYaml . | indent 8 }}
    {{- end }}

Для таких значений, как:

hostAliases:
  - ip: "10.0.0.1"
    hostnames:
    - "host.domain.com"

Если hostAliases опущен или закомментирован в значениях, раздел hostAliases опускается при отображении шаблона.

Это решение создаст неправильный формат в первом элементе списка. Следующий код работает у меня на helm v3.5.0 hostAliases: {{- .Values.hostAliases | toYaml | nindent 8 }}

zqcolor 14.05.2021 19:24

Другие вопросы по теме