<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Конфигурация кластера Cozystack on Cozystack</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/</link><description>Recent content in Конфигурация кластера Cozystack on Cozystack</description><generator>Hugo</generator><language>en</language><atom:link href="https://cozystack.ru/docs/v1.5/operations/configuration/index.xml" rel="self" type="application/rss+xml"/><item><title>Справочник Platform Package</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/platform-package/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/platform-package/</guid><description>&lt;p&gt;На этой странице описана роль Cozystack Platform Package и приведен полный справочник по его values.&lt;/p&gt;
&lt;p&gt;Основная конфигурация Cozystack задается custom resource &lt;code&gt;Package&lt;/code&gt;.
Этот Package включает 
&lt;a href="https://cozystack.ru/docs/v1.5/operations/configuration/variants/" target="_blank"&gt;вариант Cozystack&lt;/a&gt;, 
&lt;a href="https://cozystack.ru/docs/v1.5/operations/configuration/components/" target="_blank"&gt;настройки компонентов&lt;/a&gt;,
ключевые сетевые параметры, опубликованные сервисы и другие опции.&lt;/p&gt;
&lt;h2 id="пример"&gt;Пример&lt;/h2&gt;
&lt;p&gt;Ниже пример конфигурации для установки Cozystack с вариантом &lt;code&gt;isp-full&lt;/code&gt;, root host &lt;code&gt;example.org&lt;/code&gt;,
а также опубликованными и доступными пользователям Cozystack Dashboard и API:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.io/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Package&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.cozystack-platform&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;variant&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;isp-full&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;components&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;platform&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;values&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;publishing&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;host&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;example.org&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;apiServerEndpoint&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://api.example.org:443&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;exposedServices&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- dashboard&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- api&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;networking&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;podCIDR&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;10.244.0.0/16&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;podGateway&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;10.244.0.1&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;serviceCIDR&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;10.96.0.0/16&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;joinCIDR&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;100.64.0.0/16&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="справочник"&gt;Справочник&lt;/h2&gt;
&lt;h3 id="поля-уровня-package"&gt;Поля уровня Package&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Поле&lt;/th&gt;
 &lt;th&gt;Описание&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;spec.variant&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Вариант, используемый для установки, например &lt;code&gt;isp-full&lt;/code&gt;, &lt;code&gt;isp-full-generic&lt;/code&gt;, &lt;code&gt;isp-hosted&lt;/code&gt;, &lt;code&gt;distro-full&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="platform-values-speccomponentsplatformvalues"&gt;Platform values (&lt;code&gt;spec.components.platform.values.*&lt;/code&gt;)&lt;/h3&gt;
&lt;h4 id="публикация"&gt;Публикация&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Значение&lt;/th&gt;
 &lt;th&gt;По умолчанию&lt;/th&gt;
 &lt;th&gt;Описание&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;example.org&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Основной домен для всех сервисов, создаваемых в Cozystack: dashboard, Grafana, Keycloak и других.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.apiServerEndpoint&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Используется для генерации kubeconfig-файлов для пользователей. Рекомендуется использовать маршрутизируемый FQDN или IP-адрес вместо адресов, доступных только локально. Пример: &lt;code&gt;&amp;quot;https://api.example.org&amp;quot;&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.exposedServices&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[api, dashboard, vm-exportproxy, cdi-uploadproxy]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Список сервисов для публикации. Возможные значения: &lt;code&gt;api&lt;/code&gt;, &lt;code&gt;dashboard&lt;/code&gt;, &lt;code&gt;cdi-uploadproxy&lt;/code&gt;, &lt;code&gt;vm-exportproxy&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.ingressName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;tenant-root&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ingress controller, используемый для публикации сервисов.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.externalIPs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Список external IP, используемых указанным ingress controller. Если не задан, по умолчанию используется сервис LoadBalancer.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.solver&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;http01&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Тип ACME challenge solver для letsencrypt issuer по умолчанию. Возможные значения: &lt;code&gt;http01&lt;/code&gt;, &lt;code&gt;dns01&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.issuerName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;letsencrypt-prod&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя &lt;code&gt;ClusterIssuer&lt;/code&gt; для TLS-сертификатов, используемых в системных Helm releases.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.wildcardSecretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Operator-provided wildcard TLS Secret. When set, platform services and the root tenant&amp;rsquo;s ingress/Gateway serve this pre-existing Secret instead of minting per-host ACME certificates (only the NAME travels the values channel — never the key material), and takes precedence over &lt;code&gt;publishing.certificates.wildcard&lt;/code&gt;. The Secret must exist in the publishing namespace (&lt;code&gt;tenant-root&lt;/code&gt; by default), hold valid PEM under &lt;code&gt;tls.crt&lt;/code&gt; / &lt;code&gt;tls.key&lt;/code&gt; (created as &lt;code&gt;kubernetes.io/tls&lt;/code&gt;, though only the material is validated), and cover the served hosts. &lt;strong&gt;Scoped to the root tenant but not enforced&lt;/strong&gt; — the name reaches every tenant, so a child running its own ingress controller can be left serving a self-signed certificate (
