<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Katamarina - PaaS-платформа для построения облачных инфраструктур. – Katamarina Cozystack</title><link>https://katamarina.ru/docs/cozystack/</link><description>Recent content in Katamarina Cozystack on Katamarina - PaaS-платформа для построения облачных инфраструктур.</description><generator>Hugo -- gohugo.io</generator><language>ru</language><atom:link href="https://katamarina.ru/docs/cozystack/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Введение в Cozystack</title><link>https://katamarina.ru/docs/cozystack/introduction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://katamarina.ru/docs/cozystack/introduction/</guid><description>
&lt;h2 id="что-такое-cozystack">Что такое Cozystack&lt;/h2>
&lt;p>Cozystack — это фреймворк на базе Kubernetes для построения среды частного облака.
Он может использоваться отдельной компанией для запуска собственного
&lt;a href="https://cozystack.ru/docs/v1.2/guides/use-cases/private-cloud" target="_blank">частного облака&lt;/a> или поставщиком услуг для предоставления
&lt;a href="https://cozystack.ru/docs/v1.2/guides/use-cases/public-cloud" target="_blank">платформы как услуги&lt;/a> нескольким клиентам.&lt;/p>
&lt;p>Cozystack закрывает наиболее важные потребности команды разработчиков:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://cozystack.ru/docs/v1.2/cozystack-api" target="_blank">Кластеры Kubernetes&lt;/a> для запуска приложений в среде разработки и в продакшене&lt;/li>
&lt;li>Стандартные
&lt;a href="https://cozystack.ru/docs/v1.2/applications" target="_blank">управляемые приложения&lt;/a>: базы данных, менеджеры очередей, кэши и многое другое&lt;/li>
&lt;li>
&lt;a href="https://cozystack.ru/docs/v1.2/virtualization" target="_blank">Виртуальные машины&lt;/a>&lt;/li>
&lt;li>Надёжное распределённое хранилище&lt;/li>
&lt;/ul>
&lt;p>
&lt;a href="https://cozystack.ru/docs/v1.2/guides/platform-stack" target="_blank">Платформенный стек Cozystack&lt;/a> включает надёжные компоненты, которые обычно устанавливаются
в кластеры Kubernetes по отдельности.
Здесь они собраны вместе и протестированы для бесперебойной совместной работы.
Платформа виртуализации также встроена и не требует дополнительного оборудования.
Вместо этого виртуальные машины запускаются непосредственно внутри Kubernetes.&lt;/p>
&lt;p>Ещё одна мощная функция —
&lt;a href="https://cozystack.ru/docs/v1.2/guides/concepts#tenant-system" target="_blank">система тенантов&lt;/a>.
Она позволяет изолировать отдельных разработчиков, команды или даже целые компании в их собственных полнофункциональных пространствах — на одном и том же оборудовании.&lt;/p>
&lt;h2 id="ключевые-возможности">Ключевые возможности&lt;/h2>
&lt;h3 id="многопользовательский-режим-мультитенантность-и-встроенный-sso">Многопользовательский режим, мультитенантность и встроенный SSO&lt;/h3>
&lt;p>Cozystack разработан для использования несколькими командами, отделами или даже компаниями.
Традиционный подход с выделением каждой команде отдельного пространства имён может быть слишком ограниченным.
Командам может потребоваться несколько окружений с одинаковыми именами пространств имён,
или им может не хватать прав root для управления собственными моделями доступа.&lt;/p>
&lt;p>
&lt;a href="https://cozystack.ru/docs/v1.2/guides/concepts#tenant-system" target="_blank">Система тенантов&lt;/a> Cozystack решает эти проблемы,
позволяя пользователям разворачивать среду Kubernetes-в-Kubernetes с помощью одного приложения.
Пользователи вложенных кластеров Kubernetes имеют полный доступ и контроль.
Система квот обеспечивает оптимальное использование оборудования, изолируя ресурсы во избежание проблемы «шумного соседа».
Пользователи платформы также могут формировать подробные отчёты об использовании ресурсов для каждого тенанта.&lt;/p>
&lt;p>
&lt;a href="https://cozystack.ru/docs/v1.2/operations/oidc" target="_blank">Система единого входа&lt;/a> в Cozystack работает на базе Keycloak.
Kubernetes API — как в корневом тенанте, так и во вложенных — поддерживает SSO из коробки.&lt;/p>
&lt;h3 id="реплицированная-система-хранения">Реплицированная система хранения&lt;/h3>
&lt;p>Не все компании могут позволить себе выделенное аппаратное обеспечение SAN или NAS.
Cozystack включает надёжную распределённую систему хранения, позволяющую создавать отказоустойчивые реплицированные тома.
Возможна даже репликация томов между несколькими центрами обработки данных.&lt;/p>
&lt;h3 id="система-виртуализации">Система виртуализации&lt;/h3>
&lt;p>Обычно приходится выбирать между виртуализацией и контейнеризацией.
Cozystack объединяет оба подхода в единой платформе.
Нет необходимости поддерживать отдельную инфраструктуру виртуализации.
В Cozystack
&lt;a href="https://cozystack.ru/docs/v1.2/virtualization" target="_blank">виртуальные машины&lt;/a>
запускаются непосредственно в Kubernetes и потребляют CPU, память, GPU и хранилище из общего пула ресурсов Kubernetes.&lt;/p>
&lt;h3 id="управляемые-базы-данных-без-накладных-расходов">Управляемые базы данных без накладных расходов&lt;/h3>
&lt;p>Несмотря на высокую эффективность виртуализации Linux-на-Linux, она всё же вносит определённые накладные расходы.
Cozystack избегает этого, запуская
&lt;a href="https://cozystack.ru/docs/v1.2/applications" target="_blank">управляемые базы данных&lt;/a>
непосредственно в контейнерах на хостовом оборудовании.
Можно развернуть несколько высокодоступных баз данных с выделенными IP-адресами
на ограниченном оборудовании — при этом каждая имеет прямой доступ к CPU и хранилищу.&lt;/p>
&lt;h3 id="экосистема-kubernetes">Экосистема Kubernetes&lt;/h3>
&lt;p>Нам неизвестен ни один другой дистрибутив Kubernetes с таким количеством встроенных инфраструктурных компонентов.
(Серьёзно — пришлите нам ссылку, если найдёте!)
Вместо того чтобы устанавливать компоненты и контроллеры вручную, вы просто выбираете
&lt;a href="https://cozystack.ru/docs/v1.2/operations/configuration/variants" target="_blank">вариант Cozystack&lt;/a>, подходящий для ваших нужд.
Все компоненты предварительно настроены, проверены на совместимость и обновляются вместе с фреймворком Cozystack.&lt;/p></description></item><item><title>Docs: Руководство по администрированию</title><link>https://katamarina.ru/docs/cozystack/admin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://katamarina.ru/docs/cozystack/admin/</guid><description>
&lt;h2 id="уведомление">Уведомление&lt;/h2>
&lt;p>Компоненты управления Katamarina основываются на технологиях Cozystack и в настоящий момент наша команда активно занимается русификацией базы знаний.&lt;/p>
&lt;p>На данный момент для повседневного использования - полностью актуальная документация размещена на ресурсах основного проекта
&lt;a href="https://cozystack.ru/" target="_blank">https://cozystack.ru/&lt;/a>&lt;/p>
&lt;p>Сотрудники компании Katamarina являются постоянными контрибуторами Upstream-проекта Cozystack и участвуют в развитии ключевого функционала проекта.&lt;/p>
&lt;p>Также Katamarina находится в списке компаний, сертифицированных для оказания Enterprise-поддержки в рамках проекта
&lt;a href="https://cozystack.ru/support/" target="_blank">https://cozystack.ru/support/&lt;/a>&lt;/p></description></item><item><title>Docs: Cozystack Руководство по разработке</title><link>https://katamarina.ru/docs/cozystack/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://katamarina.ru/docs/cozystack/development/</guid><description>
&lt;h2 id="как-это-работает">Как это работает&lt;/h2>
&lt;p>Cozystack — платформа на основе операторов. Начальная загрузка и текущее управление
осуществляются набором контроллеров, работающих внутри кластера. Высокоуровневый поток выглядит так:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Инсталлятор чарта&lt;/strong> (&lt;code>packages/core/installer&lt;/code>) применяется через &lt;code>helm install&lt;/code>.
Он разворачивает Deployment &lt;code>cozystack-operator&lt;/code> в пространстве имён &lt;code>cozy-system&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>cozystack-operator&lt;/strong> запускается и выполняет однократную начальную загрузку:&lt;/p>
&lt;ul>
&lt;li>Устанавливает CRD Cozystack (&lt;code>Package&lt;/code>, &lt;code>PackageSource&lt;/code>) из встроенных манифестов
(&lt;code>internal/crdinstall&lt;/code>).&lt;/li>
&lt;li>Устанавливает компоненты Flux (source-controller, helm-controller,
source-watcher) из встроенных манифестов (&lt;code>internal/fluxinstall&lt;/code>).&lt;/li>
&lt;li>Создаёт &lt;strong>начальный OCIRepository&lt;/strong> (&lt;code>cozystack-platform&lt;/code>) из значений
&lt;code>platformSourceUrl&lt;/code> и &lt;code>platformSourceRef&lt;/code>, заданных в инсталляторе.&lt;/li>
&lt;li>Создаёт &lt;code>PackageSource&lt;/code>, ссылающийся на начальный OCIRepository.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Цикл согласования&lt;/strong> берёт управление. Оператор следит за CRD &lt;code>PackageSource&lt;/code> и
&lt;code>Package&lt;/code> и преобразует их в объекты Flux &lt;code>HelmRelease&lt;/code>. Flux
затем устанавливает реальные Helm-чарты и управляет ими.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Platform chart&lt;/strong> (&lt;code>packages/core/platform&lt;/code>) разворачивается как обычный
Package. Он читает конфигурацию кластера из ресурса
&lt;code>cozystack.cozystack-platform&lt;/code>
&lt;a href="">Package&lt;/a>
и создаёт шаблоны манифестов пакетов, определяющих, какие системные компоненты
должны быть установлены.&lt;/p>
&lt;p>Platform chart также создаёт &lt;strong>вторичный OCIRepository&lt;/strong> (&lt;code>cozystack-packages&lt;/code>),
копируя спецификацию из начального OCIRepository. Все PackageSource ссылаются
на этот вторичный репозиторий. При обновлениях platform chart выполняет миграции
как &lt;code>pre-upgrade&lt;/code> хуки перед созданием или обновлением HelmRelease компонентов.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FluxCD&lt;/strong> — движок выполнения, он согласует объекты &lt;code>HelmRelease&lt;/code>,
созданные оператором, загружает артефакты чартов из ресурсов &lt;code>ExternalArtifact&lt;/code>
и применяет их к кластеру.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>Полную цепочку согласования (PackageSource → ArtifactGenerator → ExternalArtifact → Package → HelmRelease → Pods), разрешение зависимостей, потоки обновления и отката, а также CLI cozypkg см. в разделе
&lt;a href="">Ключевые концепции&lt;/a>.&lt;/p>
&lt;h3 id="ocirepository-и-поток-миграции">OCIRepository и поток миграции&lt;/h3>
&lt;p>Cozystack использует два ресурса OCIRepository для управления обновлениями платформы:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>OCIRepository&lt;/th>
&lt;th>Создаётся&lt;/th>
&lt;th>Ссылается на&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>cozystack-platform&lt;/code>&lt;/td>
&lt;td>cozystack-operator&lt;/td>
&lt;td>Настраивается через значения инсталлятора (&lt;code>platformSourceUrl&lt;/code>, &lt;code>platformSourceRef&lt;/code>)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>cozystack-packages&lt;/code>&lt;/td>
&lt;td>Platform chart (&lt;code>repository.yaml&lt;/code>)&lt;/td>
&lt;td>Копирует спецификацию из &lt;code>cozystack-platform&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Все PackageSource в &lt;code>packages/core/platform/sources/&lt;/code> ссылаются на &lt;code>cozystack-packages&lt;/code>.&lt;/p>
&lt;h4 id="выполнение-миграций">Выполнение миграций&lt;/h4>
&lt;p>Миграции выполняются как Helm &lt;code>pre-upgrade&lt;/code> хуки в platform chart:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#60a0b0;font-style:italic"># packages/core/platform/templates/migration-hook.yaml&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb">&lt;/span>&lt;span style="color:#062873;font-weight:bold">metadata&lt;/span>:&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#062873;font-weight:bold">name&lt;/span>:&lt;span style="color:#bbb"> &lt;/span>cozystack-migration-hook&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#062873;font-weight:bold">annotations&lt;/span>:&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#062873;font-weight:bold">helm.sh/hook&lt;/span>:&lt;span style="color:#bbb"> &lt;/span>pre-upgrade,pre-install&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#062873;font-weight:bold">helm.sh/hook-weight&lt;/span>:&lt;span style="color:#bbb"> &lt;/span>&lt;span style="color:#4070a0">&amp;#34;1&amp;#34;&lt;/span>&lt;span style="color:#bbb">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Контейнер миграции считывает текущую версию из ConfigMap &lt;code>cozystack-version&lt;/code> и выполняет скрипты миграции последовательно от &lt;code>CURRENT_VERSION&lt;/code> до &lt;code>TARGET_VERSION - 1&lt;/code>. Каждая миграция обновляет ConfigMap при успехе, обеспечивая идемпотентность миграций и возможность возобновления после сбоев.&lt;/p>
&lt;h4 id="зачем-два-репозитория">Зачем два репозитория?&lt;/h4>
&lt;p>Разделение гарантирует, что:&lt;/p>
&lt;ol>
&lt;li>Начальный OCIRepository управляется оператором (через значения инсталлятора).&lt;/li>
&lt;li>Все PackageSource имеют согласованную ссылку (&lt;code>cozystack-packages&lt;/code>), а не указывают напрямую на источник, управляемый оператором.&lt;/li>
&lt;li>Platform chart может выполнять миграции перед созданием вторичного OCIRepository, гарантируя выполнение миграций до обновления компонентов.&lt;/li>
&lt;/ol>
&lt;h3 id="ключевые-бинарные-файлы">Ключевые бинарные файлы&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Бинарный файл&lt;/th>
&lt;th>Источник&lt;/th>
&lt;th>Роль&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>cozystack-operator&lt;/strong>&lt;/td>
&lt;td>&lt;code>cmd/cozystack-operator&lt;/code>&lt;/td>
&lt;td>Начальная загрузка (CRD, Flux, источник платформы), согласование &lt;code>PackageSource&lt;/code> и &lt;code>Package&lt;/code>, репликация секрета &lt;code>cozystack-values&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>cozystack-controller&lt;/strong>&lt;/td>
&lt;td>&lt;code>cmd/cozystack-controller&lt;/code>&lt;/td>
&lt;td>Согласование рабочих нагрузок и ApplicationDefinition, управление дашбордами.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>cozystack-api&lt;/strong>&lt;/td>
&lt;td>&lt;code>cmd/cozystack-api&lt;/code>&lt;/td>
&lt;td>Уровень агрегации API Kubernetes для групп API &lt;code>apps.cozystack.io&lt;/code> и &lt;code>core.cozystack.io&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>cozypkg&lt;/strong>&lt;/td>
&lt;td>&lt;code>cmd/cozypkg&lt;/code>&lt;/td>
&lt;td>CLI-инструмент для управления пакетами — визуализация зависимостей, интерактивная установка и удаление.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="структура-репозитория">Структура репозитория&lt;/h2>
&lt;p>Основная структура репозитория
&lt;a href="https://github.com/cozystack/cozystack" target="_blank">cozystack&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── api &lt;span style="color:#60a0b0;font-style:italic"># Go-типы для CRD Cozystack (Package, PackageSource и т.д.)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── cmd &lt;span style="color:#60a0b0;font-style:italic"># Точки входа для всех бинарных файлов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── cozystack-operator &lt;span style="color:#60a0b0;font-style:italic"># Основной оператор платформы&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── cozystack-controller &lt;span style="color:#60a0b0;font-style:italic"># Контроллеры рабочих нагрузок и приложений&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── cozystack-api &lt;span style="color:#60a0b0;font-style:italic"># Агрегированный API-сервер&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── cozypkg &lt;span style="color:#60a0b0;font-style:italic"># CLI для управления пакетами&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── internal &lt;span style="color:#60a0b0;font-style:italic"># Реализации контроллеров и согласователей&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── operator &lt;span style="color:#60a0b0;font-style:italic"># Согласователи PackageSource и Package&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── controller &lt;span style="color:#60a0b0;font-style:italic"># Контроллеры рабочих нагрузок и ApplicationDefinition&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── fluxinstall &lt;span style="color:#60a0b0;font-style:italic"># Встроенные манифесты Flux и инсталлятор&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── crdinstall &lt;span style="color:#60a0b0;font-style:italic"># Встроенные манифесты CRD и инсталлятор&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── cozyvaluesreplicator &lt;span style="color:#60a0b0;font-style:italic"># Логика репликации секретов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── packages &lt;span style="color:#60a0b0;font-style:italic"># Helm-чарты, организованные по слоям&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── core &lt;span style="color:#60a0b0;font-style:italic"># Начальная загрузка и конфигурация платформы&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── system &lt;span style="color:#60a0b0;font-style:italic"># Инфраструктурные операторы и upstream-чарты&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ ├── apps &lt;span style="color:#60a0b0;font-style:italic"># Пользовательские чарты приложений&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>│ └── extra &lt;span style="color:#60a0b0;font-style:italic"># Чарты приложений для конкретных тенантов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── pkg &lt;span style="color:#60a0b0;font-style:italic"># Общие Go-библиотеки&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── dashboards &lt;span style="color:#60a0b0;font-style:italic"># Дашборды Grafana&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── hack &lt;span style="color:#60a0b0;font-style:italic"># Вспомогательные скрипты для локальной разработки&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── docs &lt;span style="color:#60a0b0;font-style:italic"># Журналы изменений и примечания к релизам&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Разработку можно вести локально, изменяя и обновляя файлы в этом репозитории.&lt;/p>
&lt;h2 id="пакеты">Пакеты&lt;/h2>
&lt;h3 id="corehttpsgithubcomcozystackcozystacktreemainpackagescore">
&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/core" target="_blank">core&lt;/a>&lt;/h3>
&lt;p>Core-пакеты отвечают за начальную загрузку и конфигурацию на уровне платформы.&lt;/p>
&lt;h4 id="installer">installer&lt;/h4>
&lt;p>Helm-чарт, разворачивающий Deployment &lt;code>cozystack-operator&lt;/code>. Он создаёт
пространство имён &lt;code>cozy-system&lt;/code>, ServiceAccount с правами cluster-admin и
Deployment оператора с флагами, инициирующими установку CRD и Flux при запуске.
Образ оператора и URL источника платформы задаются во время сборки.&lt;/p>
&lt;h4 id="platform">platform&lt;/h4>
&lt;p>Helm-чарт, разворачиваемый как обычный &lt;code>Package&lt;/code> (не применяется напрямую). Он читает
конфигурацию кластера из ресурса &lt;code>cozystack.cozystack-platform&lt;/code>
&lt;a href="">Package&lt;/a>
и создаёт шаблоны манифестов согласно указанному
&lt;a href="">варианту&lt;/a> и
настройкам компонентов, определяя, какие системные компоненты должны быть установлены.&lt;/p>
&lt;h4 id="flux-aio">flux-aio&lt;/h4>
&lt;p>Компоненты Flux, упакованные для развёртывания оператором.&lt;/p>
&lt;h4 id="talos">talos&lt;/h4>
&lt;p>Конфигурационные ресурсы Talos OS.&lt;/p>
&lt;div class="alert alert-info" role="alert">
Core-пакеты не используют Helm для применения манифестов; они предназначены для использования только как &lt;code>helm template . | kubectl apply -f -&lt;/code>.
&lt;/div>
&lt;h3 id="systemhttpsgithubcomcozystackcozystacktreemainpackagessystem">
&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/system" target="_blank">system&lt;/a>&lt;/h3>
&lt;p>System-пакеты настраивают систему для управления и развёртывания пользовательских приложений. Необходимые системные компоненты указываются в конфигурации пакета.&lt;/p>
&lt;p>System-пакеты включают два вида компонентов:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Операторы&lt;/strong> (например, &lt;code>postgres-operator&lt;/code>, &lt;code>kafka-operator&lt;/code>, &lt;code>redis-operator&lt;/code>): Контроллеры,
умеющие управлять полным жизненным циклом конкретного приложения, включая операции второго дня.&lt;/li>
&lt;li>&lt;strong>Upstream Helm-чарты&lt;/strong> для приложений без выделенного оператора (например, &lt;code>nats&lt;/code>, &lt;code>ingress-nginx&lt;/code>):
Эти чарты размещаются в system, чтобы пакеты apps и extra могли разворачивать их
через Flux &lt;code>HelmRelease&lt;/code> CR, фактически используя FluxCD в качестве оператора.&lt;/li>
&lt;/ul>
&lt;div class="alert alert-info" role="alert">
System-пакеты используют Helm для установки и управляются FluxCD.
&lt;/div>
&lt;h3 id="appshttpsgithubcomcozystackcozystacktreemainpackagesapps">
&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/apps" target="_blank">apps&lt;/a>&lt;/h3>
&lt;p>Эти пользовательские приложения отображаются в дашборде и включают манифесты для применения к кластеру.&lt;/p>
&lt;p>Чарты apps служат высокоуровневым API для пользователей. Они определяют только те параметры, которые
должны быть открыты и проверены через &lt;code>values.schema.json&lt;/code>, сохраняя интерфейс
минимальным и безопасным. Чарты apps не должны содержать бизнес-логику развёртывания
самого приложения — вместо этого они делегируют её оператору или FluxCD.&lt;/p>
&lt;p>В зависимости от наличия выделенного оператора приложения apps следуют одному из двух паттернов:&lt;/p>
&lt;h4 id="паттерн-на-основе-оператора">Паттерн на основе оператора&lt;/h4>
&lt;p>Когда для приложения есть выделенный оператор (например, PostgreSQL, MongoDB, Redis, Kafka),
чарт app создаёт &lt;strong>экземпляры CRD&lt;/strong>, которыми управляет оператор:&lt;/p>
&lt;pre tabindex="0">&lt;code>packages/system/postgres-operator/ # Helm-чарт оператора
packages/apps/postgres/ # App-чарт создаёт postgresql.cnpg.io/v1.Cluster CR
&lt;/code>&lt;/pre>&lt;p>Оператор обрабатывает все детали развёртывания и операции второго дня (масштабирование, резервное копирование, переключение при сбое).
App-чарт просто создаёт соответствующий CRD со значениями, полученными из пользовательского ввода.&lt;/p>
&lt;h4 id="паттерн-на-основе-helmrelease">Паттерн на основе HelmRelease&lt;/h4>
&lt;p>Когда для приложения нет выделенного оператора и стандартным методом развёртывания является Helm-чарт,
upstream-чарт размещается в &lt;code>system/&lt;/code>, а app-чарт создаёт
&lt;strong>Flux &lt;code>HelmRelease&lt;/code> CR&lt;/strong>, указывающий на него:&lt;/p>
&lt;pre tabindex="0">&lt;code>packages/system/nats/ # Upstream Helm-чарт NATS
packages/apps/nats/ # App-чарт создаёт helm.toolkit.fluxcd.io/v2.HelmRelease
&lt;/code>&lt;/pre>&lt;p>В этом случае FluxCD выступает оператором, управляя жизненным циклом Helm-релиза. App-чарт
контролирует, какие upstream-значения открываются пользователю, обеспечивая дополнительный уровень
безопасности — пользователи не могут обойти валидацию для развёртывания чарта с произвольными значениями.&lt;/p>
&lt;p>Другие примеры этого паттерна: &lt;code>extra/ingress&lt;/code>, &lt;code>extra/seaweedfs&lt;/code>, &lt;code>extra/monitoring&lt;/code>.&lt;/p>
&lt;h3 id="extrahttpsgithubcomcozystackcozystacktreemainpackagesextra">
&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/extra" target="_blank">extra&lt;/a>&lt;/h3>
&lt;p>Аналогично &lt;code>apps&lt;/code>, но не отображается в каталоге приложений. Могут устанавливаться только в составе тенанта.
Разрешены для использования нижележащими тенантами, установленными в пространстве имён текущего тенанта.&lt;/p>
&lt;p>Подробнее о
&lt;a href="https://katamarina.ru/docs/guides/concepts/#tenant-system">Системе тенантов&lt;/a> читайте на странице основных концепций.&lt;/p>
&lt;p>В одном пространстве имён тенанта можно использовать только один тип приложения.&lt;/p>
&lt;p>Extra-пакеты следуют тем же двум архитектурным паттернам, что и apps (на основе оператора или HelmRelease).&lt;/p>
&lt;div class="alert alert-info" role="alert">
Пакеты apps и extra используют Helm для установки приложения и управляются FluxCD через дашборд.
&lt;/div>
&lt;h2 id="структура-пакета">Структура пакета&lt;/h2>
&lt;p>Каждый пакет — это типичный Helm-чарт, содержащий все необходимые образы и манифесты
для платформы. Мы следуем логике umbrella-чарта, размещая upstream-чарты в
директории &lt;code>./charts&lt;/code> и переопределяя values.yaml в корне приложения.
Такая структура упрощает обновление upstream-чартов.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>.
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── Chart.yaml &lt;span style="color:#60a0b0;font-style:italic"># Определение Helm-чарта и описание параметров&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── Makefile &lt;span style="color:#60a0b0;font-style:italic"># Общие цели для упрощения локальной разработки&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── charts &lt;span style="color:#60a0b0;font-style:italic"># Директория для upstream-чартов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── images &lt;span style="color:#60a0b0;font-style:italic"># Директория для Docker-образов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── patches &lt;span style="color:#60a0b0;font-style:italic"># Опциональная директория для патчей upstream-чартов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── templates &lt;span style="color:#60a0b0;font-style:italic"># Дополнительные манифесты для upstream Helm-чарта&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── templates/dashboard-resourcemap.yaml &lt;span style="color:#60a0b0;font-style:italic"># Роль для отображения ресурсов k8s в дашборде&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>├── values.yaml &lt;span style="color:#60a0b0;font-style:italic"># Значения переопределения для upstream Helm-чарта&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>└── values.schema.json &lt;span style="color:#60a0b0;font-style:italic"># JSON-схема для валидации входных значений и отрисовки элементов UI в дашборде&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Для генерации файлов &lt;code>README.md&lt;/code> и &lt;code>values.schema.json&lt;/code> можно использовать
&lt;a href="https://github.com/bitnami/readme-generator-for-helm" target="_blank">readme-generator&lt;/a> от Bitnami.&lt;/p>
&lt;p>Просто установите его как бинарный файл &lt;code>readme-generator&lt;/code> в своей системе и запустите генерацию командой &lt;code>make generate&lt;/code>.&lt;/p>
&lt;h2 id="принципы-разработки-helm-чартов">Принципы разработки Helm-чартов&lt;/h2>
&lt;p>Структура пакетов и рабочий процесс разработки в Cozystack основаны на следующих принципах:&lt;/p>
&lt;h3 id="простое-обновление-upstream-чартов">Простое обновление upstream-чартов&lt;/h3>
&lt;p>Оригинальный upstream-чарт должен быть легко обновляемым, переопределяемым и изменяемым. Мы используем паттерн umbrella-чарта — upstream-чарты находятся в директории &lt;code>./charts&lt;/code> и хранятся в оригинальном виде. Кастомизации вносятся через переопределения &lt;code>values.yaml&lt;/code> и дополнительные &lt;code>templates/&lt;/code>, а структурные изменения в upstream-чарте применяются через &lt;code>patches/&lt;/code>. Такое разделение гарантирует простое обновление до новой upstream-версии: выполните &lt;code>make update&lt;/code>, просмотрите diff и при необходимости повторно примените патчи.&lt;/p>
&lt;h3 id="локальные-артефакты">Локальные артефакты&lt;/h3>
&lt;p>Патчи и образы контейнеров хранятся локально и являются частью пакета. Директория &lt;code>patches/&lt;/code> содержит любые изменения upstream-чарта, а директория &lt;code>images/&lt;/code> — Dockerfile для сборки всех необходимых образов. Это обеспечивает полную воспроизводимость — всё необходимое для сборки и развёртывания пакета самодостаточно внутри репозитория.&lt;/p>
&lt;div class="alert alert-info" role="alert">
В настоящее время не все пакеты собирают свои образы локально — некоторые всё ещё ссылаются на образы, собранные внешне. Мы активно работаем над переходом к полностью локальной сборке образов для достижения полной самодостаточности и воспроизводимости.
&lt;/div>
&lt;h3 id="рабочий-процесс-локальной-разработки-и-тестирования">Рабочий процесс локальной разработки и тестирования&lt;/h3>
&lt;p>Каждый пакет должен быть легко обновляемым и тестируемым локально на реальном кластере без использования CI. Стандартные цели &lt;code>make&lt;/code> (&lt;code>make image&lt;/code>, &lt;code>make diff&lt;/code>, &lt;code>make apply&lt;/code>) обеспечивают быструю обратную связь: сборка образов, сравнение отрендеренных манифестов с живым кластером и применение изменений — всё с рабочей станции разработчика.&lt;/p>
&lt;h3 id="без-внешних-зависимостей">Без внешних зависимостей&lt;/h3>
&lt;p>Пакеты не должны зависеть от внешних ресурсов во время выполнения. Все чарты, образы и патчи включены в репозиторий. Это гарантирует детерминированность сборок и развёртываний, а также отсутствие сбоев из-за недоступности upstream-реестров, удалённых тегов или проблем с сетью.&lt;/p>
&lt;div class="alert alert-info" role="alert">
Как отмечалось выше, полная самодостаточность образов находится в процессе реализации. Некоторые пакеты всё ещё загружают образы из внешних реестров — это известный пробел, который мы планируем устранить по мере возможности.
&lt;/div>
&lt;h2 id="разработка">Разработка&lt;/h2>
&lt;h3 id="настройка-buildx">Настройка Buildx&lt;/h3>
&lt;p>Для сборки образов необходимо установить и настроить плагин
&lt;a href="https://github.com/docker/buildx" target="_blank">&lt;code>docker buildx&lt;/code>&lt;/a>.&lt;/p>
&lt;p>Вместо встроенного сборщика можно
&lt;a href="https://docs.docker.com/build/builders/" target="_blank">настроить дополнительные&lt;/a>, которые могут быть удалёнными или поддерживать несколько архитектур.
В этом примере показано, как создать сборщик с драйвером &lt;code>kubernetes&lt;/code>, позволяющим собирать образы непосредственно в кластере Kubernetes:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>docker buildx create &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --bootstrap &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --name&lt;span style="color:#666">=&lt;/span>buildkit &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --driver&lt;span style="color:#666">=&lt;/span>kubernetes &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --driver-opt&lt;span style="color:#666">=&lt;/span>&lt;span style="color:#bb60d5">namespace&lt;/span>&lt;span style="color:#666">=&lt;/span>tenant-kvaps,replicas&lt;span style="color:#666">=&lt;/span>&lt;span style="color:#40a070">2&lt;/span> &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --platform&lt;span style="color:#666">=&lt;/span>linux/amd64 &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --platform&lt;span style="color:#666">=&lt;/span>linux/arm64 &lt;span style="color:#4070a0;font-weight:bold">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4070a0;font-weight:bold">&lt;/span> --use
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Либо опустите параметры &amp;ndash;driver*, чтобы настроить среду сборки в локальном Docker-окружении.&lt;/p>
&lt;h3 id="управление-пакетами">Управление пакетами&lt;/h3>
&lt;p>Каждое приложение включает Makefile для упрощения процесса разработки. Для каждого пакета мы следуем такой логике:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>make update &lt;span style="color:#60a0b0;font-style:italic"># Обновить Helm-чарт и версии из upstream-источника&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make image &lt;span style="color:#60a0b0;font-style:italic"># Собрать Docker-образы, используемые в пакете&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make show &lt;span style="color:#60a0b0;font-style:italic"># Показать вывод отрендеренных шаблонов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make diff &lt;span style="color:#60a0b0;font-style:italic"># Сравнить Helm-релиз с объектами в кластере Kubernetes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make apply &lt;span style="color:#60a0b0;font-style:italic"># Применить Helm-релиз к кластеру Kubernetes&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Например, для обновления cilium:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#007020">cd&lt;/span> packages/system/cilium &lt;span style="color:#60a0b0;font-style:italic"># Перейти в директорию приложения&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make update &lt;span style="color:#60a0b0;font-style:italic"># Загрузить новую версию из upstream&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make image &lt;span style="color:#60a0b0;font-style:italic"># Собрать образ cilium&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git diff . &lt;span style="color:#60a0b0;font-style:italic"># Показать diff с изменёнными манифестами&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make diff &lt;span style="color:#60a0b0;font-style:italic"># Показать diff с применёнными манифестами кластера&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make apply &lt;span style="color:#60a0b0;font-style:italic"># Применить изменённые манифесты к кластеру&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl get pod -n cozy-cilium &lt;span style="color:#60a0b0;font-style:italic"># Проверить корректность работы&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>git commit -m &lt;span style="color:#4070a0">&amp;#34;Update cilium&amp;#34;&lt;/span> &lt;span style="color:#60a0b0;font-style:italic"># Зафиксировать изменения в ветке&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Для сборки контейнера cozystack с обновлённым чартом:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#007020">cd&lt;/span> packages/core/installer &lt;span style="color:#60a0b0;font-style:italic"># Перейти в директорию пакета cozystack&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make image-packages &lt;span style="color:#60a0b0;font-style:italic"># Собрать образ пакетов&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make apply &lt;span style="color:#60a0b0;font-style:italic"># Применить к кластеру&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl get pod -n cozy-system &lt;span style="color:#60a0b0;font-style:italic"># Проверить корректность работы&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>kubectl get hr -A &lt;span style="color:#60a0b0;font-style:italic"># Проверить объекты HelmRelease&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-info" role="alert">
&lt;p>При пересборке образов указывайте переменную окружения &lt;code>REGISTRY&lt;/code>, указывающую на ваш Docker-реестр.&lt;/p>
&lt;p>Не стесняйтесь заглядывать в каждый Makefile, чтобы лучше понять логику.&lt;/p>
&lt;/div>
&lt;h3 id="тестирование">Тестирование&lt;/h3>
&lt;p>Платформа включает скрипт
&lt;a href="https://github.com/cozystack/cozystack/blob/main/hack/e2e.sh" target="_blank">&lt;code>e2e.sh&lt;/code>&lt;/a>, выполняющий следующие задачи:&lt;/p>
&lt;ul>
&lt;li>Запускает три виртуальные машины QEMU&lt;/li>
&lt;li>Настраивает Talos Linux&lt;/li>
&lt;li>Устанавливает Cozystack&lt;/li>
&lt;li>Ожидает установки всех HelmRelease&lt;/li>
&lt;li>Выполняет дополнительные проверки работоспособности компонентов&lt;/li>
&lt;/ul>
&lt;p>Скрипт e2e.sh можно запускать как локально, так и непосредственно в контейнере Kubernetes.&lt;/p>
&lt;p>Для запуска тестов в кластере Kubernetes перейдите в директорию &lt;code>packages/core/testing&lt;/code> и выполните следующие команды:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>make apply &lt;span style="color:#60a0b0;font-style:italic"># Создать тестовую песочницу в кластере Kubernetes&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make &lt;span style="color:#007020">test&lt;/span> &lt;span style="color:#60a0b0;font-style:italic"># Запустить end-to-end тесты в существующей песочнице&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make delete &lt;span style="color:#60a0b0;font-style:italic"># Удалить тестовую песочницу из кластера Kubernetes&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="alert alert-warning" role="alert">
&lt;p>&amp;#x26a0;&amp;#xfe0f; Для запуска e2e-тестов в кластере Kubernetes узлы должны иметь достаточно свободных ресурсов для создания 3 ВМ и хранения данных развёртываемых приложений.&lt;/p>
&lt;p>Рекомендуется использовать bare-metal узлы родительского кластера Cozystack.&lt;/p>
&lt;/div>
&lt;h3 id="динамическая-среда-разработки">Динамическая среда разработки&lt;/h3>
&lt;p>Если вы предпочитаете разрабатывать Cozystack в виртуальных машинах вместо изменения существующего кластера, можно использовать ту же песочницу из тестовой среды. Makefile в &lt;code>packages/core/testing&lt;/code> включает дополнительные опции:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>make &lt;span style="color:#007020">exec&lt;/span> &lt;span style="color:#60a0b0;font-style:italic"># Открывает интерактивную оболочку в контейнере песочницы.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make login &lt;span style="color:#60a0b0;font-style:italic"># Загружает kubeconfig во временную директорию и запускает оболочку с окружением песочницы; требуется установленный mirrord.&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>make proxy &lt;span style="color:#60a0b0;font-style:italic"># Включает SOCKS5 прокси-сервер; требуются mirrord и gost.&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Прокси Socks5 можно настроить в браузере для доступа к сервисам кластера, работающего в песочнице. В Firefox есть удобное расширение для переключения прокси:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/proxy-toggle/" target="_blank">Proxy Toggle&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Docs: Cozystack Роадмап</title><link>https://katamarina.ru/docs/cozystack/roadmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://katamarina.ru/docs/cozystack/roadmap/</guid><description>
Вы можете ознакомиться с нашей дорожной картой по адресу: &lt;a href="https://github.com/orgs/cozystack/projects/1" target="_blank">Ссылка&lt;/a>.&lt;br />&lt;br />
Если у вас есть вопросы и комментарии по поводу плана развития или вам необходима определенная функциональность, пожалуйста, сообщите нам об этом по адресу &lt;a href="mailto:info@katamarina.ru">info@katamarina.ru&lt;/a>&lt;br />&lt;br />
Присоединяйтесь к нашим &lt;a href="https://calendar.google.com/calendar?cid=ZTQzZDIxZTVjOWI0NWE5NWYyOGM1ZDY0OWMyY2IxZTFmNDMzZTJlNjUzYjU2ZGJiZGE3NGNhMzA2ZjBkMGY2OEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t">community-встречам&lt;/a>.</description></item></channel></rss>