[{"content":"","date":null,"permalink":"/","section":"EvilAlivE","summary":"","title":"EvilAlivE"},{"content":"SCALE Apps - это инструмент Helm-Charts-as-Apps. Однако, в отличие от более \u0026ldquo;премиальных\u0026rdquo; решений, таких как kubeapps, он не создавался специалистами по Kubernetes и не предлагает полной свободы в развертывании Helm чартов. Также вы не можете вручную редактировать файлы Chart-Yaml.\nЭто делает SCALE Apps отличным инструментом для пользователей, использующих сетевое хранилище TrueNAS SCALE и запускающих на нем несколько приложений. Но делает его менее оптимальным для продвинутых пользователей.\nсовет #Пожалуйста, не забывайте проверять информацию, относящуюся к конкретному чарту.\nTier #SCALE Apps - это то, что мы называем вариантами развертывания \u0026ldquo;уровня 3\u0026rdquo; (Tier 3). Это означает, что, хотя мы и ожидаем, что все пройдет гладко, скорее всего, существуют оговорки, ограниченные возможности и/или ограниченный штат сотрудников, готовых оказать помощь.\nПоэтому мы рекомендуем использовать решения \u0026ldquo;уровня 2\u0026rdquo; или \u0026ldquo;уровня 1\u0026rdquo;.\nПредостережения #SCALE Apps - это довольно ограниченное решение. Для обычной домашней лаборатории TrueCharts SCALE Apps, скорее всего, подойдет как нельзя лучше. Но для более продвинутых систем этого недостаточно.\nКроме того, он добавляет значительные слои \u0026ldquo;middleware\u0026rdquo; (промежуточного ПО) между графическим интерфейсом приложения и Kubernetes/Helm, что чревато возникновением нишевых проблем, с которыми не сталкиваются другие варианты развертывания.\nМы также хотели бы отметить, что iX-Systems, создатели TrueNAS SCALE, не имеют большого опыта работы с Kubernetes или специализированных инженеров. Это сказывается на качестве конечного продукта.\nПоэтому для управления чартами мы предпочитаем использовать KubeApps: https://truecharts.org/manual/kube-apps.\nКак настроить #Это можно сделать, следуя руководствам SCALE здесь\n","date":"11 апреля 2024","permalink":"/posts/post_20240411/","section":"Статьи","summary":"Краткое введение в TrueCharts.","title":"Введение в TrueCharts"},{"content":"","date":null,"permalink":"/posts/","section":"Статьи","summary":"","title":"Статьи"},{"content":"Приложения использующие базы данных PostgressSQL после обновления на новый CNPG Common от TrueCharts иногда могут не пережить перезагрузку сервера. Приложение зависает в состоянии DEPLOYING и его поды находятся в состоянии Completed или TaintToleration.\nПОЛИТИКА МАКСИМАЛЬНОГО УСИЛИЯ #Данное руководство было написано стараниями сотрудников TrueCharts и протестировано насколько возможно хорошо. Мы не несем ответственности, если оно не сработает в каждом сценарии или ситуации пользователя, или если в результате этого произойдет потеря данных. Данное руководство было протестировано с TrueNAS SCALE 22.12.4.2, Cobia beta, CNPG 1.20.2_2.0.3 и HomeAssistant 2023.10.3_20.0.12.\nСимптомы #Если вы перезагрузили сервер и ваши приложения зависли в состоянии DEPLOYING, проверьте если поды находятся в состоянии Completed или TaintToleration и главный под приложения в состоянии Init командой:\nk3s kubectl get all -n ix-\u0026lt;имя приложения\u0026gt; Пример вывода команды:\nk3s kubectl get all -n ix-home-assistant NAME READY STATUS RESTARTS AGE pod/home-assistant-cnpg-main-1 0/1 TaintToleration 0 12h pod/home-assistant-cnpg-main-2 0/1 TaintToleration 0 12h pod/home-assistant-85865456d5-tc8h4 0/1 TaintToleration 0 12h pod/home-assistant-85865456d5-kl96x 0/1 Init:0/2 0 12h k3s kubectl get all -n ix-home-assistant NAME READY STATUS RESTARTS AGE pod/home-assistant-cnpg-main-2 0/1 Completed 0 22m pod/home-assistant-cnpg-main-rw-df9bcbccc-s8z2n 0/1 Completed 0 23m pod/home-assistant-cnpg-main-rw-df9bcbccc-ptltn 0/1 Completed 0 23m pod/home-assistant-cnpg-main-rw-df9bcbccc-jbbcj 1/1 Running 0 12m pod/home-assistant-5867d984d9-gfznd 0/1 Completed 0 23m pod/home-assistant-cnpg-main-1 0/1 Completed 0 23m pod/home-assistant-cnpg-main-rw-df9bcbccc-q2w2d 1/1 Running 0 12m pod/home-assistant-5867d984d9-vcp6x 0/1 Init:0/2 0 12m Лог из контейнера cnpg-wait в основном поде приложения показывает, что-то похожее на:\nTesting database on url: home-assistant-cnpg-main-rw home-assistant-cnpg-main-rw:5432 - no response Шаги Для Восстановления #Для того, чтобы восстановить ваше приложение вам необходимо для начала его остановить, удалить зависшие поды и после перезапустить приложение:\nОстанавливаем приложение установкой галочки «Stop All» в настройках приложения или с помощью HeavyScript: heavyscript app --stop \u0026lt;app-name\u0026gt; Ждём 2-3 минуты. Удаляем все зависшие поды командами: k3s kubectl delete pods -n ix-\u0026lt;app-name\u0026gt; \u0026lt;pod name\u0026gt; например k3s kubectl delete pods -n ix-home-assistant home-assistant-85865456d5-tc8h4 Запускаем приложение или снимая галочку «Stop All» или через HeavyScript: heavyscript app --start \u0026lt;app-name\u0026gt; Если вы снимали галочку «Stop All», то возможно вам надо будет нажать кнопку Start в TrueNAS Web UI (Да кнопку Start нажимать можно — кнопку Stop НЕЛЬЗЯ!). На этом этапе у вас может быть зависшее задание в списке задач TrueNAS (верхний правый угол TrueNAS Web UI). Вы можете избавиться от него выполнив следующее: systemctl restart middlewared Подождите 2-3 минуты. Проверьте, что приложение и всего его поды запустились. У вас не должно быть deployment.apps в состоянии 0 AVAILABLE: Пример: k3s kubectl get all -n ix-home-assistant NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/home-assistant-cnpg-main-rw 0/0 0 0 14h deployment.apps/home-assistant 1/1 1 1 14h Вы можете самостоятельно масштабировать их (scale up) до 1 реплики или до 2х если это под cnpg-main-rw. Делаем: k3s kubectl scale deploy \u0026lt;имя приложения\u0026gt; -n ix-\u0026lt;имя пространства имен\u0026gt; --replicas=1 например k3s kubectl scale deploy home-assistant-cnpg-main-rw -n ix-home-assistant --replicas=2 Безопасная Перезагрузка #Вы восстановили ваши приложения, но что если вам надо перезагрузить сервер опять? Есть безопасный и быстрый способ через Unset пула приложений:\nApps -\u0026gt; Settings -\u0026gt; Unset Pool. Ждём пока все приложения не масштабируются до нуля (scale down). Вы не будете видеть ваши приложения, но они не будут удалены! Перезагружаем сервер. Apps -\u0026gt; Settings -\u0026gt; Choose Pool. Выбираем наш пул приложений. Ждём пока наши приложения не запустятся (scale up). ","date":"25 декабря 2023","permalink":"/posts/post_20231225/","section":"Статьи","summary":"Приложения использующие базы данных PostgressSQL после обновления на новый CNPG Common от TrueCharts иногда могут не пережить перезагрузку сервера. Приложение зависает в состоянии DEPLOYING и его поды находятся в состоянии Completed или TaintToleration.","title":"Восстановление CNPG приложения после перезагрузки сервера"},{"content":"Цель данной статьи - ответить на наиболее часто встречающиеся вопросы по работе приложений от TrueCharts и помочь с решением некоторых проблем. FAQ будет дополняться и обновляться.\n1. Я раньше все делал через Docker, а тут все по другому и ничего не понятно. #Приложения от TrueCharts разворачиваются на кластере Kubernetes. Kubernetes группирует контейнеры, составляющие приложение, в логические единицы для более простого управления и обнаружения. Если кратко - то Kubernetes решает за вас следующие задачи: мониторинг, оркестрация, автоматическое развертывание и откаты, распределение нагрузки, самоконтроль, управление информацией и конфигурацией.\nОсновная единица - это кластер (cluster). В нашем кластере размещаются ноды (nodes) - это рабочие узлы на которых запускаются контейнеризированные приложения. А в рабочих узлах размещены поды (pods). Под (pod) - это наши компоненты приложения. Внутри пода помимо контейнера(ов) с нашим приложением размещается kubelet, kube-proxy и среда выполнения контейнера (docker, containerd, CRI-O). Ресурсы в кластере разделяются с помощью Пространств имён (Namespaces).\nВсе команды в этом FAQ выполняем от пользователя root в консоли вашего TrueNAS SCALE сервера.\nВАЖНО!!! Все команды из пунктов 1-6 выполняем только если другие способы заставить приложение работать не помогли. Автор FAQ не несет ответственность за ваши действия. Все что вы делаете - вы делаете на свой страх и риск.\nКогда мы осуществляем установку нового приложения (деплой), то получаем новое пространство имен с названием ix-\u0026lt;имя приложения\u0026gt;, например ix-traefik. Если мы хотим увидеть все пространства имен на нашем кластере, то выполняем команду:\nk3s kubectl get ns Поды внутри нашего пространства имён будут иметь вид: \u0026lt;имя приложения\u0026gt;-aaaaaaaaa-aaaaa, например traefik-8665b8466c-h6c9g. Если мы хотим увидеть все поды на нашем кластере, то выполняем команду:\nk3s kubectl get pods -A Помимо подов, пространств имён есть еще Сервисы (Services) - сервисы это методы позволяющие выставить наружу ваше сетевое приложение развернутое как один или несколько подов в кластере. Например у Traefik мы видим три сервиса: traefik, traefik-metrics и traefik-tcp. Чтобы посмотреть сервисы выполняем команду:\nk3s kubectl get svc -A А если хотим ограничить вывод только нужным приложением, то есть два варианта. Ограничиваем вывод только нужным нам пространством имён:\nk3s kubectl get svc -n ix-traefik Или выводим все сервисы из всех пространств имен и фильтруем по имени нашего приложения:\nk3s kubectl get svc -A | grep traefik 2. Что-то все сложно. Хочу увидеть все и сразу, что у меня там на кластере? #Используем команду:\nk3s kubectl get pods,svc,ns -A Получаем все пространства имен, сервисы и поды сразу.\n3. Я пытался удалить приложение - оно пропало из списка Apps в TrueNAS, но я вижу его поды/сервисы в списке, а само пространство имен в статусе terminating. #Для начала пробуем удалить наши поды командой:\nk3s kubectl delete pods \u0026lt;имя пода\u0026gt; -n \u0026lt;имя пространства имен\u0026gt; Если поды не удаляются, то мы можем попробовать удалить наше пространство имен следующим образом:\nk3s kubectl delete namespace \u0026lt;имя пространства имен\u0026gt; ВНИМАНИЕ!!! Удаление пространства имен ведет к удалению всех данных и настроек вашего приложения.\n4. Что-то все долго удаляется, наверно зависло. #Наш кластер Кубернетис - асинхронный. Удаление подов, нодов и т.д. может занять некоторое время. Если мы хотим убить все как можно скорее, то добавляем ключи \u0026ndash;force \u0026ndash;grace-period=0. Например:\nk3s kubectl delete pods --grace-period=0 --force \u0026lt;имя пода\u0026gt; 5. А не хочет мое пространство имен удаляться. #Скорее всего у вас остались сервисы/поды, которые \u0026ldquo;возрождаются\u0026rdquo; через DaemonSet. DaemonSet - гарантирует, что все или некоторые ноды все еще выполняют копию подов. Ноды добавляются в кластер, поды добавляются в ноды. В момент удаления нод из кластера может остаться мусор в виде подов/сервисов. В таком случае удаление DaemonSet позволит избавиться от таких \u0026ldquo;мертвых\u0026rdquo; ресурсов. Получаем список DaemonSet:\nk3s kubectl get daemonset -A Удаляем ненужные нам daemonset командой:\nk3s kubectl delete daemonset \u0026lt;имя demonset\u0026gt; -n \u0026lt;пространство имён\u0026gt; 6. После последнего обновления сломались какие-то statefulsets. Это что? #Иногда поды должны иметь постоянную идентификацию в сети - StatefulSet контроллер назначает таким подам постоянные уникальные значения для идентификации в сети. Есть ли на вашем кластере такие ресурсы? Давайте узнаем:\nk3s kubectl get statefulsets -A Если нам надо удалить statefulset для какого-то приложения, то выполняем команду:\nk3s kubectl delete statefulset \u0026lt;имя statefulset\u0026gt; -n \u0026lt;имя пространства имен\u0026gt; 7. А может можно проще починить вечный деплой приложения? #Иногда может помочь следующая команда:\nsystemctl restart middlewared.service И если после этого проблема не исчезла. Пробуем озвученные выше методы.\n","date":"24 декабря 2023","permalink":"/posts/post_20231224/","section":"Статьи","summary":"Ответы на наиболее частые вопросы по работе приложений от TrueCharts.","title":"TrueCharts Advanced FAQ"},{"content":"Ниже приведены рекомендации по переходу от пустой или свежей установки TrueNAS SCALE к использованию TrueCharts с максимально возможной эффективностью и производительностью по мнению команды TrueCharts. Это не заменяет руководства по конкретным приложениям и/или руководства по отдельным темам (PVC, VPN, связывание приложений и т.д.), поэтому продолжайте знакомиться с документацией по конкретным приложениям и руководствами по TrueNAS SCALE, которые мы разместили на нашем сайте. Если требуется дополнительная информация о TrueNAS SCALE, пожалуйста, ознакомьтесь с нашей страницей Введение в SCALE.\nТребования # Приложения TrueCharts совместно используют вычислительные ресурсы вашей системы. Пожалуйста, ознакомьтесь с рекомендуемыми системными требованиями. Набор данных приложения (apps dataset) должен быть достаточно большим для хранения контейнеров, конфигурационных файлов, моментальных снимков и других данных постоянного тома (PVC). Позже вы всегда сможете настроить дополнительное хранилище с помощью пулов жестких дисков (например, папка downloads) для определенных приложений. Убедитесь, что в вашей установке SCALE есть рабочий пул хранения (storage pool), который вы хотите использовать для TrueCharts. Подробнее об этом читайте в руководстве по SCALE. Убедитесь, что у вас есть рабочее подключение к Интернету и вы можете связаться с хост-системой по адресам https://github.com, https://truecharts.org и https://tccr.io. Убедитесь, что время в системе актуально и в настройках SCALE выбран предпочтительный часовой пояс. Установленные приложения будут работать по умолчанию в этом часовом поясе. Вы вошли в веб-интерфейс TrueNAS SCALE с правами root или пользователя, который может выполнять команды с правами root. Пул приложений должен быть настроен до добавления TrueCharts. При первом открытии пункта меню Apps на SCALE вам будет предложено выбрать пул хранения для ваших приложений. КРАТКИЕ РУКОВОДСТВА #Ниже приведены краткие описания полной настройки для определенных случаев использования. Прокрутите страницу вниз, чтобы получить краткую информацию о каждом шаге и о том, почему они рекомендуются.\nМинимальная начальная установка SCALE # Добавьте каталог со следующими разделами (trains): stable, enterprise, operators -\u0026gt; Добавление TrueCharts Добавьте следующие операторы из раздела operators с настройками по умолчанию: cloudnative-pg, prometheus-operator, cert-manager -\u0026gt; Руководство по установке операторов Начало использования Charts в собственном домене # Шаги выше -\u0026gt; Минимальное руководство по началу работы с SCALE Использование Cloudflare для DNS и создание API-токена -\u0026gt; Руководство Добавить Clusterissuer -\u0026gt; Clusterissuer How-to Перенести порт TrueNAS на 81, 444 -\u0026gt; Инструкции TrueNAS WebUI Добавить Traefik -\u0026gt; Traefik How-To Добавить Blocky -\u0026gt; Инструкция по настройке Blocky Настройте ингресс (ingress) на каждом Chart, который вы хотите выставить наружу -\u0026gt; Настройте ингресс с помощью сертификатов Clusterissuer Полная настройка TrueCharts на TrueNAS SCALE #Все, что описано ниже (включает в себя шаги, перечисленные выше, а также дополнительные возможности, такие как Heavyscript, MetalLB и Authelia)\nДобавление TrueCharts #Чтобы добавить TrueCharts в SCALE, выполните следующие действия:\nПерейдите на страницу Apps из меню SCALE верхнего уровня. Выберите вкладку Manage Catalogs (Управление каталогами) на странице Apps (Приложения)\nНажмите кнопку Add Catalog (Добавить каталог) После прочтения уведомления iXsystems нажмите кнопку Continue (продолжить) и введите необходимую информацию: Name: truecharts Repository: [github.com/truecharts/catalog](https://github.com/truecharts/catalog) Preferred Trains: enterprise, stable и operators (введите каждый из них вручную) Branch: main Нажмите кнопку Save (сохранить) и позвольте SCALE обновить свой каталог с TrueCharts (это может занять несколько минут). Если вам нужна дополнительная информация по этому процессу, посмотрите видеоролик с веб-сайта документации TrueNAS, посвященный добавлению каталогов сторонних производителей.\nВВЕДЕНИЕ В РУКОВОДСТВО ПО TRUENAS SCALE #Пожалуйста, ознакомьтесь с нашим руководством Введение в TrueNAS SCALE, в котором содержится конкретная информация по установке, редактированию, откату и командам CLI для работы с приложениями на TrueNAS SCALE.\nОбзор разделов TrueCharts #TrueCharts имеет несколько «разделов» (trains), или ветвей приложений, которые вы можете выбрать для установки. Ниже приводится краткое описание каждого раздела и его назначение.\nstable содержит приложения, которые были тщательно протестированы и, как ожидается, будут работать стабильно. Стабильная версия приложения всегда является лучшей из доступных версий. incubator содержит приложения, которые все еще находятся в разработке и/или не считаются достаточно стабильными и работающими, чтобы быть перемещенными в стабильную ветку. dependency содержит приложения, которые в основном используются в качестве зависимостей. Эта ветка не поддерживается, за исключением исправления ошибок. enterprise содержит приложения для основных функций TrueCharts и, в будущем, будет охвачена дополнительной поддержкой для профессиональных случаев использования. operators содержит операторы для некоторых приложений и может потребоваться для их работы, поэтому рекомендуется оставить эту опцию включенной. Список всех приложений, доступных для каждого состава TrueCharts, см. здесь.\nHeavyscript #После добавления каталога TrueCharts мы также рекомендуем установить Heavyscript и настроить его на ночной запуск с помощью задания cron. Это bash-скрипт для управления приложениями TrueNAS SCALE, автоматического обновления приложений, резервного копирования наборов данных приложений, открытия оболочки для контейнеров и многих других функций. Для получения дополнительной информации посетите страницу Heavyscript на GitHub.\nУстановка MetalLB и отключение встроенного LoadBalancer #Этот шаг может быть необязательным, но рекомендуется для опытных пользователей и/или тех, кто хочет назначить определенные IP-адреса своим SCALE-приложениям. На странице MetalLB-Config Setup Guide мы разместили полное руководство по настройке MetalLB и отключению интегрированного Loadbalancer. Пожалуйста, обратитесь к этой странице для получения дополнительной информации.\nРуководство по установке и переносу CNPG/Prometheus Operators для старых пользователей # Многие из наших популярных приложений для TrueNAS SCALE используют CloudNativePG или сокращенно CNPG и требуют установки операторов Cloudnative-PG и Prometheus ДО установки приложений, использующих CNPG. Поэтому, если вы не уверены, что используете какие-либо приложения с CNPG, мы рекомендуем пользователям сначала установить операторы cloudnative-pg/prometheus-operator, прежде чем пытаться установить приложения. Если вы переходите с другого оператора CNPG, пожалуйста, ознакомьтесь с руководством по миграции CNPG, в котором описаны шаги по установке оператора cloudnative-pg и миграции. Кроме того, см. статью в этом выпуске новостей об удалении старого встроенного оператора prometheus\nДля новых пользователей, только начинающих работать с TrueNAS SCALE, можно просто установить cloudnative-pg и prometheus-operator из каталога сообщества TrueCharts.\nУстановка Traefik для поддержки Ingress / Reverse-Proxy в приложениях TrueCharts # Traefik, наше решение для ingress или обратного прокси (reverse proxy), интегрировано во все наши приложения, чтобы максимально упростить защиту ваших приложений. Для этого мы поставляем отдельное приложение Traefik «ingress», которое предварительно настроено для обеспечения безопасных и быстрых соединений. Пожалуйста, ознакомьтесь с инструкциями и видеороликом в разделе Traefik How-To.\nВ исключительно редких случаях, если установка Traefik не удалась, перед повторной попыткой может потребоваться выполнить в shell от имени root:\nk3s kubectl apply --server-side --force-conflicts -k https://github.com/truecharts/manifests/manifests Одной из дополнительных функций, поддерживаемых Traefik и многими приложениями Truecharts Community Catalog, такими как Nextcloud, является возможность использования middleware (промежуточного ПО) для удаленного использования ваших приложений. Настроить middleware ПО basicAuth можно с помощью нашего руководства Add Traefik Basic Auth to Apps.\nУстановка Cert-Manager (оператор) и Clusterissuer для управления сертификатами # TrueCharts поддерживает использование только Cert-Manager (как операторской части, так и clusterissuer) для управления сертификатами в приложениях для TrueNAS SCALE. Использование сертификатов TrueNAS SCALE через графический интерфейс deprecated (устарело) и может перестать работать в будущих обновлениях. Мы настоятельно рекомендуем настраивать clusterissuer с помощью нашего руководства по настройке clusterissuer перед добавлением Ingress в приложения.\nУстановка и руководство по использованию Blocky DNS для split-DNS # Blocky — это необязательное, но предпочтительное DNS-решение для TrueCharts. Это DNS-прокси, DNS-улучшатель и блокировщик рекламы, поддерживающий «split-DNS» через K8S-Gateway и обладающий высокой степенью доступности. В руководстве BlockySetup-Guide рассматриваются основные параметры настройки, которые помогут вам начать работу, но не являются исчерпывающими.\nУстановка Authelia # Authelia — это многофакторный портал Single Sign-On для веб-приложений, который является предпочтительным решением для защиты приложений TrueCharts при открытии их наружу с использованием Traefik в качестве Ingress. Мы подготовили подробное руководство по настройке Authelia, а также по использованию LLDAP в качестве бэкенда для Authelia и настройке секции forwardAuth в Traefik для обработки перенаправления и обеспечения безопасности приложений. Более подробная информация приведена в руководстве по настройке Authelia. Это не является строгим требованием, однако в противном случае рекомендуется задать очень надежный пароль на предыдущих шагах.\nВидеоинструкция #\r","date":"31 августа 2023","permalink":"/posts/post_20230831/","section":"Статьи","summary":"Рекомендации по переходу от пустой или свежей установки TrueNAS SCALE к использованию TrueCharts с максимально возможной эффективностью и производительностью по мнению команды TrueCharts.","title":"Начало работы с TrueCharts"},{"content":"","date":null,"permalink":"/ementat/","section":"Ementat","summary":"","title":"Ementat"},{"content":"","date":null,"permalink":"/tags/","section":"Теги","summary":"","title":"Теги"}]