Giter Site home page Giter Site logo

k8s's Introduction

Django Site

Докеризированный сайт на Django для экспериментов с Kubernetes.

Внутри контейнера Django приложение запускается с помощью Nginx Unit, не путать с Nginx. Сервер Nginx Unit выполняет сразу две функции: как веб-сервер он раздаёт файлы статики и медиа, а в роли сервера-приложений он запускает Python и Django. Таким образом Nginx Unit заменяет собой связку из двух сервисов Nginx и Gunicorn/uWSGI. Подробнее про Nginx Unit.

Как подготовить окружение к локальной разработке

Код в репозитории полностью докеризирован, поэтому для запуска приложения вам понадобится Docker. Инструкции по его установке ищите на официальных сайтах:

Вместе со свежей версией Docker к вам на компьютер автоматически будет установлен Docker Compose. Дальнейшие инструкции будут его активно использовать.

Как запустить сайт для локальной разработки

Запустите базу данных и сайт:

$ docker compose up

В новом терминале, не выключая сайт, запустите несколько команд:

$ docker compose run --rm web ./manage.py migrate  # создаём/обновляем таблицы в БД
$ docker compose run --rm web ./manage.py createsuperuser  # создаём в БД учётку суперпользователя

Готово. Сайт будет доступен по адресу http://127.0.0.1:8080. Вход в админку находится по адресу http://127.0.0.1:8000/admin/.

Разертывание с помощью Minikube

Перед началом работы убедитесь что у вас установлены следующие инструменты:

  • Инструмент для управления кластерами Kubernetes: Kubectl.
  • Minikube

Linux:

 minikube start --driver=virtualbox --insecure-registry true image-pull-policy Never --force

Для Windows необходимо установить гипервизор. Например, virtualbox. Windows:

minikube start --driver=virtualbox

Настройка и запуск базы данных

Создайте файл values.yaml в директории проекта и заполните его по шаблону:

auth:
  enablePostgresUser: true
  postgresPassword: {your database password}
  username: {your username}
  password: {your user`s password}
  database: {your database`s name}

Установите пакетный менеджер для Kubernetes - Helm Выполните следующие команды:

helm install postgre-release -f values.yaml bitnami/postgresql

Helm установит и запустит postgresql, а также создаст пользователя по параметрам, указанным в values.yaml.

Переменные окружения

Создайте манифест файл secrets-manifest.yml с секретами и запустите командой:

kubectl apply -f secrets-manifest.yml

Содержимое файла secrets-manifest.yml:

apiVersion: v1
kind: Secret
metadata:
  name: django-secret
stringData:
  ALLOWED_HOSTS: ['*']
  DATABASE_URL: 'postgres://user_name:password@db_host:5432/db_name'
  DEBUG: 'False'
  SECRET_KEY: 'your-secret-key'

SECRET_KEY -- обязательная секретная настройка Django. Это соль для генерации хэшей. Значение может быть любым, важно лишь, чтобы оно никому не было известно. Документация Django.

DEBUG -- настройка Django для включения отладочного режима. Принимает значения TRUE или FALSE. Документация Django.

ALLOWED_HOSTS -- настройка Django со списком разрешённых адресов. Если запрос прилетит на другой адрес, то сайт ответит ошибкой 400. Можно перечислить несколько адресов через запятую, например 127.0.0.1,192.168.0.1,site.test. Документация Django.

DATABASE_URL -- адрес для подключения к базе данных PostgreSQL. Другие СУБД сайт не поддерживает. Формат записи.

Настройка и запуск Django

Создайте образ Django-приложения в кластере:

minikube image build -t django-app backend_main_django/

Создайте объект Secret в ноде, выполнив команду:

 kubectl create secret generic django-k8s-env --from-env-file=<path_to_env_file>

Запустите деплой:

kubectl apply -f deploy-manifest.yml

Запустите сервис:

kubectl apply -f svc-manifest.yml

Заупстите миграции:

kubectl apply -f django-migrate.yml

Создайте запланированное задание CronJob:

kubectl apply -f django-clearsessions-once.yml

Hosts

В папке /etc/hosts добавьте строку:

<minikube ip> star-burger.test www.star-burger.test

k8s's People

Contributors

vnetraffiqua avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.