- tocdepth
2
Развертывание сайта
В этой статье рассмотрен пример развертывания сайта с помощью Managed Kubernetes.
Перед началом работы
Создайте кластер с доступом в интернет и группу узлов.
Установите Kubernetes CLI (kubectl).
Скачайте и примените Kubeconfig.
Установите Docker и зарегистрируйтесь. Обязательно подтвердите почту после регистрации.
Создайте публичный репозиторий Docker Hub.
Подготовьте необходимые файлы сайта. В этом примере сайт состоит из
index.html
иpic.png
.Пример index.html
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Managed Kubernetes</title> </head> <body> <center> <h1 align="center">Добро пожаловать в Cloud.ru</h1> <img src="pic.png" align="center"> </center> </body> </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
спецификацию:# укажите образ nginx FROM nginx:stable # укажите порт запуска сервиса EXPOSE 8080 # добавьте в образ nginx конфигурацию (файл nginx.conf) COPY nginx.conf /etc/nginx/conf.d/nginx.conf # добавьте в образ артефакты сайта, для каждого артефакта необходимо добавить инструкцию по аналогии COPY index.html /usr/share/nginx/html/index.html COPY pic.png /usr/share/nginx/html/pic.png STOPSIGNAL SIGQUIT CMD ["nginx", "-g", "daemon off;"]
Сборка образа контейнера
Перейдите в каталог
Docker
и запустите сборку образа с помощью команды:docker build -t <your_docker_user_id>/my_html .
Где:
your_docker_user_id
— идентификатор пользователя в системе Docker.Проверьте, что образ появился в списке образов Docker. Для этого в приложении Docker перейдите на вкладку
.
Отправка образа в репозиторий
Перейдите в корневой каталог и авторизуйтесь в 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/v1 kind: Deployment metadata: name: my-html spec: selector: matchLabels: run: my_html replicas: 1 template: metadata: labels: run: my_html spec: containers: - name: my-html image: lerikaxp/my_html:latest ports: - containerPort: 8080
Где:
spec.template.spec.containers.image
— полное наименование образа из Docker.spec.replicas
— количество реплик приложения.
В корневом каталоге создайте
nginx-service.yaml
и добавьте следующую спецификацию:apiVersion: v1 kind: Service metadata: name: html-lb labels: run: my_html spec: selector: run: my_html ports: - port: 8080 targetPort: 8080 type: LoadBalancer
Развертывание приложения
Чтобы развернуть приложение, выполните команды:
kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml
Результат будет следующим:
deployment.apps/my-html created
service/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).
для Dev & Test