Перейти к основному содержимому

tuna и Kubernetes

Для постоянной работы — оператор

Этот пример — быстрый способ открыть один Service: tuna запускается обычным Deployment. Для постоянной публикации мы рекомендуем Kubernetes-оператор: туннели, домены, TCP-порты и Ingress описываются ресурсами Kubernetes, а оператор сам следит за их состоянием.

Шаг 1. Создайте API-ключ​

Создайте API-ключ с набором «Для туннелей». Положите его в Secret в отдельном namespace для экспериментов:

kubectl create namespace tuna-example
kubectl -n tuna-example create secret generic tuna --from-literal=TUNA_API_KEY=<ваш_ключ>

Шаг 2. Запустите тестовое приложение​

В примере это podinfo. Если у вас уже есть Service, пропустите шаг.

kubectl -n tuna-example create deployment podinfo --image=ghcr.io/stefanprodan/podinfo --port=9898
kubectl -n tuna-example expose deployment podinfo --port=9898

Шаг 3. Запустите tuna​

tuna обращается к приложению по имени Service:

tuna.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tuna
spec:
replicas: 1
selector:
matchLabels:
app: tuna
template:
metadata:
labels:
app: tuna
spec:
containers:
- name: tuna
image: yuccastream/tuna:latest
args: ["http", "podinfo:9898"]
envFrom:
- secretRef:
name: tuna

Реплика нужна одна: каждая реплика поднимает свой туннель.

kubectl -n tuna-example apply -f tuna.yaml
kubectl -n tuna-example logs deploy/tuna

В логе tuna найдите строку Forwarding: в поле url — публичный адрес туннеля.

Удалить всё, что создано в примере:

kubectl delete namespace tuna-example

Инспектор​

В официальном образе yuccastream/tuna инспектор запросов по умолчанию выключен. Как его включить — в разделе Инспектор в Docker, в Kubernetes переменные задаются так же, через env контейнера.