Helm chart для запуска tuna в Kubernetes
Мы подготовили Helm chart для запуска tuna в Kubernetes.
В этой статье мы опишем случаи применения когда tuna может помочь вам в работе с приложениями в Kubernetes.
Обзор
В большинстве случаев вы можете обойтись штатными инструментами kubectl, опубликовать сервис просто создав Ingress, создать Service LoadBalancer у облачного провайдера для публикации доступа к базе данных, ну или просто запустить port-forward. Но не всегда штатные инструменты позволяют решать наши запросы достаточно быстро, удобно или дёшево.
Подключение репозитория
Прежде чем начать, установите Helm.
Подключите репозиторий и обновите манифесты:
helm repo add tuna https://releases.tuna.am/charts/
helm repo update tuna
Основные значения (values)
type- тип туннеля, передаётся как 1й аргумент к команде, доступные значения -http, tcp, ssh.to- адрес назначения, это обязательный аргумент для типовhttp, tcp. Значениеtoпередаётся в переменнуюTUNA_PORTВы можете указать адрес сервиса в вашем кластере, например -my-service:80илиpostgres-postgresql.postgres.svc:5432.token- ваш токен для создания туннелей, если передать его в это поле, то он будет сохранён в секрет и передан в tuna как переменная окруженияTUNA_TOKEN. Но это не обязательно, вы можете и просто передать его вenv.TUNA_TOKEN=<your_token>или вargs[0]='--token=<your_token>'.
Также скорее всего вы захотите задать дополнительные конфигурации:
env: {}- Конфигурация через переменные окружения.args: []- Конфигурация через аргументы командной строки.
Более подробно читайте в отдельном разделе.
Публикация сервиса
Базовый пример это просто публикация сервиса. Например вы хотите получить доступ какой то админке или метрикам. Tuna также поможет открыть доступ к сервису в minikube в серой сети.
helm install tuna --set to=my-service:80 --set token=<your_token> tuna/tuna
Доступ к базе данных и другим TCP ресурсам
Допустим у нас есть Redis или MongoDB или Postgres, и нужно открыть доступ к нему всем на какой то промежуток времени. Создать Service LoadBalancer можно, но это дороже. Создать роль и раздать всем разработчикам доступ в Kubernetes, чтобы каждый сам запуска у себя kubectl port-forward тоже можно, но это значительно дольше и ещё всех надо научить. C Tuna же организовать это можно самостоятельно буквально за 5 минут, раздать всем адрес подключения и вот уже все могут подключаться к вашим TCP приложениям.
Создайте values.yml файл:
type: tcp
to: postgres-postgresql.postgres.svc:5432
token: <your_token>
Запустите приложение:
helm install tuna -f values.yml tuna/tuna
SSH доступ
Вы можете запустить Tuna с встроенным SSHd сервером и подключиться в контейнер, напрямую через ssh.
Добавьте привилегии securityContext если нужно установить дополнительное ПО в контейнере, или используйте свой образ.
Создайте values.yml файл:
type: ssh
token: <your_token>
securityContext:
capabilities: {}
readOnlyRootFilesystem: false
runAsNonRoot: false
runAsUser: 0
Запустите приложение:
helm install tuna -f values.yml tuna/tuna
Leave feedback
If you enjoy using Tuna, or on the contrary you are not happy with something, please leave feedback.
Help
We value our users and carefully review every request. If you have any problems with tuna, please contact us in one of the following ways: