В тестовой среде Kubernetes необходимо обеспечить доступ к двум приложениям снаружи кластера по разным путям.
- Установленное k8s-решение (например, MicroK8S).
- Установленный локальный kubectl.
- Редактор YAML-файлов с подключённым Git-репозиторием.
- Инструкция по установке MicroK8S.
- Описание Service.
- Описание Ingress.
- Описание Multitool.
- Создать Deployment приложения frontend из образа nginx с количеством реплик 3 шт.
- Создать Deployment приложения backend из образа multitool.
- Добавить Service, которые обеспечат доступ к обоим приложениям внутри кластера.
- Продемонстрировать, что приложения видят друг друга с помощью Service.
- Предоставить манифесты Deployment и Service в решении, а также скриншоты или вывод команды п.4.
frontend:
backend:
$ kubectl apply -f ./src/frontend/Deployment.yml
$ kubectl apply -f ./src/frontend/Service.yml
$ kubectl apply -f ./src/backend/Deployment.yml
$ kubectl apply -f ./src/backend/Service.yml
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
backend-69fdc9f5fb-bj6nf 1/1 Running 0 111s
backend-69fdc9f5fb-rmvl5 1/1 Running 0 111s
backend-69fdc9f5fb-swgzs 1/1 Running 0 111s
frontend-6bc548fcdb-hhpx9 1/1 Running 0 116s
frontend-6bc548fcdb-rrfvh 1/1 Running 0 116s
frontend-6bc548fcdb-t6bh2 1/1 Running 0 116s
kubectl exec -it backend-69fdc9f5fb-bj6nf -- curl frontend:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
- Включить Ingress-controller в MicroK8S.
- Создать Ingress, обеспечивающий доступ снаружи по IP-адресу кластера MicroK8S так, чтобы при запросе только по адресу открывался frontend а при добавлении /api - backend.
- Продемонстрировать доступ с помощью браузера или
curl
с локального компьютера. - Предоставить манифесты и скриншоты или вывод команды п.2.
В minikube Ingress-controller уже есть. Нужно включить.
minikube addons enable ingress
$ kubectl apply -f ./src/Ingress.yml
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
my-ingress <none> my-domain.com 192.168.67.2 80 3m
$ kubectl describe ingress my-ingress
Name: my-ingress
Labels: <none>
Namespace: default
Address: 192.168.67.2
Ingress Class: <none>
Default backend: <default>
Rules:
Host Path Backends
---- ---- --------
my-domain.com
/ frontend:80 (10.244.0.93:80,10.244.0.94:80,10.244.0.95:80)
/api backend:8080 (10.244.0.96:8080,10.244.0.97:8080,10.244.0.98:8080)
Далее прописываем в hosts
192.168.67.2 my-domain.com
$ curl my-domain.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
$ curl my-domain.com/api
WBITT Network MultiTool (with NGINX) - backend-69fdc9f5fb-clj89 - 10.244.0.98 - HTTP: 8080 , HTTPS: 443 . (Formerly praqma/network-multitool)
- Домашняя работа оформляется в своем Git-репозитории в файле README.md. Выполненное домашнее задание пришлите ссылкой на .md-файл в вашем репозитории.
- Файл README.md должен содержать скриншоты вывода необходимых команд
kubectl
и скриншоты результатов. - Репозиторий должен содержать тексты манифестов или ссылки на них в файле README.md.