&lt;a href="https://github.com/cozystack/cozystack/issues/3296" target="_blank"&gt;cozystack/cozystack#3296&lt;/a&gt;). See 
&lt;a href="https://cozystack.ru/docs/v1.5/networking/gateway-api/#certificates" target="_blank"&gt;Gateway API → Certificates&lt;/a&gt; for the full behaviour and the three child-tenant cases. Leave empty to keep ACME issuance.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.provider&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;cloudflare&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;DNS-01 provider, когда &lt;code&gt;solver=dns01&lt;/code&gt;. Возможные значения: &lt;code&gt;cloudflare&lt;/code&gt;, &lt;code&gt;route53&lt;/code&gt;, &lt;code&gt;digitalocean&lt;/code&gt;, &lt;code&gt;rfc2136&lt;/code&gt;. Это значение читают и per-tenant Issuer (формируемый &lt;code&gt;cozystack-controller&lt;/code&gt; из CR &lt;code&gt;TenantGateway&lt;/code&gt;), и общекластерные &lt;code&gt;ClusterIssuer&lt;/code&gt; &lt;code&gt;letsencrypt-prod&lt;/code&gt; / &lt;code&gt;letsencrypt-stage&lt;/code&gt;, используемые прежним ingress-механизмом.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.cloudflare.secretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;cloudflare-api-token-secret&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя Secret с Cloudflare API token, имеющим права &lt;code&gt;Zone:Read&lt;/code&gt; + &lt;code&gt;Zone:DNS:Edit&lt;/code&gt; на apex-зону.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.cloudflare.secretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;api-token&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ключ внутри Secret, содержащий API token.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.route53.region&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;AWS-регион hosted zone Route53. Требуется, когда &lt;code&gt;provider=route53&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.route53.accessKeyID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IAM access key ID. Необязателен при работе с IRSA / instance profile.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.route53.secretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя Secret с IAM secret access key. Необязателен при работе с IRSA / instance profile.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.route53.secretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;secret-access-key&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ключ внутри Secret Route53, содержащий secret access key.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.digitalocean.secretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;digitalocean-api-token-secret&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя Secret с DigitalOcean API token, имеющим доступ на запись к apex-домену.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.digitalocean.secretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;access-token&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ключ внутри Secret, содержащий DigitalOcean token.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.rfc2136.nameserver&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;host:port&lt;/code&gt; авторитетного nameserver, принимающего динамические обновления RFC 2136. Требуется, когда &lt;code&gt;provider=rfc2136&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.rfc2136.tsigKeyName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя TSIG-ключа, авторизующего динамические обновления. Требуется, когда &lt;code&gt;provider=rfc2136&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.rfc2136.tsigAlgorithm&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;HMACSHA256&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HMAC-алгоритм TSIG.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.rfc2136.secretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Имя Secret с материалом TSIG-ключа. Требуется, когда &lt;code&gt;provider=rfc2136&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.dns01.rfc2136.secretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;tsig-secret-key&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Ключ внутри Secret, содержащий TSIG-ключ.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.certificates.wildcardSecretName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Готовый wildcard TLS Secret, предоставленный оператором. Если задан, платформенные сервисы и ingress/Gateway корневого tenant используют этот уже существующий Secret вместо выпуска отдельных ACME-сертификатов для каждого хоста; через канал values передаётся только ИМЯ, но никогда сам сертификат или приватный ключ. Secret должен уже существовать в namespace публикации (&lt;code&gt;tenant-root&lt;/code&gt; по умолчанию — namespace, в котором работает корневой ingress controller, выбранный через &lt;code&gt;publishing.ingressName&lt;/code&gt;), иметь тип &lt;code&gt;kubernetes.io/tls&lt;/code&gt; и покрывать обслуживаемые хосты (обычно &lt;code&gt;*.&amp;lt;root-host&amp;gt;&lt;/code&gt; + &lt;code&gt;&amp;lt;root-host&amp;gt;&lt;/code&gt;). Оставьте пустым, чтобы сохранить выпуск через ACME (см. &lt;code&gt;solver&lt;/code&gt; / &lt;code&gt;issuerName&lt;/code&gt; выше).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.proxyProtocol&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Включает PROXY-protocol на host ingress-nginx и автоматически разворачивает 
&lt;a href="https://cozystack.ru/docs/v1.5/networking/hairpin-proxy-protocol/" target="_blank"&gt;ouroboros&lt;/a&gt;, чтобы исправить возникающую проблему hairpin-NAT. Upstream L4 LB перед ingress-nginx уже должен добавлять PROXY-v1 headers до включения этого флага; инструкции по проверке и путь отключения см. на связанной странице.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;publishing.proxyProtocolAcknowledgeUnclean&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Флаг подтверждения для асимметрии &lt;code&gt;helm.sh/resource-policy: keep&lt;/code&gt; на пути отключения host. Переключение &lt;code&gt;publishing.proxyProtocol&lt;/code&gt; с &lt;code&gt;true&lt;/code&gt; обратно на &lt;code&gt;false&lt;/code&gt; прекращает генерацию Package CR &lt;code&gt;cozystack.ouroboros&lt;/code&gt;, но не удаляет уже существующий ресурс — render платформы будет падать, пока Package CR не будет удалён (это запустит pre-delete cleanup hook чарта) или пока этот флаг не будет установлен в &lt;code&gt;true&lt;/code&gt;, подтверждая, что оператор обработал асимметрию. Полную последовательность см. в 
&lt;a href="https://cozystack.ru/docs/v1.5/networking/hairpin-proxy-protocol/#disable-path" target="_blank"&gt;hairpin-proxy-protocol → Disable path&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;publishing.exposure&lt;/code&gt; is not listed above on purpose: the key existed in v1.4 only and was removed before v1.5 shipped. It has no effect on a v1.5 cluster — the host ingress is exposed through &lt;code&gt;publishing.externalIPs&lt;/code&gt;, and a LoadBalancer Service is used when that list is empty. Drop the key when upgrading from v1.4 — and check what the host ingress Service becomes. A v1.4 cluster running &lt;code&gt;publishing.exposure: loadBalancer&lt;/code&gt; had a &lt;code&gt;LoadBalancer&lt;/code&gt; Service with &lt;code&gt;externalTrafficPolicy: Local&lt;/code&gt;; from v1.5 the key is ignored, so a cluster with &lt;code&gt;publishing.externalIPs&lt;/code&gt; set silently falls back to a &lt;code&gt;ClusterIP&lt;/code&gt; Service with &lt;code&gt;externalTrafficPolicy: Cluster&lt;/code&gt; and stops preserving client source IPs.&lt;/p&gt;</description></item><item><title>Варианты Cozystack: обзор и сравнение</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/variants/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/variants/</guid><description>&lt;h2 id="введение"&gt;Введение&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Variants&lt;/strong&gt; - это предопределенные конфигурации Cozystack, определяющие, какие bundles и компоненты включены.
Каждый вариант тестируется, версионируется и гарантированно работает как единое целое.
Они упрощают установку, снижают риск неправильной конфигурации и помогают выбрать подходящий набор возможностей для вашего развертывания.&lt;/p&gt;
&lt;p&gt;Это руководство предназначено для infrastructure engineers, DevOps-команд и platform architects, которые планируют разворачивать Cozystack в разных окружениях.
В нем объясняется, как варианты Cozystack помогают адаптировать установку под конкретные потребности: от полнофункциональной platform-as-a-service до полного ручного контроля над установленными packages.&lt;/p&gt;</description></item><item><title>Справочник компонентов Cozystack</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/components/</guid><description>&lt;h3 id="переопределение-параметров-компонентов"&gt;Переопределение параметров компонентов&lt;/h3&gt;
&lt;p&gt;Иногда нужно переопределить отдельные параметры компонентов.
Для этого измените соответствующий ресурс Package и укажите значения в секции &lt;code&gt;spec.components&lt;/code&gt;.
Структура values соответствует файлу 
&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/system" target="_blank"&gt;values.yaml&lt;/a&gt;
соответствующего системного chart в репозитории Cozystack.&lt;/p&gt;
&lt;p&gt;Например, если нужно включить режим FRR-K8s для MetalLB, посмотрите его

