Как автоматически настроить переадресацию портов Kubernetes с помощью Helm Charts? - PullRequest
0 голосов
/ 12 июня 2019

Используя Helm, как мне настроить Helm Chart для автоматического включения переадресации портов?

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

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

Ответы [ 2 ]

2 голосов
/ 12 июня 2019

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

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

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

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

0 голосов
/ 12 июня 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

...