8.3. Публикация веб-приложения из кластера K8s
Статья описывает базовый и наглядный способ опубликовать простое веб‑приложение (на примере nginx) из гостевого Kubernetes‑кластера развёрнутого в сервисе DevSpace с использованием сервиса типа LoadBalancer для доступа через внешний IP адрес.
Инструкция ориентирована на пользователей начального уровня, которые уже имеют общее представление о Kubernetes.
ПРЕДВАРИТЕЛЬНЫЕ УСЛОВИЯ
1. У вас уже создано пространство в сервисе DevSpace.
2. В этом пространстве развёрнут гостевой Kubernetes-кластер.
3. У вас есть доступ к кластеру через kubectl (kubeconfig уже получен и настроен).
4. kubectl указывает на нужный контекст:
kubectl config current-context
|
Если контекст неверный — переключитесь на нужный.
ЧТО МЫ БУДЕМ ДЕЛАТЬ
В рамках статьи мы:
1. Создадим Kubernetes-манифест с:
-
Deploymentдля запуска nginx;
-
Serviceтипа LoadBalancer для публикации приложения наружу.2. Применим манифест в гостевом кластере.3. Проверим, что сервис получил внешний адрес.4. Убедимся, что приложение доступно из браузера.ШАГ 1. СОЗДАНИЕ МАНИФЕСТА ПРИЛОЖЕНИЯСоздайте файл public-app.yaml:Добавьте в него следующий манифест:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deploy
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.27
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: my-app-lb
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
|
Deployment:
-
Запускает 2 реплики контейнера nginx;
-
Использует официальный образ nginx:1.27;
-
Контейнер слушает порт 80.Service (LoadBalancer):
-
Тип LoadBalancer означает, что платформа DevSpace создаст сетевой балансировщик с внешним IP;
-
Балансировщик будет направлять входящий трафик на Pod’ы nginx;
-
Порт 80 будет доступен извне.
ШАГ 2. ПРИМЕНЕНИЕ МАНИФЕСТА
Примените манифест в текущем пространстве:
kubectl apply -f public-app.yaml
|
В ответ вы должны увидеть сообщения вида:
deployment.apps/nginx-deploy
created service/my-app-lb created
|
ШАГ 3. ПРОВЕРКА СОСТОЯНИЯ РЕСУРСОВ
Проверка Pod’ов
Убедитесь, что Pod’ы запущены:
kubectl get pods
|
Ожидаемый результат:
NAME READY STATUS RESTARTS AGE
nginx-deploy-xxxxxx-yyyyy 1/1 Running 0 1m
nginx-deploy-xxxxxx-zzzzz 1/1 Running 0 1m
|
Проверка сервиса
Проверьте сервис:
kubectl get svc
|
Пример вывода:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
my-app-lb LoadBalancer 10.96.123.45 203.0.113.10 80:31234/TCP 1m
|
Важный момент
Это нормально — DevSpace в этот момент создаёт балансировщик.
|
ШАГ 4. ДОСТУП К ПРИЛОЖЕНИЮ
Когда поле EXTERNAL-IP заполнится:
1. Скопируйте внешний IP
2. Откройте браузер
3. Перейдите по адресу:
http://EXTERNAL-IP
|
Если всё сделано правильно, вы увидите стандартную страницу приветствия nginx.
ЧТО ДЕЛАТЬ ДАЛЬШЕ
После успешной публикации вы можете:
-
Заменить образ nginx на своё веб-приложение.
-
Масштабировать приложение, изменив replicas.
УДАЛЕНИЕ РЕСУРСОВ (ПРИ НЕОБХОДИМОСТИ)
Чтобы удалить всё, созданное в этом гайде:
kubectl delete -f public-app.yaml
|
Гайд предназначен как базовая отправная точка для работы с публикацией приложений в DevSpace. Его можно использовать как шаблон для собственных сервисов.
|