Skip to main content

Helm chart для запуска tuna в Kubernetes

· 3 min read

Мы подготовили 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>'.

Также скорее всего вы захотите задать дополнительные конфигурации:

Более подробно читайте в отдельном разделе.

Публикация сервиса

Базовый пример это просто публикация сервиса. Например вы хотите получить доступ какой то админке или метрикам. 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: