Skip to content

TourmalineCore/pelican-local-env

Repository files navigation

Локальная Kubernetes среда

Более подробную информацию о проекте и связанных с ним репозиториях можно найти здесь: pelican-documentation.

Подготовка перед запуском

  1. Установите Docker
  2. Установите Visual Studio Code
  3. Установите плагин Visual Studio Code Dev Containers
  4. Установите Lens (commercial) или OpenLens (open source)

VSCode Dev Container

Откройте папку этого репозитория в VSCode, он может сразу предложить вам повторно открыть его в Dev container, или вы можете нажать Remote Explorer, найти кнопку плюс и выбрать опцию Open Current Folder in Container и подождать пока он будет готов.

Когда Dev Container будет готов, VSCode снова откроется. Откройте новый терминал, который будет выполнять команды в подготовленном Linux-контейнере, который мы уже предварительно установили и настроили:

  • Docker Outside of Docker или Docker из Docker, чтобы иметь возможность использовать docker демон хоста изнутри контейнера
  • kind для создания локального кластера k8s в Docker
  • kubectl для вызова кластера k8s из CLI (в обход Lens)
  • helm, helmfile для одновременного развертывания всех сервисов helm в локальном кластере k8s, созданном с помощью kind
  • helm-diff наглядно показывает, что изменилось с момента последнего применения helmfile apply

Примечание: Вам не нужно устанавливать эти пакеты в свою ОС, они уже являются частью Dev container. Таким образом, это простой способ запустить приложение на любой ОС.

Управление локальным кластером k8s

Создание кластера

Чтобы создать новый кластер, в котором вы будете работать, выполните следующую команду один раз:

kind create cluster --name pelican --config kind-local-config.yaml --kubeconfig ./.pelican-cluster-kubeconfig

Удаление кластера

Чтобы удалить ранее созданный кластер, выполните следующую команду:

kind delete cluster --name pelican

Подключение к кластеру

Затем у вас должна быть возможность получить созданную конфигурацию кластера k8s здесь, в корне репозитория .pelican-cluster-kubeconfig, и использовать ее в Lens для подключения к кластеру.

В Lens вы можете перейти в File -> Add Cluster, поместить туда скопированное содержимое файла config. После чего вы сможете подключиться к нему.

Развертывание в кластере

Чтобы развернуть приложение в кластере в первый раз или для повторного развертывания после изменения helm-чартов или их конфигурации, выполните следующую команду:

helmfile cache cleanup && helmfile --environment local --namespace local -f deploy/helmfile.yaml apply

Когда команда будет выполнена и все модули k8s будут запущены во вкладке local, вы сможете перейти по ссылке http://localhost:40110/ в вашем браузере и увидеть Hello World.

Примечание: в первый раз это можеть занять довольно большое количество времени.

Примечание: helmfile cache cleanup необходима для принудительного повторного извлечения values.yaml файлов из репозиториев git. В противном случае это никогда не приведет к их аннулированию. Ссылки: roboll/helmfile#720 (comment) и https://helmfile.readthedocs.io/en/latest/#cache.

Примечание: если была обновлена версия одного из ваших сервисов, например, была опубликована более новая версия pelican-ui:latest, вы не увидите изменений, выполнив команду helmfile apply. Вместо этого вам нужно удалить соответствующий служебный pod, в случае pelican-ui это pelican-nginx. После чего он повторно автоматически развернется и получит последние изменения.

Восстановление контента из бекапа

Чтобы восстановить контент на сайте из бекапа, выполните следующую команду:

bash ./restore-local-env.sh

Примечание: все внесенные изменения будут удалены.

Отладка Helm-чартов

Чтобы увидеть, как будут выглядеть все чарт-манифесты перед применением, вы можете выполнить следующую команду:

helmfile cache cleanup && helmfile --environment local --namespace local -f deploy/helmfile.yaml template

URLs всех сервисов

Открытие интерфейса minio-s3

Открытие интерфейса админской панели CMS

Возможные проблемы

  • OpenLens не показывает никаких развернутых модулей. Убедитесь, что для параметра "Namespace" в поле "Workloads" задано значение "local" или "All namespaces".

  • не открывается http://localhost:40110/

    Невозможно получить доступ до сайта, локальный хост отказался подключаться.
    

    Если вы видите это в своем браузере, пожалуйста, попробуйте открыть сайт в режиме инкогнито.

  • не устанавливается чарт pelican-ui

    COMBINED OUTPUT:
    Release "pelican-ui" does not exist. Installing it now.
    coalesce.go:286: warning: cannot overwrite table with non table for nginx.ingress.annotations (map[])
    coalesce.go:286: warning: cannot overwrite table with non table for nginx.ingress.annotations (map[])
    Error: context deadline exceeded
    

    Eсли вы увидите это после попытки выполнить команду helmfile apply, просто повторите попытку helmfile apply.

  • в случае возникновения какой-либо другой странной проблемы:

    1. Удалите docker container под названием pelican-control-plane.
    2. Удалите кластер из Lens.
    3. Попробуйте выполнить все команды из инструкции, начиная с kind create.

Полезные ссылки, используемые для настройки репозитория

Локальный билд из feature-ветки

Шаги, чтобы проверить еще не смерженные изменения из ветки (на примере UI, в CMS репе по аналогии):

  1. В репозитории UI нужно запустить билд образа:
docker build -t local-ui:0.0.1 . 
  1. В репозитории local-env в docker контейнере после того, как 1 шаг закончится, нужно запустить:
kind load docker-image local-ui:0.0.1 --name pelican
  1. В values-ui.yaml.gotmpl вставить:
image:
    registry: ""
    repository: "local-ui"
    tag: "0.0.1"
    pullPolicy: "Never"
  1. Выполнить команду:
helmfile cache cleanup && helmfile --environment local --namespace local -f deploy/helmfile.yaml apply

Мониторинг потребления ресурсов

Чтобы увидеть, сколько ресурсов потребляется сервисами, вы можете выполнить следующую команду:

kubectl top pods --namespace local

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 11