&lt;a href="https://github.com/cozystack/cozystack/blob/main/packages/system/metallb/values.yaml" target="_blank"&gt;values.yaml&lt;/a&gt;,
чтобы понять доступные параметры, а затем измените Package &lt;code&gt;cozystack.metallb&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.io/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Package&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.metallb&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;namespace&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozy-system&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;variant&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;components&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;metallb&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;values&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;metallb&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;frrk8s&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="включение-и-отключение-компонентов"&gt;Включение и отключение компонентов&lt;/h3&gt;
&lt;p&gt;В bundles есть опциональные компоненты, которые нужно явно включать в установку.
Обычные компоненты bundle, наоборот, можно отключить и исключить из установки, если они не нужны.&lt;/p&gt;</description></item><item><title>Лицензии</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/licenses/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/licenses/</guid><description>&lt;p&gt;На этой странице перечислены open-source компоненты, поставляемые с Cozystack, сгруппированные по роли в платформе.
Charts, CRDs, controllers и application APIs, поддерживаемые Cozystack, лицензированы под &lt;strong&gt;Apache-2.0&lt;/strong&gt; и не перечисляются ниже по отдельности.
Для каждого upstream-компонента карточка содержит ссылку на upstream-файл лицензии.&lt;/p&gt;


&lt;div class="alert alert-info" role="alert"&gt;


 Этот справочник вручную сверяется с текущим набором компонентов &lt;code&gt;next&lt;/code&gt;.
