Развертывание сайта
В этой статье рассмотрен пример развертывания сайта с помощью Managed Kubernetes.
Перед началом работы
Создайте кластер с доступом в интернет и группу узлов.
Установите Kubernetes CLI (kubectl).
Скачайте и примените Kubeconfig.
Установите Docker и зарегистрируйтесь. Обязательно подтвердите почту после регистрации.
Создайте публичный репозиторий Docker Hub.
Подготовьте необходимые файлы сайта. В этом примере сайт состоит из index.html и pic.png.
Пример index.html
Создание образа
Перед запуском сборки создайте образ для Nginx и Dockerfile.
В корне создайте каталог с названием Docker.
Переместите index.html и pic.png в созданный каталог.
Создайте конфигурационный файл с именем nginx.conf и сохраните его в каталоге Docker.
Добавьте в nginx.conf спецификацию:
server {listen 8080 default_server;listen [::]:8080 default_server;root /usr/share/nginx/html;index index.html;location / {try_files $uri $uri/ =404;}}В каталоге Docker создайте файл без расширения с именем Dockerfile.
Добавьте в Dockerfile спецификацию:
# укажите образ nginxFROM nginx:stable# укажите порт запуска сервисаEXPOSE 8080# добавьте в образ nginx конфигурацию (файл nginx.conf)COPY nginx.conf /etc/nginx/conf.d/nginx.conf# добавьте в образ артефакты сайта, для каждого артефакта необходимо добавить инструкцию по аналогииCOPY index.html /usr/share/nginx/html/index.htmlCOPY pic.png /usr/share/nginx/html/pic.pngSTOPSIGNAL SIGQUITCMD ["nginx", "-g", "daemon off;"]
Сборка образа контейнера
Перейдите в каталог Docker и запустите сборку образа с помощью команды:
docker build -t <your_docker_user_id>/my_html .Где:
your_docker_user_id — идентификатор пользователя в системе Docker.
Проверьте, что образ появился в списке образов Docker. Для этого в приложении Docker перейдите на вкладку Images → Local.
Отправка образа в репозиторий
Перейдите в корневой каталог и авторизуйтесь в Docker:
docker login -u "$docker_user_id" -p "$docker_user_password" docker.ioВыполните команду:
docker push <your_docker_user_id>/my_html:latestАвторизуйтесь в Docker Hub и перейдите на вкладку Repositories.
Проверьте, что образ перенесен в репозиторий.
Разработка спецификации приложения
В корневом каталоге создайте nginx-deployment.yaml и добавьте в него следующую спецификацию:
apiVersion: apps/v1kind: Deploymentmetadata:name: my-htmlspec:selector:matchLabels:run: my_htmlreplicas: 1template:metadata:labels:run: my_htmlspec:containers:- name: my-htmlimage: lerikaxp/my_html:latestports:- containerPort: 8080Где:
spec.template.spec.containers.image — полное наименование образа из Docker.
spec.replicas — количество реплик приложения.
В корневом каталоге создайте nginx-service.yaml и добавьте следующую спецификацию:
apiVersion: v1kind: Servicemetadata:name: html-lblabels:run: my_htmlspec:selector:run: my_htmlports:- port: 8080targetPort: 8080type: LoadBalancer
Развертывание приложения
Чтобы развернуть приложение, выполните команды:
kubectl apply -f nginx-deployment.yamlkubectl apply -f nginx-service.yaml
Результат будет следующим:
deployment.apps/my-html createdservice/html-lb created
Развертывание приложения займет 2–3 минуты.
Проверьте статус выполнения развертывания подов:
kubectl get pod
Если под с приложением находится в статусе «Running», развертывание прошло успешно.
Чтобы получить адрес для доступа к сайту, выполните команду:
kubectl get svc
В ответе будут доступны EXTERNAL-IP и PORT(S) для сервиса html-lb. Доступ к сайту можно получить по URL формата EXTERNAL-IP:PORT (например, http://37.230.181.250:8080).