Как автоматически настроить переадресацию портов Kubernetes с помощью Helm Charts?

Как настроить Helm Chart для автоматического включения переадресации портов с помощью Helm?

Документация, которую я видел до сих пор, указывает, что я создаю диаграмму Helm, я запускаю ...

helm install myhelmchart

... затем перенаправить порт вручную ...

  export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=myhelmchart,app.kubernetes.io/instance=pouring-rat" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward $POD_NAME 8080:80

person barrypicker    schedule 11.06.2019    source источник
comment
Возможно, я ошибочно предполагаю, что переадресация портов, наблюдаемая в контейнерах докеров, - это то, как это должно работать. После дальнейшего исследования я обнаружил концепцию конфигурации входа, которая предположительно разрешает точку входа SSL, которая перенаправляет на службу без SSL ... Хмммм .... kubernetes.io/docs/concepts/services-networking/ingress   -  person barrypicker    schedule 12.06.2019


Ответы (2)


Вы не можете: работа Helm ограничивается использованием языка шаблонов для рендеринга некоторого набора файлов YAML и их отправки на сервер Kubernetes. Это вроде только kubectl apply и kubectl delete.

Одна уловка, которую вы можете найти полезной, заключается в том, что kubectl port-forward может принимать вещи, отличные от имен модулей, начиная с kubectl 1.10 (и это функциональность в клиенте, если у вас очень старый кластер, вам просто нужен достаточно новый клиент). Он найдет для вас подходящее имя модуля. Так что вы можете

kubectl port-forward service/pouring-rat-nginx 8080:80

Я обнаружил, что kubectl port-forward отлично работает для облегченного тестирования и отладки, и если я отправлю curl запрос, он будет действовать так, как я хочу. Он также выполняет такие действия, как обычное завершение работы после некоторого времени простоя, и, поскольку он туннелирует TCP через HTTP, это не самый быстрый способ. Настройка службы типа LoadBalancer была бы лучшим способом настройки доступа извне кластера. Такие ручки, как тип службы и любые аннотации, необходимые для управления балансировщиком нагрузки, - это хорошие вещи, которые можно раскрыть через значения Helm.

person David Maze    schedule 12.06.2019

Определите job, который выполняется в определенный момент в жизненный цикл в течение helm install. список доступных хуков также содержит post-install крючок, который вы, вероятно, ищете. пример можно найти в официальная документация.

Вы в основном предоставляете задание Kubernetes, добавляете необходимые метки управления, а затем также аннотацию, подобную этой:

apiVersion: ...
kind: ....
metadata:
  annotations:
    "helm.sh/hook": post-install

Важные заметки:

  • Это задание должно использовать контейнер, в котором установлен kubectl (проверьте это пример)

  • Это задание должно выглядеть следующим образом образец

  • Учетная запись службы связана с этим заданием для эффективного kubectl port-forward выполнения.

Другой общий ответ: https://stackoverflow.com/a/55078187/747579

person Abdennour TOUMI    schedule 11.06.2019
comment
Спасибо @Abdennour - это означает, что в шаблонах есть порядок работы. Должен ли я применять это в Chart.yaml? - person barrypicker; 12.06.2019
comment
Юппа @barrypicker - person Abdennour TOUMI; 12.06.2019