Container images могут включать дополнительные пакеты операционной системы и библиотечные зависимости со своими лицензиями.
Зафиксированные upstream-версии managed runtimes (PostgreSQL, MariaDB, Kafka и другие) могут меняться между minor-релизами Cozystack: проверяйте версию Cozystack, которую вы используете.

&lt;/div&gt;

&lt;h2 id="операционная-система-и-kubernetes-runtime"&gt;Операционная система и Kubernetes runtime&lt;/h2&gt;
&lt;div class="oss-cards-grid"&gt;

&lt;div class="oss-card"&gt;
 &lt;div class="oss-card-head"&gt;&lt;img class="oss-card-logo" src="https://cozystack.ru/img/logos/components/talos.svg" alt="Talos Linux logo" loading="lazy"&gt;&lt;div class="oss-card-titleblock"&gt;
 &lt;a class="oss-card-title" href="https://github.com/siderolabs/talos/blob/main/LICENSE" rel="noopener" target="_blank"&gt;Talos Linux&lt;/a&gt;&lt;/div&gt;
 &lt;/div&gt;&lt;p class="oss-card-desc"&gt;Immutable Linux-дистрибутив, созданный для узлов Kubernetes.&lt;/p&gt;</description></item><item><title>Lineage Controller Webhook</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/lineage-controller-webhook/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/lineage-controller-webhook/</guid><description>&lt;p&gt;&lt;strong&gt;lineage controller webhook&lt;/strong&gt; - это mutating admission webhook, поставляемый в составе Package &lt;code&gt;cozystack.cozystack-engine&lt;/code&gt;.
