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:
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 контейнера.