При каждом CREATE и UPDATE tenant-ресурсов &lt;code&gt;Pod&lt;/code&gt;, &lt;code&gt;Secret&lt;/code&gt;, &lt;code&gt;Service&lt;/code&gt;, &lt;code&gt;PersistentVolumeClaim&lt;/code&gt;, &lt;code&gt;Ingress&lt;/code&gt; или &lt;code&gt;WorkloadMonitor&lt;/code&gt; он поднимается по графу владения и записывает идентичность владеющего Cozystack &lt;code&gt;Application&lt;/code&gt; в labels ресурса (&lt;code&gt;apps.cozystack.io/application.{group,kind,name}&lt;/code&gt;).
Dashboard Cozystack, aggregated API server и механизм SchedulingClass опираются на эти labels.&lt;/p&gt;
&lt;p&gt;Webhook зарегистрирован с &lt;code&gt;failurePolicy: Fail&lt;/code&gt;, поэтому kube-apiserver должен иметь доступ к рабочему pod webhook, чтобы tenant CREATE/UPDATE-запросы проходили успешно.&lt;/p&gt;</description></item><item><title>White Labeling</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/white-labeling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/white-labeling/</guid><description>&lt;p&gt;White labeling позволяет заменить стандартный брендинг Cozystack собственными логотипами и текстами в Dashboard UI и на страницах аутентификации Keycloak.&lt;/p&gt;
&lt;h2 id="обзор"&gt;Обзор&lt;/h2&gt;
&lt;p&gt;Брендинг настраивается через поле &lt;code&gt;branding&lt;/code&gt; в Platform Package (&lt;code&gt;spec.components.platform.values.branding&lt;/code&gt;). Конфигурация автоматически распространяется на:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: логотип, заголовок страницы, текст footer, favicon и идентификатор tenant&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keycloak&lt;/strong&gt;: display name realm на страницах аутентификации&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="конфигурация"&gt;Конфигурация&lt;/h2&gt;
&lt;p&gt;Измените Platform Package, чтобы добавить или обновить секцию &lt;code&gt;branding&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.io/v1alpha1&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Package&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;metadata&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;cozystack.cozystack-platform&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;variant&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;isp-full&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# используйте свой вариант&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;components&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;platform&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;values&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;branding&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Брендинг Dashboard&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;titleText&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;My Company Dashboard&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;footerText&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;My Company Platform&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;tenantText&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;Production v1.0&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;logoText&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;logoSvg&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;base64-encoded SVG&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;iconSvg&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;base64-encoded SVG&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Брендинг Keycloak&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;brandName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;My Company&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;brandHtmlName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;div style=&amp;#39;font-weight:bold;&amp;#39;&amp;gt;My Company&amp;lt;/div&amp;gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Примените изменения:&lt;/p&gt;</description></item><item><title>Telemetry</title><link>https://cozystack.ru/docs/v1.5/operations/configuration/telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cozystack.ru/docs/v1.5/operations/configuration/telemetry/</guid><description>&lt;p&gt;В этом документе описана телеметрия в проекте Cozystack: зачем собираются данные, какие именно данные собираются, как они обрабатываются и как отказаться от участия.&lt;/p&gt;
&lt;h2 id="зачем-мы-собираем-телеметрию"&gt;Зачем мы собираем телеметрию&lt;/h2&gt;
&lt;p&gt;Cozystack как open source проект развивается благодаря обратной связи сообщества и пониманию реального использования. Данные телеметрии позволяют maintainers понимать, как Cozystack применяется в реальных сценариях. Эти данные помогают принимать решения о приоритете функций, стратегиях тестирования, исправлениях ошибок и общем развитии проекта. Без телеметрии решения приходилось бы принимать на основе предположений или ограниченной обратной связи, что могло бы замедлить улучшения или привести к функциям, которые не соответствуют потребностям пользователей. Телеметрия помогает направлять разработку реальными паттернами использования и требованиями сообщества, делая платформу более надежной и ориентированной на пользователей.&lt;/p&gt;</description></item></channel></rss>