<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cozystack: Free and open source PaaS framework for building clouds on Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/</link><description>Recent content in Cozystack: Free and open source PaaS framework for building clouds on Cozystack</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-470--cozystack.netlify.app/index.xml" rel="self" type="application/rss+xml"/><item><title>Monitoring Parameters</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/parameters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/parameters/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/operations/services/_include/parameters.md
source: https://github.com/cozystack/cozystack/blob/main/packages/extra/monitoring/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to access Grafana externally (defaults to &amp;lsquo;grafana&amp;rsquo; subdomain for the tenant host).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="metrics-storage-configuration"&gt;Metrics storage configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of metrics storage instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[...]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].deduplicationInterval&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Deduplication interval for metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used for the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vminsert.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vmselect.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vmstorage.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="logs-storage-configuration"&gt;Logs storage configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of logs storage instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[...]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for logs.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;replicated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="alerta-configuration"&gt;Alerta configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for the Alerta service.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource requests.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;100m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;256Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource limits.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Alert routing configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Telegram alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.token&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram bot token.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.chatID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram chat ID(s), separated by commas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.disabledSeverity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of severities without alerts (e.g. [&amp;ldquo;informational&amp;rdquo;,&amp;ldquo;warning&amp;rdquo;]).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Slack alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack.url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration uri for Slack alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack.disabledSeverity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of severities without alerts (e.g. [&amp;ldquo;informational&amp;rdquo;,&amp;ldquo;warning&amp;rdquo;]).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="grafana-configuration"&gt;Grafana configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Grafana.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.db&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Database configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.db.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource requests.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;100m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;256Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource limits.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="vmagent-configuration"&gt;Vmagent configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for VictoriaMetrics Agent.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent.externalLabels&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;External labels applied to all metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent.remoteWrite&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Remote write configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Monitoring Parameters</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/parameters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/parameters/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/operations/services/_include/parameters.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/extra/monitoring/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to access Grafana externally (defaults to &amp;lsquo;grafana&amp;rsquo; subdomain for the tenant host).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="metrics-storage-configuration"&gt;Metrics storage configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of metrics storage instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[...]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].deduplicationInterval&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Deduplication interval for metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used for the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vminsert.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vminsert.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vmselect.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmselect.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for vmstorage.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum guaranteed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.minAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum allowed resources.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;metricsStorages[i].vmstorage.maxAllowed.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="logs-storage-configuration"&gt;Logs storage configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of logs storage instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[...]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for logs.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;replicated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="alerta-configuration"&gt;Alerta configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for the Alerta service.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource requests.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;100m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.requests.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;256Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource limits.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.resources.limits.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Alert routing configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Telegram alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.token&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram bot token.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.chatID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Telegram chat ID(s), separated by commas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.telegram.disabledSeverity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of severities without alerts (e.g. [&amp;ldquo;informational&amp;rdquo;,&amp;ldquo;warning&amp;rdquo;]).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Slack alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack.url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration uri for Slack alerts.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;alerta.alerts.slack.disabledSeverity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of severities without alerts (e.g. [&amp;ldquo;informational&amp;rdquo;,&amp;ldquo;warning&amp;rdquo;]).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="grafana-configuration"&gt;Grafana configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for Grafana.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.db&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Database configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.db.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size for the database.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource requests.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;100m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.requests.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory request.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;256Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource limits.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;grafana.resources.limits.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory limit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="vmagent-configuration"&gt;Vmagent configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for VictoriaMetrics Agent.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent.externalLabels&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;External labels applied to all metrics.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;vmagent.remoteWrite&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Remote write configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Requirements and Toolchain</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/requirements/</guid><description>&lt;h2 id="toolchain"&gt;Toolchain&lt;/h2&gt;
&lt;p&gt;You will need the following tools installed on your workstation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://www.talos.dev/v1.10/talos-guides/install/talosctl/" target="_blank"&gt;talosctl&lt;/a&gt;, the command line client for Talos Linux.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://kubernetes.io/docs/tasks/tools/#kubectl" target="_blank"&gt;kubectl&lt;/a&gt;, the command line client for Kubernetes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://github.com/cozystack/talm?tab=readme-ov-file#installation" target="_blank"&gt;Talm&lt;/a&gt;, Cozystack&amp;rsquo;s own configuration manager for Talos Linux:&lt;br&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -sSL https://github.com/cozystack/talm/raw/refs/heads/main/hack/install.sh | sh -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="hardware-requirements"&gt;Hardware Requirements&lt;/h2&gt;
&lt;p&gt;To run this tutorial, you will need the following setup:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cluster nodes:&lt;/strong&gt; three bare-metal servers or virtual machines. Hardware requirements depend on your usage scenario:&lt;/p&gt;
&lt;ul class="nav nav-tabs" id="hardware_config" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link active" href="#hardware_config-0" role="tab" aria-controls="hardware_config-0" aria-selected="true"&gt;Minimal&lt;/a&gt;&lt;/li&gt;
	 
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#hardware_config-1" role="tab" aria-controls="hardware_config-1"&gt;Recommended&lt;/a&gt;&lt;/li&gt;
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#hardware_config-2" role="tab" aria-controls="hardware_config-2"&gt;Optimal&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class="tab-content" id="hardware_config"&gt;&lt;div id="hardware_config-0" class="tab-pane show active" role="tabpanel" aria-labelledby="hardware_config-0"&gt;

&lt;p&gt;&lt;p&gt;Here are the baseline requirements for running a small installation.
The minimum recommended configuration for each node is as follows:&lt;/p&gt;</description></item><item><title>Requirements and Toolchain</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/requirements/</guid><description>&lt;h2 id="toolchain"&gt;Toolchain&lt;/h2&gt;
&lt;p&gt;You will need the following tools installed on your workstation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://www.talos.dev/v1.10/talos-guides/install/talosctl/" target="_blank"&gt;talosctl&lt;/a&gt;, the command line client for Talos Linux.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://kubernetes.io/docs/tasks/tools/#kubectl" target="_blank"&gt;kubectl&lt;/a&gt;, the command line client for Kubernetes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://github.com/cozystack/talm?tab=readme-ov-file#installation" target="_blank"&gt;Talm&lt;/a&gt;, Cozystack&amp;rsquo;s own configuration manager for Talos Linux:&lt;br&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -sSL https://github.com/cozystack/talm/raw/refs/heads/main/hack/install.sh | sh -s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="hardware-requirements"&gt;Hardware Requirements&lt;/h2&gt;
&lt;p&gt;To run this tutorial, you will need the following setup:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cluster nodes:&lt;/strong&gt; three bare-metal servers or virtual machines. Hardware requirements depend on your usage scenario:&lt;/p&gt;
&lt;ul class="nav nav-tabs" id="hardware_config" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link active" href="#hardware_config-0" role="tab" aria-controls="hardware_config-0" aria-selected="true"&gt;Minimal&lt;/a&gt;&lt;/li&gt;
	 
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#hardware_config-1" role="tab" aria-controls="hardware_config-1"&gt;Recommended&lt;/a&gt;&lt;/li&gt;
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#hardware_config-2" role="tab" aria-controls="hardware_config-2"&gt;Optimal&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class="tab-content" id="hardware_config"&gt;&lt;div id="hardware_config-0" class="tab-pane show active" role="tabpanel" aria-labelledby="hardware_config-0"&gt;

&lt;p&gt;&lt;p&gt;Here are the baseline requirements for running a small installation.
The minimum recommended configuration for each node is as follows:&lt;/p&gt;</description></item><item><title>Go Types</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/cozystack-api/go-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/cozystack-api/go-types/</guid><description>&lt;h2 id="go-types"&gt;Go Types&lt;/h2&gt;
&lt;p&gt;Cozystack publishes its Kubernetes resource types as a Go module, enabling management of Cozystack resources from any Go code. The types are available at 
&lt;a href="https://pkg.go.dev/github.com/cozystack/cozystack/api/apps/v1alpha1" target="_blank"&gt;pkg.go.dev/github.com/cozystack/cozystack/api/apps/v1alpha1&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;Add the dependency to your Go module:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go get github.com/cozystack/cozystack/api/apps/v1alpha1@v1.2.0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="use-cases"&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;The Go types are useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Building custom automation tools&lt;/strong&gt; - Create scripts or applications that programmatically deploy and manage Cozystack resources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Integrating with external systems&lt;/strong&gt; - Connect Cozystack with your own CI/CD pipelines, monitoring systems, or orchestration tools&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validating configurations&lt;/strong&gt; - Use the types to validate resource specifications before applying them to the cluster&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generating documentation&lt;/strong&gt; - Parse and analyze existing Cozystack resources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Building dashboards&lt;/strong&gt; - Create custom UIs for Cozystack management&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="available-packages"&gt;Available Packages&lt;/h2&gt;
&lt;p&gt;The module contains packages for each resource type, you can explore it for your specific version in 
&lt;a href="https://pkg.go.dev/github.com/cozystack/cozystack/api/apps/v1alpha1" target="_blank"&gt;pkg.go.dev/github.com/cozystack/cozystack/api/apps/v1alpha1&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Monitoring Setup</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/setup/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack provides a comprehensive monitoring and alerting system for Kubernetes clusters and applications. The system is based on Victoria Metrics for storing metrics and logs, Grafana for visualization, Alerta for alerting, and WorkloadMonitor for monitoring application states.&lt;/p&gt;
&lt;p&gt;The architecture is divided into two levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;System level&lt;/strong&gt;: Monitoring of cluster infrastructure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tenant-specific level&lt;/strong&gt;: Isolated monitoring for each tenant&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-of-monitoring"&gt;Installation of Monitoring&lt;/h2&gt;
&lt;h3 id="system-monitoring"&gt;System Monitoring&lt;/h3&gt;
&lt;p&gt;System monitoring is installed automatically during platform deployment through the HelmRelease &lt;code&gt;monitoring-agents&lt;/code&gt; in &lt;code&gt;packages/apps/kubernetes/templates/helmreleases/monitoring-agents.yaml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Monitoring Setup</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/setup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/setup/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack provides a comprehensive monitoring and alerting system for Kubernetes clusters and applications. The system is based on Victoria Metrics for storing metrics and logs, Grafana for visualization, Alerta for alerting, and WorkloadMonitor for monitoring application states.&lt;/p&gt;
&lt;p&gt;The architecture is divided into two levels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;System level&lt;/strong&gt;: Monitoring of cluster infrastructure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tenant-specific level&lt;/strong&gt;: Isolated monitoring for each tenant&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-of-monitoring"&gt;Installation of Monitoring&lt;/h2&gt;
&lt;h3 id="system-monitoring"&gt;System Monitoring&lt;/h3&gt;
&lt;p&gt;System monitoring is installed automatically during platform deployment through the HelmRelease &lt;code&gt;monitoring-agents&lt;/code&gt; in &lt;code&gt;packages/apps/kubernetes/templates/helmreleases/monitoring-agents.yaml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Network Architecture</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/architecture/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack uses a multi-layered networking stack designed for bare-metal Kubernetes clusters. The architecture combines several components, each responsible for a specific layer of the network:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Layer&lt;/th&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;External load balancing&lt;/td&gt;
 &lt;td&gt;MetalLB&lt;/td&gt;
 &lt;td&gt;Publishing services to external networks&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Service load balancing&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;td&gt;kube-proxy replacement, in-kernel DNAT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Network policies&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;td&gt;Tenant isolation and security enforcement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Pod networking (CNI)&lt;/td&gt;
 &lt;td&gt;Kube-OVN&lt;/td&gt;
 &lt;td&gt;Centralized IPAM, overlay networking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VM IP passthrough&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://github.com/cozystack/cozy-proxy/" target="_blank"&gt;cozy-proxy&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Passing through external IPs into virtual machines&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;VM secondary interfaces&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://github.com/k8snetworkplumbingwg/multus-cni" target="_blank"&gt;Multus CNI&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Attaching secondary L2 interfaces to virtual machines&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Observability&lt;/td&gt;
 &lt;td&gt;Hubble (optional)&lt;/td&gt;
 &lt;td&gt;Network traffic visibility (disabled by default)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;pre class="mermaid"&gt;flowchart TD
 EXT[&amp;#34;External Clients&amp;#34;]
 RTR[&amp;#34;Upstream Router / Gateway&amp;#34;]
 MLB[&amp;#34;MetalLB&amp;lt;br/&amp;gt;(L2 ARP / BGP)&amp;#34;]
 CIL[&amp;#34;Cilium eBPF&amp;lt;br/&amp;gt;(Service Load Balancing &amp;#43; Network Policies)&amp;#34;]
 OVN[&amp;#34;Kube-OVN&amp;lt;br/&amp;gt;(Pod Networking &amp;#43; IPAM)&amp;#34;]
 PODS[&amp;#34;Pods&amp;#34;]

 EXT --&amp;gt; RTR
 RTR --&amp;gt; MLB
 MLB --&amp;gt; CIL
 CIL --&amp;gt; OVN
 OVN --&amp;gt; PODS&lt;/pre&gt;
&lt;h2 id="cluster-network-configuration"&gt;Cluster Network Configuration&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Default Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Pod CIDR&lt;/td&gt;
 &lt;td&gt;10.244.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Service CIDR&lt;/td&gt;
 &lt;td&gt;10.96.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Join CIDR&lt;/td&gt;
 &lt;td&gt;100.64.0.0/16&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cluster domain&lt;/td&gt;
 &lt;td&gt;cozy.local&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Overlay type&lt;/td&gt;
 &lt;td&gt;GENEVE&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CNI&lt;/td&gt;
 &lt;td&gt;Kube-OVN&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;kube-proxy replacement&lt;/td&gt;
 &lt;td&gt;Cilium eBPF&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="networking-stack-variants"&gt;Networking Stack Variants&lt;/h3&gt;
&lt;p&gt;Cozystack supports several networking stack variants to accommodate different
cluster types. The variant is selected via &lt;code&gt;bundles.system.variant&lt;/code&gt; in the
platform configuration.&lt;/p&gt;</description></item><item><title>Install Talos Linux using boot-to-talos</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/boot-to-talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/boot-to-talos/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on a host running any other Linux distribution using &lt;code&gt;boot-to-talos&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;boot-to-talos&lt;/code&gt; was made by Cozystack team to help users and teams adopting Cozystack with installing Talos, which is the most complex step in the process.
It works entirely from userspace and has no external dependencies except the Talos installer image.&lt;/p&gt;
&lt;p&gt;Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;</description></item><item><title>Install Talos Linux using boot-to-talos</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/boot-to-talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/boot-to-talos/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on a host running any other Linux distribution using &lt;code&gt;boot-to-talos&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;boot-to-talos&lt;/code&gt; was made by Cozystack team to help users and teams adopting Cozystack with installing Talos, which is the most complex step in the process.
It works entirely from userspace and has no external dependencies except the Talos installer image.&lt;/p&gt;
&lt;p&gt;Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;</description></item><item><title>Preparing Disks for LINSTOR Storage Pools</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/disk-preparation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/disk-preparation/</guid><description>&lt;p&gt;This guide explains how to prepare physical disks for use with LINSTOR when they contain old metadata that prevents automatic detection.&lt;/p&gt;
&lt;h2 id="problem-description"&gt;Problem Description&lt;/h2&gt;
&lt;p&gt;When setting up storage on new or repurposed nodes, physical disks may contain remnants from previous installations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RAID superblocks&lt;/li&gt;
&lt;li&gt;Partition tables&lt;/li&gt;
&lt;li&gt;LVM signatures&lt;/li&gt;
&lt;li&gt;Filesystem metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This old metadata prevents LINSTOR from detecting disks as available storage.&lt;/p&gt;
&lt;h3 id="symptoms"&gt;Symptoms&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;linstor physical-storage list&lt;/code&gt; shows empty output or missing disks&lt;/li&gt;
&lt;li&gt;Disks appear with unexpected filesystem types (e.g., &lt;code&gt;linux_raid_member&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Storage pools only show &lt;code&gt;DfltDisklessStorPool&lt;/code&gt; without actual storage&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="diagnostics"&gt;Diagnostics&lt;/h2&gt;
&lt;h3 id="set-up-linstor-alias"&gt;Set up LINSTOR alias&lt;/h3&gt;
&lt;p&gt;For easier access to LINSTOR commands, set up an alias:&lt;/p&gt;</description></item><item><title>Preparing Disks for LINSTOR Storage Pools</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/disk-preparation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/disk-preparation/</guid><description>&lt;p&gt;This guide explains how to prepare physical disks for use with LINSTOR when they contain old metadata that prevents automatic detection.&lt;/p&gt;
&lt;h2 id="problem-description"&gt;Problem Description&lt;/h2&gt;
&lt;p&gt;When setting up storage on new or repurposed nodes, physical disks may contain remnants from previous installations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RAID superblocks&lt;/li&gt;
&lt;li&gt;Partition tables&lt;/li&gt;
&lt;li&gt;LVM signatures&lt;/li&gt;
&lt;li&gt;Filesystem metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This old metadata prevents LINSTOR from detecting disks as available storage.&lt;/p&gt;
&lt;h3 id="symptoms"&gt;Symptoms&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;linstor physical-storage list&lt;/code&gt; shows empty output or missing disks&lt;/li&gt;
&lt;li&gt;Disks appear with unexpected filesystem types (e.g., &lt;code&gt;linux_raid_member&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Storage pools only show &lt;code&gt;DfltDisklessStorPool&lt;/code&gt; without actual storage&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="diagnostics"&gt;Diagnostics&lt;/h2&gt;
&lt;h3 id="set-up-linstor-alias"&gt;Set up LINSTOR alias&lt;/h3&gt;
&lt;p&gt;For easier access to LINSTOR commands, set up an alias:&lt;/p&gt;</description></item><item><title>Adding External Applications to Cozystack Catalog</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/external/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/external/</guid><description>&lt;p&gt;Since v0.37.0, Cozystack administrators can add applications from external sources in addition to the standard application catalog.
These applications will appear in the same application catalog and behave like regular managed applications for platform users.&lt;/p&gt;
&lt;p&gt;This guide explains how to define a managed application package and how to add it to Cozystack.&lt;/p&gt;
&lt;h2 id="1-create-an-application-package-repository"&gt;1. Create an Application Package Repository&lt;/h2&gt;
&lt;p&gt;Create a repository with the application package sources.
For a reference, see 
&lt;a href="https://github.com/cozystack/external-apps-example" target="_blank"&gt;github.com/cozystack/external-apps-example&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Adding External Applications to Cozystack Catalog</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/external/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/external/</guid><description>&lt;p&gt;Since v0.37.0, Cozystack administrators can add applications from external sources in addition to the standard application catalog.
These applications will appear in the same application catalog and behave like regular managed applications for platform users.&lt;/p&gt;
&lt;p&gt;This guide explains how to define a managed application package and how to add it to Cozystack.&lt;/p&gt;
&lt;h2 id="1-create-an-application-package-repository"&gt;1. Create an Application Package Repository&lt;/h2&gt;
&lt;p&gt;Create a repository with the application package sources.
For a reference, see 
&lt;a href="https://github.com/cozystack/external-apps-example" target="_blank"&gt;github.com/cozystack/external-apps-example&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Hardware requirements</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/hardware-requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/hardware-requirements/</guid><description>&lt;p&gt;Cozystack utilizes 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/talos/" target="_blank"&gt;Talos Linux&lt;/a&gt;, a minimalistic Linux distribution designed solely to run Kubernetes.
Usually, this means you cannot share a server with any services other than those run by Cozystack.
The good news is that whichever service you need, Cozystack will run it perfectly: securely, efficiently, and
in a fully containerized or virtualized environment.&lt;/p&gt;
&lt;p&gt;Hardware requirements depend on your usage scenario.
Below are several common deployment options; review them to determine which setup fits your needs best.&lt;/p&gt;</description></item><item><title>Hardware requirements</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/hardware-requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/hardware-requirements/</guid><description>&lt;p&gt;Cozystack utilizes 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/talos/" target="_blank"&gt;Talos Linux&lt;/a&gt;, a minimalistic Linux distribution designed solely to run Kubernetes.
Usually, this means you cannot share a server with any services other than those run by Cozystack.
The good news is that whichever service you need, Cozystack will run it perfectly: securely, efficiently, and
in a fully containerized or virtualized environment.&lt;/p&gt;
&lt;p&gt;Hardware requirements depend on your usage scenario.
Below are several common deployment options; review them to determine which setup fits your needs best.&lt;/p&gt;</description></item><item><title>Use Talm to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/</guid><description>&lt;p&gt;This guide explains how to install and configure Kubernetes on a Talos Linux cluster using Talm.
As a result of completing this guide you will have a Kubernetes cluster ready to install Cozystack.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://github.com/cozystack/talm" target="_blank"&gt;Talm&lt;/a&gt; is a Helm-like utility for declarative configuration management of Talos Linux.
Talm was created by Ænix to allow more declarative and customizable configurations for cluster management.
Talm comes with pre-built presets for Cozystack.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;By the start of this guide you should have 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/" target="_blank"&gt;Talos Linux installed&lt;/a&gt;, but not initialized (bootstrapped), on several nodes.
These nodes should belong to one subnet or have public IPs.&lt;/p&gt;</description></item><item><title>Use Talm to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/</guid><description>&lt;p&gt;This guide explains how to install and configure Kubernetes on a Talos Linux cluster using Talm.
As a result of completing this guide you will have a Kubernetes cluster ready to install Cozystack.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://github.com/cozystack/talm" target="_blank"&gt;Talm&lt;/a&gt; is a Helm-like utility for declarative configuration management of Talos Linux.
Talm was created by Ænix to allow more declarative and customizable configurations for cluster management.
Talm comes with pre-built presets for Cozystack.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;By the start of this guide you should have 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/" target="_blank"&gt;Talos Linux installed&lt;/a&gt;, but not initialized (bootstrapped), on several nodes.
These nodes should belong to one subnet or have public IPs.&lt;/p&gt;</description></item><item><title>System Resource Planning Recommendations</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/resource-planning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/resource-planning/</guid><description>&lt;p&gt;This guide helps you plan system resource allocation per node based on cluster size and tenant count. Recommendations are based on production deployments and provide reasonably accurate estimates for planning purposes.&lt;/p&gt;


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


 &lt;strong&gt;Important:&lt;/strong&gt; Values shown are only for system components. Add your tenant workload requirements (applications, databases, Kubernetes clusters, VMs, etc.) on top of these.

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;: Allocate at least &lt;strong&gt;2 CPU cores&lt;/strong&gt; and &lt;strong&gt;6 GB RAM&lt;/strong&gt; per node for system components. For precise requirements based on your cluster size and tenant count, use the table or calculator below.&lt;/p&gt;</description></item><item><title>System Resource Planning Recommendations</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/resource-planning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/resource-planning/</guid><description>&lt;p&gt;This guide helps you plan system resource allocation per node based on cluster size and tenant count. Recommendations are based on production deployments and provide reasonably accurate estimates for planning purposes.&lt;/p&gt;


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


 &lt;strong&gt;Important:&lt;/strong&gt; Values shown are only for system components. Add your tenant workload requirements (applications, databases, Kubernetes clusters, VMs, etc.) on top of these.

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;: Allocate at least &lt;strong&gt;2 CPU cores&lt;/strong&gt; and &lt;strong&gt;6 GB RAM&lt;/strong&gt; per node for system components. For precise requirements based on your cluster size and tenant count, use the table or calculator below.&lt;/p&gt;</description></item><item><title>1. Install Talos Linux</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-talos/</guid><description>&lt;h2 id="before-you-begin"&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Make sure that you have nodes (bare-metal servers or VMs) that fit the

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/requirements/" target="_blank"&gt;hardware requirements&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;On this step of the tutorial you will install Talos Linux on bare-metal servers or VMs running some other Linux distribution.&lt;/p&gt;
&lt;p&gt;The tutorial is using &lt;code&gt;boot-to-talos&lt;/code&gt;, a simple-to-use CLI app made by Cozystack team for users and teams adopting Cozystack.
There are multiple ways to 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/" target="_blank"&gt;install Talos Linux for Cozystack&lt;/a&gt;, not used here and covered in separate guides.&lt;/p&gt;</description></item><item><title>1. Install Talos Linux</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-talos/</guid><description>&lt;h2 id="before-you-begin"&gt;Before you begin&lt;/h2&gt;
&lt;p&gt;Make sure that you have nodes (bare-metal servers or VMs) that fit the

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/requirements/" target="_blank"&gt;hardware requirements&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;On this step of the tutorial you will install Talos Linux on bare-metal servers or VMs running some other Linux distribution.&lt;/p&gt;
&lt;p&gt;The tutorial is using &lt;code&gt;boot-to-talos&lt;/code&gt;, a simple-to-use CLI app made by Cozystack team for users and teams adopting Cozystack.
There are multiple ways to 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/" target="_blank"&gt;install Talos Linux for Cozystack&lt;/a&gt;, not used here and covered in separate guides.&lt;/p&gt;</description></item><item><title>Installing Cozystack as a Platform</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/cozystack/platform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/cozystack/platform/</guid><description>&lt;p&gt;&lt;strong&gt;The third step&lt;/strong&gt; in deploying a Cozystack cluster is to install Cozystack on a Kubernetes cluster that has been previously installed and configured on Talos Linux nodes.
A prerequisite to this step is having 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/" target="_blank"&gt;installed a Kubernetes cluster&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If this is your first time installing Cozystack, consider starting with the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/" target="_blank"&gt;Cozystack tutorial&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To plan a production-ready installation, follow the guide below.
It mirrors the tutorial in structure, but gives much more details and explains various installation options.&lt;/p&gt;</description></item><item><title>Managed ClickHouse Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/clickhouse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/clickhouse/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/clickhouse.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/clickhouse/README.md
--&gt;
&lt;p&gt;ClickHouse is an open source high-performance and column-oriented SQL database management system (DBMS).
It is used for online analytical processing (OLAP).&lt;/p&gt;
&lt;h3 id="how-to-restore-backup-from-s3"&gt;How to restore backup from S3&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Find the snapshot:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r s3:s3.example.org/clickhouse-backups/table_name snapshots
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restore it:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r s3:s3.example.org/clickhouse-backups/table_name restore latest --target /tmp/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more details, read 
&lt;a href="https://blog.aenix.io/restic-effective-backup-from-stdin-4bc1e8f083c1" target="_blank"&gt;Restic: Effective Backup from Stdin&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ClickHouse replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;shards&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ClickHouse shards.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each ClickHouse replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size available for application data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logStorageSize&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Size of Persistent Volume for logs.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logTTL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;TTL (expiration time) for &lt;code&gt;query_log&lt;/code&gt; and &lt;code&gt;query_thread_log&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Users configuration map.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for the user.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].readonly&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;User is readonly (default: false).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="backup-parameters"&gt;Backup parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable regular backups (default: false).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3Region&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;AWS S3 region where backups are stored.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;us-east-1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3Bucket&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;S3 bucket used for storing backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;s3.example.org/clickhouse-backups&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.schedule&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cron schedule for automated backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0 2 * * *&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.cleanupStrategy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention strategy for cleaning up old backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--keep-last=3 --keep-daily=3 --keep-within-weekly=1m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3AccessKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Access key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-access-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3SecretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secret key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-secret-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.resticPassword&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for Restic backup encryption.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;password&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="clickhouse-keeper-parameters"&gt;ClickHouse Keeper parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ClickHouse Keeper configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Deploy ClickHouse Keeper for cluster coordination.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size available for application data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of Keeper replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Cozystack ConfigMap Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/configmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/configmap/</guid><description>&lt;p&gt;This page explains the role of Cozystack&amp;rsquo;s main ConfigMap and provides a full reference for its values.&lt;/p&gt;
&lt;p&gt;Cozystack&amp;rsquo;s main configuration is defined by a single 
&lt;a href="https://kubernetes.io/docs/concepts/configuration/configmap/" target="_blank"&gt;Kubernetes ConfigMap&lt;/a&gt;.
This ConfigMap includes 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/bundles/" target="_blank"&gt;Cozystack bundle&lt;/a&gt; and 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/" target="_blank"&gt;components setup&lt;/a&gt;,
key network settings, exposed services, and other options.&lt;/p&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an example of configuration for installing Cozystack with bundle &lt;code&gt;paas-full&lt;/code&gt;, with root host &amp;ldquo;example.org&amp;rdquo;,
and Cozystack Dashboard and API exposed and available to users:&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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&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:#bbb"&gt;&lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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;bundle-name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;paas-full&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;root-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;api-server-endpoint&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;expose-services&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;dashboard,api&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;ipv4-pod-cidr&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;ipv4-pod-gateway&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;ipv4-svc-cidr&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;ipv4-join-cidr&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="reference"&gt;Reference&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value (&lt;code&gt;data.*&lt;/code&gt;)&lt;/th&gt;
 &lt;th&gt;Bundles&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundle-name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Name of bundle to use for installation.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundle-enable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Optional bundle components included in the installation. Read more about this option in 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/#enabling-and-disabling-components" target="_blank"&gt;&amp;ldquo;How to enable and disable bundle components&amp;rdquo;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundle-disable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Bundle components excluded (disabled) from the installation. Read more about this option in 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/#enabling-and-disabling-components" target="_blank"&gt;&amp;ldquo;How to enable and disable bundle components&amp;rdquo;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;values-&amp;lt;component&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;JSON or YAML formatted values passed to specific component installation. Read more about this option in 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/#overwriting-component-parameters" target="_blank"&gt;&amp;ldquo;how to overwrite parameters for specific components&amp;rdquo;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;root-host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;The main domain for all services created under Cozystack, such as the dashboard, Grafana, Keycloak, etc.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;api-server-endpoint&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Used for generating kubeconfig files for your users. It is recommended to use a routable FQDN or IP address instead of local-only addresses.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;telemetry-enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Enable 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/telemetry/" target="_blank"&gt;telemetry&lt;/a&gt; feature in Cozystack (default: &lt;code&gt;true&lt;/code&gt;).&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expose-services&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Comma-separated list of services to expose to the internet. Possible values: &lt;code&gt;api,dashboard,cdi-uploadproxy,vm-exportproxy&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expose-ingress&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Ingress controller to use for exposing services. (default: &lt;code&gt;tenant-root&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;expose-external-ips&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;all&lt;/td&gt;
 &lt;td&gt;Comma-separated list of external IPs used for the specified ingress controller. If not specified, a LoadBalancer service is used by default.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ipv4-pod-cidr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;, &lt;code&gt;distro-full&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The pod subnet used by Pods to assign IPs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ipv4-pod-gateway&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The gateway address for the pod subnet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ipv4-svc-cidr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;, &lt;code&gt;distro-full&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The pod subnet used by Services to assign IPs&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ipv4-join-cidr&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The &lt;code&gt;join&lt;/code&gt; subnet, as a special subnet for network communication between the Node and Pod. Follow the 
&lt;a href="https://kubeovn.github.io/docs/en/guide/subnet/#join-subnet" target="_blank"&gt;kube-ovn&lt;/a&gt; documentation to learn more about these options.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;oidc-enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;, &lt;code&gt;paas-hosted&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/" target="_blank"&gt;oidc&lt;/a&gt; feature in Cozystack (default: &lt;code&gt;false&lt;/code&gt;)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cpu-allocation-ratio&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;paas-full&lt;/code&gt;, &lt;code&gt;paas-hosted&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU allocation ratio: &lt;code&gt;1/cpu-allocation-ratio&lt;/code&gt; CPU requested per 1 vCPU. Defaults to 10. See 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/resource-management/#cpu-allocation-ratio" target="_blank"&gt;Resource Management&lt;/a&gt; for detailed explanation and examples.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Monitoring Dashboards</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/dashboards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/dashboards/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack integrates Grafana as the primary visualization tool for monitoring metrics collected by VictoriaMetrics (VM). This section covers accessing pre-built dashboards, creating custom visualizations, and integrating external data sources to provide comprehensive observability for your Cozystack clusters and applications.&lt;/p&gt;
&lt;h2 id="accessing-grafana"&gt;Accessing Grafana&lt;/h2&gt;
&lt;p&gt;To access Grafana and explore dashboards:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the Grafana URL: &lt;code&gt;https://grafana.&amp;lt;tenant-domain&amp;gt;&lt;/code&gt;, where &lt;code&gt;&amp;lt;tenant-domain&amp;gt;&lt;/code&gt; is your tenant&amp;rsquo;s domain.&lt;/li&gt;
&lt;li&gt;Log in using your tenant credentials (OIDC or token-based authentication).&lt;/li&gt;
&lt;li&gt;Once logged in, you can browse pre-configured dashboards in the &amp;ldquo;Dashboards&amp;rdquo; section.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For initial setup and configuration details, refer to 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/setup/" target="_blank"&gt;Monitoring Setup&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Monitoring Dashboards</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/dashboards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/dashboards/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack integrates Grafana as the primary visualization tool for monitoring metrics collected by VictoriaMetrics (VM). This section covers accessing pre-built dashboards, creating custom visualizations, and integrating external data sources to provide comprehensive observability for your Cozystack clusters and applications.&lt;/p&gt;
&lt;h2 id="accessing-grafana"&gt;Accessing Grafana&lt;/h2&gt;
&lt;p&gt;To access Grafana and explore dashboards:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Navigate to the Grafana URL: &lt;code&gt;https://grafana.&amp;lt;tenant-domain&amp;gt;&lt;/code&gt;, where &lt;code&gt;&amp;lt;tenant-domain&amp;gt;&lt;/code&gt; is your tenant&amp;rsquo;s domain.&lt;/li&gt;
&lt;li&gt;Log in using your tenant credentials (OIDC or token-based authentication).&lt;/li&gt;
&lt;li&gt;Once logged in, you can browse pre-configured dashboards in the &amp;ldquo;Dashboards&amp;rdquo; section.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For initial setup and configuration details, refer to 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/setup/" target="_blank"&gt;Monitoring Setup&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Configuring a Dedicated Network for LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/dedicated-network/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/dedicated-network/</guid><description>&lt;p&gt;This guide explains how to improve storage reliability and performance by redirecting LINSTOR replication traffic
to a dedicated network interface.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The Cozystack platform is built to support high-availability (HA) workloads,
which means the system must continue operating even if one or more nodes go offline.
Kubernetes handles this well for stateless workloads.
However, stateful workloads, such as file storage or virtual machine disks, require a reliable storage backend.&lt;/p&gt;
&lt;p&gt;When you choose the &lt;code&gt;replicated&lt;/code&gt; storage class for a PersistentVolumeClaim (PVC) or DataVolume,
LINSTOR creates multiple synchronous replicas of the data across different nodes.
This ensures that if a node fails (due to a power outage, hardware issue, etc.),
the data remains instantly available on another node.&lt;/p&gt;</description></item><item><title>Configuring a Dedicated Network for LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/dedicated-network/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/dedicated-network/</guid><description>&lt;p&gt;This guide explains how to improve storage reliability and performance by redirecting LINSTOR replication traffic
to a dedicated network interface.&lt;/p&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The Cozystack platform is built to support high-availability (HA) workloads,
which means the system must continue operating even if one or more nodes go offline.
Kubernetes handles this well for stateless workloads.
However, stateful workloads, such as file storage or virtual machine disks, require a reliable storage backend.&lt;/p&gt;
&lt;p&gt;When you choose the &lt;code&gt;replicated&lt;/code&gt; storage class for a PersistentVolumeClaim (PVC) or DataVolume,
LINSTOR creates multiple synchronous replicas of the data across different nodes.
This ensures that if a node fails (due to a power outage, hardware issue, etc.),
the data remains instantly available on another node.&lt;/p&gt;</description></item><item><title>Troubleshooting etcd</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/etcd/</guid><description>&lt;h2 id="how-to-clean-up-etcd-state"&gt;How to clean up etcd state&lt;/h2&gt;
&lt;p&gt;To flush the etcd state from a node, you can use &lt;code&gt;talm&lt;/code&gt; or &lt;code&gt;talosctl&lt;/code&gt; with the following commands:&lt;/p&gt;
&lt;ul class="nav nav-tabs" id="etcd-reset-tools" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link active" href="#etcd-reset-tools-0" role="tab" aria-controls="etcd-reset-tools-0" aria-selected="true"&gt;Talm&lt;/a&gt;&lt;/li&gt;
	 
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#etcd-reset-tools-1" role="tab" aria-controls="etcd-reset-tools-1"&gt;talosctl&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class="tab-content" id="etcd-reset-tools"&gt;&lt;div id="etcd-reset-tools-0" class="tab-pane show active" role="tabpanel" aria-labelledby="etcd-reset-tools-0"&gt;

&lt;p&gt;&lt;p&gt;Replace &lt;code&gt;nodeN&lt;/code&gt; with the name of the failed node, for instance, &lt;code&gt;node0.yaml&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm reset -f nodes/nodeN.yaml --system-labels-to-wipe&lt;span style="color:#666"&gt;=&lt;/span&gt;EPHEMERAL --graceful&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020"&gt;false&lt;/span&gt; --reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;div id="etcd-reset-tools-1" class="tab-pane" role="tabpanel" aria-labelledby="etcd-reset-tools-1"&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl reset --system-labels-to-wipe&lt;span style="color:#666"&gt;=&lt;/span&gt;EPHEMERAL --graceful&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020"&gt;false&lt;/span&gt; --reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;



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


 &amp;#x26a0;&amp;#xfe0f; This command will remove the state from the specified node. Use it with caution.

&lt;/div&gt;</description></item><item><title>Troubleshooting etcd</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/etcd/</guid><description>&lt;h2 id="how-to-clean-up-etcd-state"&gt;How to clean up etcd state&lt;/h2&gt;
&lt;p&gt;To flush the etcd state from a node, you can use &lt;code&gt;talm&lt;/code&gt; or &lt;code&gt;talosctl&lt;/code&gt; with the following commands:&lt;/p&gt;
&lt;ul class="nav nav-tabs" id="etcd-reset-tools" role="tablist"&gt;&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link active" href="#etcd-reset-tools-0" role="tab" aria-controls="etcd-reset-tools-0" aria-selected="true"&gt;Talm&lt;/a&gt;&lt;/li&gt;
	 
		&lt;li class="nav-item"&gt;&lt;a data-bs-toggle="tab" class="nav-link" href="#etcd-reset-tools-1" role="tab" aria-controls="etcd-reset-tools-1"&gt;talosctl&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class="tab-content" id="etcd-reset-tools"&gt;&lt;div id="etcd-reset-tools-0" class="tab-pane show active" role="tabpanel" aria-labelledby="etcd-reset-tools-0"&gt;

&lt;p&gt;&lt;p&gt;Replace &lt;code&gt;nodeN&lt;/code&gt; with the name of the failed node, for instance, &lt;code&gt;node0.yaml&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm reset -f nodes/nodeN.yaml --system-labels-to-wipe&lt;span style="color:#666"&gt;=&lt;/span&gt;EPHEMERAL --graceful&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020"&gt;false&lt;/span&gt; --reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;div id="etcd-reset-tools-1" class="tab-pane" role="tabpanel" aria-labelledby="etcd-reset-tools-1"&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talosctl reset --system-labels-to-wipe&lt;span style="color:#666"&gt;=&lt;/span&gt;EPHEMERAL --graceful&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020"&gt;false&lt;/span&gt; --reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;



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


 &amp;#x26a0;&amp;#xfe0f; This command will remove the state from the specified node. Use it with caution.

&lt;/div&gt;</description></item><item><title>Tune etcd timeouts</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/etcd/</guid><description>&lt;h2 id="potential-problems"&gt;Potential problems&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;etcd&lt;/strong&gt; is a reliable key-value store for critical data, the place where the Kubernetes API server stores its data.
Values are not considered written until a quorum of nodes reports that data has been written. Also, etcd constantly
checks that there is a leader and every node is aware which one it is. Usually, an etcd cluster is run on nodes in the
same datacenter (where latency is low) and default timeouts are tuned for the quickest error reporting possible. In a
stretched cluster, where nodes are in different datacenters, the RTT is much higher and default timeouts can cause false
alarms as if the network was partitioned. In this case, the data is still consistent, but etcd will enter readonly mode
to prevent split-brain. This could happen so frequently that many other components of Kubernetes would start to fail
with non-descriptive and unhelpful error messages.&lt;/p&gt;</description></item><item><title>Tune etcd timeouts</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/etcd/</guid><description>&lt;h2 id="potential-problems"&gt;Potential problems&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;etcd&lt;/strong&gt; is a reliable key-value store for critical data, the place where the Kubernetes API server stores its data.
Values are not considered written until a quorum of nodes reports that data has been written. Also, etcd constantly
checks that there is a leader and every node is aware which one it is. Usually, an etcd cluster is run on nodes in the
same datacenter (where latency is low) and default timeouts are tuned for the quickest error reporting possible. In a
stretched cluster, where nodes are in different datacenters, the RTT is much higher and default timeouts can cause false
alarms as if the network was partitioned. In this case, the data is still consistent, but etcd will enter readonly mode
to prevent split-brain. This could happen so frequently that many other components of Kubernetes would start to fail
with non-descriptive and unhelpful error messages.&lt;/p&gt;</description></item><item><title>Troubleshooting Flux CD</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/flux-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/flux-cd/</guid><description>&lt;h2 id="diagnosing-install-retries-exhausted-error"&gt;Diagnosing &lt;code&gt;install retries exhausted&lt;/code&gt; error&lt;/h2&gt;
&lt;p&gt;Sometimes you can face with the error:&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;"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c65d09;font-weight:bold"&gt;#&lt;/span&gt; kubectl get hr -A -n cozy-dashboard dashboard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;NAMESPACE NAME AGE READY STATUS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;cozy-dashboard dashboard 15m False install retries exhausted
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can try to figure out by checking events:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe hr -n cozy-dashboard dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;if &lt;code&gt;Events: &amp;lt;none&amp;gt;&lt;/code&gt; then suspend and resume the release:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl patch hr -n cozy-dashboard dashboard -p &lt;span style="color:#4070a0"&gt;&amp;#39;{&amp;#34;spec&amp;#34;: {&amp;#34;suspend&amp;#34;: true}}&amp;#39;&lt;/span&gt; --type&lt;span style="color:#666"&gt;=&lt;/span&gt;merge
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl patch hr -n cozy-dashboard dashboard -p &lt;span style="color:#4070a0"&gt;&amp;#39;{&amp;#34;spec&amp;#34;: {&amp;#34;suspend&amp;#34;: null}}&amp;#39;&lt;/span&gt; --type&lt;span style="color:#666"&gt;=&lt;/span&gt;merge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and check the events again:&lt;/p&gt;</description></item><item><title>Troubleshooting Flux CD</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/flux-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/flux-cd/</guid><description>&lt;h2 id="diagnosing-install-retries-exhausted-error"&gt;Diagnosing &lt;code&gt;install retries exhausted&lt;/code&gt; error&lt;/h2&gt;
&lt;p&gt;Sometimes you can face with the error:&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;"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#c65d09;font-weight:bold"&gt;#&lt;/span&gt; kubectl get hr -A -n cozy-dashboard dashboard
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;NAMESPACE NAME AGE READY STATUS
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;cozy-dashboard dashboard 15m False install retries exhausted
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can try to figure out by checking events:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe hr -n cozy-dashboard dashboard
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;if &lt;code&gt;Events: &amp;lt;none&amp;gt;&lt;/code&gt; then suspend and resume the release:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl patch hr -n cozy-dashboard dashboard -p &lt;span style="color:#4070a0"&gt;&amp;#39;{&amp;#34;spec&amp;#34;: {&amp;#34;suspend&amp;#34;: true}}&amp;#39;&lt;/span&gt; --type&lt;span style="color:#666"&gt;=&lt;/span&gt;merge
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl patch hr -n cozy-dashboard dashboard -p &lt;span style="color:#4070a0"&gt;&amp;#39;{&amp;#34;spec&amp;#34;: {&amp;#34;suspend&amp;#34;: null}}&amp;#39;&lt;/span&gt; --type&lt;span style="color:#666"&gt;=&lt;/span&gt;merge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and check the events again:&lt;/p&gt;</description></item><item><title>Cluster Autoscaler for Hetzner Cloud</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/autoscaling/hetzner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/autoscaling/hetzner/</guid><description>&lt;p&gt;This guide explains how to configure cluster-autoscaler for automatic node scaling in Hetzner Cloud with Talos Linux.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hetzner Cloud account with API token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hcloud&lt;/code&gt; CLI installed&lt;/li&gt;
&lt;li&gt;Existing Talos Kubernetes cluster&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/networking-mesh/" target="_blank"&gt;Networking Mesh&lt;/a&gt; and 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/local-ccm/" target="_blank"&gt;Local CCM&lt;/a&gt; configured&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-create-talos-image-in-hetzner-cloud"&gt;Step 1: Create Talos Image in Hetzner Cloud&lt;/h2&gt;
&lt;p&gt;Hetzner doesn&amp;rsquo;t support direct image uploads, so we need to create a snapshot via a temporary server.&lt;/p&gt;
&lt;h3 id="11-generate-schematic-id"&gt;1.1 Generate Schematic ID&lt;/h3&gt;
&lt;p&gt;Create a schematic at 
&lt;a href="https://factory.talos.dev" target="_blank"&gt;factory.talos.dev&lt;/a&gt; with required extensions:&lt;/p&gt;</description></item><item><title>Key Concepts</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/concepts/</guid><description>&lt;p&gt;Cozystack is an open-source, Kubernetes-native platform that turns bare-metal or virtual infrastructure into a fully featured, multi-tenant cloud.
At its core are a few foundational building blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;management cluster&lt;/strong&gt; that runs the platform itself;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tenants&lt;/strong&gt; that provide strict, hierarchical isolation;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tenant clusters&lt;/strong&gt; that give users their own Kubernetes control planes;&lt;/li&gt;
&lt;li&gt;rich catalog of &lt;strong&gt;managed applications&lt;/strong&gt; and virtual machines;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bundles&lt;/strong&gt; that assemble these components into a turnkey stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Understanding how these concepts fit together will help you plan, deploy, and operate Cozystack effectively,
whether you are building an internal developer platform or a public cloud service.&lt;/p&gt;</description></item><item><title>Key Concepts</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/concepts/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/concepts/</guid><description>&lt;p&gt;Cozystack is an open-source, Kubernetes-native platform that turns bare-metal or virtual infrastructure into a fully featured, multi-tenant cloud.
At its core are a few foundational building blocks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;strong&gt;management cluster&lt;/strong&gt; that runs the platform itself;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tenants&lt;/strong&gt; that provide strict, hierarchical isolation;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;tenant clusters&lt;/strong&gt; that give users their own Kubernetes control planes;&lt;/li&gt;
&lt;li&gt;rich catalog of &lt;strong&gt;managed applications&lt;/strong&gt; and virtual machines;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;variants&lt;/strong&gt; that assemble these components into a turnkey stack.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Understanding how these concepts fit together will help you plan, deploy, and operate Cozystack effectively,
whether you are building an internal developer platform or a public cloud service.&lt;/p&gt;</description></item><item><title>Networking Mesh</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/networking-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/networking-mesh/</guid><description>&lt;p&gt;Kilo creates a WireGuard mesh between cluster locations. When running with Cilium, it uses
IPIP encapsulation routed through Cilium&amp;rsquo;s VxLAN overlay so that traffic between locations
works even when the cloud network blocks raw IPIP (protocol 4) packets.&lt;/p&gt;
&lt;h2 id="select-the-cilium-kilo-networking-variant"&gt;Select the cilium-kilo networking variant&lt;/h2&gt;
&lt;p&gt;During platform setup, select the &lt;strong&gt;cilium-kilo&lt;/strong&gt; networking variant. This deploys both Cilium
and Kilo as an integrated stack with the required configuration:&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Kilo runs in &lt;code&gt;--local=false&lt;/code&gt; mode &amp;ndash; it does not manage routes within a location (Cilium handles that)&lt;/li&gt;
&lt;li&gt;Kilo creates a WireGuard tunnel (&lt;code&gt;kilo0&lt;/code&gt;) between location leaders&lt;/li&gt;
&lt;li&gt;Non-leader nodes in each location reach remote locations through IPIP encapsulation to their location leader, routed via Cilium&amp;rsquo;s VxLAN overlay&lt;/li&gt;
&lt;li&gt;The leader decapsulates IPIP and forwards traffic through the WireGuard tunnel&lt;/li&gt;
&lt;li&gt;Cilium&amp;rsquo;s &lt;code&gt;enable-ipip-termination&lt;/code&gt; option creates the &lt;code&gt;cilium_tunl&lt;/code&gt; interface (kernel&amp;rsquo;s &lt;code&gt;tunl0&lt;/code&gt; renamed) that Kilo uses for IPIP TX/RX &amp;ndash; without it, the kernel detects TX recursion on the tunnel device&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="talos-machine-config-for-cloud-nodes"&gt;Talos machine config for cloud nodes&lt;/h2&gt;
&lt;p&gt;Cloud worker nodes must include Kilo annotations in their Talos machine config:&lt;/p&gt;</description></item><item><title>Platform Package Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/platform-package/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/platform-package/</guid><description>&lt;p&gt;This page explains the role of the Cozystack Platform Package and provides a full reference for its values.&lt;/p&gt;
&lt;p&gt;Cozystack&amp;rsquo;s main configuration is defined by a &lt;code&gt;Package&lt;/code&gt; custom resource.
This Package includes the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/variants/" target="_blank"&gt;Cozystack variant&lt;/a&gt; and 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/components/" target="_blank"&gt;component settings&lt;/a&gt;,
key network settings, exposed services, and other options.&lt;/p&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s an example of configuration for installing Cozystack with variant &lt;code&gt;isp-full&lt;/code&gt;, with root host &amp;ldquo;example.org&amp;rdquo;,
and Cozystack Dashboard and API exposed and available to users:&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;"&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:#bbb"&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:#bbb"&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:#bbb"&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="reference"&gt;Reference&lt;/h2&gt;
&lt;h3 id="package-level-fields"&gt;Package-level fields&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Field&lt;/th&gt;
 &lt;th&gt;Description&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;Variant to use for installation (e.g., &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="publishing"&gt;Publishing&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&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;The main domain for all services created under Cozystack, such as the dashboard, Grafana, Keycloak, etc.&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;Used for generating kubeconfig files for your users. It is recommended to use a routable FQDN or IP address instead of local-only addresses. Example: &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;List of services to expose. Possible values: &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 to use for exposing services.&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;List of external IPs used for the specified ingress controller. If not specified, a LoadBalancer service is used by default.&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 type for default letsencrypt issuer. Possible values: &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; name for TLS certificates used in system Helm releases.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="networking"&gt;Networking&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.clusterDomain&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;cozy.local&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Internal cluster domain name.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.podCIDR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;10.244.0.0/16&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The pod subnet used by Pods to assign IPs.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.podGateway&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;10.244.0.1&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The gateway address for the pod subnet.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.serviceCIDR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;10.96.0.0/16&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The service subnet used by Services to assign IPs.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.joinCIDR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;100.64.0.0/16&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The &lt;code&gt;join&lt;/code&gt; subnet for network communication between the Node and Pod. Follow the 
&lt;a href="https://kubeovn.github.io/docs/en/guide/subnet/#join-subnet" target="_blank"&gt;kube-ovn&lt;/a&gt; documentation to learn more.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;networking.kubeovn.MASTER_NODES&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;Comma-separated list of KubeOVN master node IPs. By default, KubeOVN uses &lt;code&gt;lookup&lt;/code&gt; to find control-plane nodes by label &lt;code&gt;node-role.kubernetes.io/control-plane&lt;/code&gt;. On fresh clusters, lookup may return empty results. Set this to override.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="bundles"&gt;Bundles&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.system.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable the system bundle. Managed by the operator based on &lt;code&gt;spec.variant&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.system.variant&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;isp-full&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;System bundle variant. Options: &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;. Managed by the operator based on &lt;code&gt;spec.variant&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.iaas.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable the IaaS bundle. Managed by the operator based on &lt;code&gt;spec.variant&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.paas.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable the PaaS bundle. Managed by the operator based on &lt;code&gt;spec.variant&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.naas.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable the NaaS bundle. Managed by the operator based on &lt;code&gt;spec.variant&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.enabledPackages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of optional bundle components to include in the installation. Read more in 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/components/#enabling-and-disabling-components" target="_blank"&gt;&amp;ldquo;How to enable and disable bundle components&amp;rdquo;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bundles.disabledPackages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of bundle components to exclude from the installation. Read more in 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/components/#enabling-and-disabling-components" target="_blank"&gt;&amp;ldquo;How to enable and disable bundle components&amp;rdquo;&lt;/a&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="authentication"&gt;Authentication&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;authentication.oidc.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/" target="_blank"&gt;OIDC&lt;/a&gt; feature in Cozystack.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;authentication.oidc.insecureSkipVerify&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Skip TLS certificate verification for the OIDC provider.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;authentication.oidc.keycloakExtraRedirectUri&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;Additional redirect URI for Keycloak OIDC client.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;authentication.oidc.keycloakInternalUrl&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;Internal URL for backend-to-backend requests to Keycloak. When set, the dashboard&amp;rsquo;s oauth2-proxy skips OIDC discovery and routes token, JWKS, userinfo, and logout requests through this URL while keeping browser redirects on the external URL. Example: &lt;code&gt;http://keycloak-http.cozy-keycloak.svc:8080/realms/cozy&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="scheduling"&gt;Scheduling&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;scheduling.globalAppTopologySpreadConstraints&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;Global pod topology spread constraints applied to all managed applications.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="branding"&gt;Branding&lt;/h4&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;branding&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;UI branding configuration object. See the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/white-labeling/" target="_blank"&gt;White Labeling&lt;/a&gt; guide for available fields and usage. Individual fields (e.g., &lt;code&gt;titleText&lt;/code&gt;, &lt;code&gt;logoSvg&lt;/code&gt;) have their own defaults when not specified.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="registries"&gt;Registries&lt;/h4&gt;
&lt;p&gt;Container registry mirrors configuration. Allows routing image pulls through local mirrors.&lt;/p&gt;</description></item><item><title>Using Cozystack to build public cloud</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/public-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/public-cloud/</guid><description>&lt;p&gt;You can use Cozystack as backend for a public cloud&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;Cozystack positions itself as a kind of framework for building public clouds. The key word here is framework. In this case, it&amp;rsquo;s important to understand that Cozystack is made for cloud providers, not for end users.&lt;/p&gt;
&lt;p&gt;Despite having a graphical interface, the current security model does not imply public user access to your management cluster.&lt;/p&gt;
&lt;p&gt;Instead, end users get access to their own Kubernetes clusters, can order LoadBalancers and additional services from it, but they have no access and know nothing about your management cluster powered by Cozystack.&lt;/p&gt;</description></item><item><title>Using Cozystack to build public cloud</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/public-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/public-cloud/</guid><description>&lt;p&gt;You can use Cozystack as backend for a public cloud&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;Cozystack positions itself as a kind of framework for building public clouds. The key word here is framework. In this case, it&amp;rsquo;s important to understand that Cozystack is made for cloud providers, not for end users.&lt;/p&gt;
&lt;p&gt;Despite having a graphical interface, the current security model does not imply public user access to your management cluster.&lt;/p&gt;
&lt;p&gt;Instead, end users get access to their own Kubernetes clusters, can order LoadBalancers and additional services from it, but they have no access and know nothing about your management cluster powered by Cozystack.&lt;/p&gt;</description></item><item><title>REST API Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/cozystack-api/rest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/cozystack-api/rest/</guid><description>&lt;div id="docsy_swagger_ui"&gt;&lt;/div&gt;
&lt;script&gt;
 window.onload = function () {
 const ui = SwaggerUIBundle({
 url: "/docs/v0/cozystack-api/api.json",
 dom_id: '#docsy_swagger_ui',
 presets: [
 SwaggerUIBundle.presets.apis,
 SwaggerUIStandalonePreset
 ]
 });
 window.ui = ui;
 };
&lt;/script&gt;</description></item><item><title>REST API Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/cozystack-api/rest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/cozystack-api/rest/</guid><description>&lt;div id="docsy_swagger_ui"&gt;&lt;/div&gt;
&lt;script&gt;
 window.onload = function () {
 const ui = SwaggerUIBundle({
 url: "/docs/v1/cozystack-api/api.json",
 dom_id: '#docsy_swagger_ui',
 presets: [
 SwaggerUIBundle.presets.apis,
 SwaggerUIStandalonePreset
 ]
 });
 window.ui = ui;
 };
&lt;/script&gt;</description></item><item><title>Storage Pools</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/object-storage/storage-pools/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/object-storage/storage-pools/</guid><description>&lt;p&gt;Storage pools let you partition SeaweedFS volume servers by disk type.
Each pool creates a separate Volume StatefulSet tagged with a SeaweedFS &lt;code&gt;diskType&lt;/code&gt;, and a matching set of COSI resources (BucketClasses and BucketAccessClasses) that buckets can reference.&lt;/p&gt;
&lt;h2 id="when-to-use-pools"&gt;When to Use Pools&lt;/h2&gt;
&lt;p&gt;Use storage pools when your cluster has different storage tiers and you want to control which tier a bucket uses.
For example, you might have fast NVMe drives for hot data and large HDD drives for archival storage.&lt;/p&gt;</description></item><item><title>Use talos-bootstrap script to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talos-bootstrap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talos-bootstrap/</guid><description>&lt;p&gt;
&lt;a href="https://github.com/cozystack/talos-bootstrap/" target="_blank"&gt;talos-bootstrap&lt;/a&gt; is an interactive script for bootstrapping Kubernetes clusters on Talos OS.&lt;/p&gt;
&lt;p&gt;It was created by Cozystack developers to simplify the installation of Talos Linux on bare-metal nodes in a user-friendly manner.&lt;/p&gt;
&lt;h2 id="1-install-dependencies"&gt;1. Install Dependencies&lt;/h2&gt;
&lt;p&gt;Install the following dependencies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;talosctl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dialog&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nmap&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download the latest version of &lt;code&gt;talos-bootstrap&lt;/code&gt; from the 
&lt;a href="https://github.com/cozystack/talos-bootstrap/releases" target="_blank"&gt;releases page&lt;/a&gt; or directly from the trunk:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL -o /usr/local/bin/talos-bootstrap &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; https://github.com/cozystack/talos-bootstrap/raw/master/talos-bootstrap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod +x /usr/local/bin/talos-bootstrap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talos-bootstrap --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-prepare-configuration-files"&gt;2. Prepare Configuration Files&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start by making a configuration directory for the new cluster:&lt;/p&gt;</description></item><item><title>Use talos-bootstrap script to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talos-bootstrap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talos-bootstrap/</guid><description>&lt;p&gt;
&lt;a href="https://github.com/cozystack/talos-bootstrap/" target="_blank"&gt;talos-bootstrap&lt;/a&gt; is an interactive script for bootstrapping Kubernetes clusters on Talos OS.&lt;/p&gt;
&lt;p&gt;It was created by Cozystack developers to simplify the installation of Talos Linux on bare-metal nodes in a user-friendly manner.&lt;/p&gt;
&lt;h2 id="1-install-dependencies"&gt;1. Install Dependencies&lt;/h2&gt;
&lt;p&gt;Install the following dependencies&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;talosctl&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dialog&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nmap&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download the latest version of &lt;code&gt;talos-bootstrap&lt;/code&gt; from the 
&lt;a href="https://github.com/cozystack/talos-bootstrap/releases" target="_blank"&gt;releases page&lt;/a&gt; or directly from the trunk:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -fsSL -o /usr/local/bin/talos-bootstrap &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; https://github.com/cozystack/talos-bootstrap/raw/master/talos-bootstrap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod +x /usr/local/bin/talos-bootstrap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talos-bootstrap --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="2-prepare-configuration-files"&gt;2. Prepare Configuration Files&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start by making a configuration directory for the new cluster:&lt;/p&gt;</description></item><item><title>Monitoring Troubleshooting</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/monitoring-troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/monitoring-troubleshooting/</guid><description>&lt;p&gt;This guide provides troubleshooting steps for common issues with monitoring components in Cozystack, including metrics collection, alerting, visualization, and log collection.&lt;/p&gt;
&lt;h2 id="diagnosing-missing-metrics"&gt;Diagnosing Missing Metrics&lt;/h2&gt;
&lt;p&gt;If metrics are not appearing in Grafana or VictoriaMetrics, follow these steps:&lt;/p&gt;
&lt;h3 id="check-vmagent-status"&gt;Check VMAgent Status&lt;/h3&gt;
&lt;p&gt;Ensure VMAgent is running and collecting metrics:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n cozy-monitoring -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;vmagent
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n cozy-monitoring -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;vmagent --tail&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="verify-targets"&gt;Verify Targets&lt;/h3&gt;
&lt;p&gt;Check if VMAgent can scrape targets:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl &lt;span style="color:#007020"&gt;exec&lt;/span&gt; -n cozy-monitoring -c vmagent deploy/vmagent -- curl -s http://localhost:8429/targets | jq .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Look for targets with &lt;code&gt;health: &amp;quot;up&amp;quot;&lt;/code&gt;. If targets are down, check network connectivity and RBAC permissions.&lt;/p&gt;</description></item><item><title>Monitoring Troubleshooting</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/monitoring-troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/monitoring-troubleshooting/</guid><description>&lt;p&gt;This guide provides troubleshooting steps for common issues with monitoring components in Cozystack, including metrics collection, alerting, visualization, and log collection.&lt;/p&gt;
&lt;h2 id="diagnosing-missing-metrics"&gt;Diagnosing Missing Metrics&lt;/h2&gt;
&lt;p&gt;If metrics are not appearing in Grafana or VictoriaMetrics, follow these steps:&lt;/p&gt;
&lt;h3 id="check-vmagent-status"&gt;Check VMAgent Status&lt;/h3&gt;
&lt;p&gt;Ensure VMAgent is running and collecting metrics:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -n cozy-monitoring -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;vmagent
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl logs -n cozy-monitoring -l app.kubernetes.io/name&lt;span style="color:#666"&gt;=&lt;/span&gt;vmagent --tail&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#40a070"&gt;50&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="verify-targets"&gt;Verify Targets&lt;/h3&gt;
&lt;p&gt;Check if VMAgent can scrape targets:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl &lt;span style="color:#007020"&gt;exec&lt;/span&gt; -n cozy-monitoring -c vmagent deploy/vmagent -- curl -s http://localhost:8429/targets | jq .
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Look for targets with &lt;code&gt;health: &amp;quot;up&amp;quot;&lt;/code&gt;. If targets are down, check network connectivity and RBAC permissions.&lt;/p&gt;</description></item><item><title>Upgrading Cozystack and Post-upgrade Checks</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/upgrade/</guid><description>&lt;h2 id="about-cozystack-versions"&gt;About Cozystack Versions&lt;/h2&gt;
&lt;p&gt;Cozystack uses a staged release process to ensure stability and flexibility during development.&lt;/p&gt;
&lt;p&gt;There are three types of releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alpha, Beta, and Release Candidates (RC)&lt;/strong&gt; – Preview versions (such as &lt;code&gt;v0.42.0-alpha.1&lt;/code&gt; or &lt;code&gt;v0.42.0-rc.1&lt;/code&gt;) used for final testing and validation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable Releases&lt;/strong&gt; – Regular versions (e.g., &lt;code&gt;v0.42.0&lt;/code&gt;) that are feature-complete and thoroughly tested.
Such versions usually introduce new features, update dependencies, and may have API changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patch Releases&lt;/strong&gt; – Bugfix-only updates (e.g., &lt;code&gt;v0.42.1&lt;/code&gt;) made after a stable release, based on a dedicated release branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s highly recommended to install only stable and patch releases in production environments.&lt;/p&gt;</description></item><item><title>Upgrading Cozystack and Post-upgrade Checks</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/upgrade/</guid><description>&lt;h2 id="about-cozystack-versions"&gt;About Cozystack Versions&lt;/h2&gt;
&lt;p&gt;Cozystack uses a staged release process to ensure stability and flexibility during development.&lt;/p&gt;
&lt;p&gt;There are three types of releases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Alpha, Beta, and Release Candidates (RC)&lt;/strong&gt; – Preview versions (such as &lt;code&gt;v0.42.0-alpha.1&lt;/code&gt; or &lt;code&gt;v0.42.0-rc.1&lt;/code&gt;) used for final testing and validation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable Releases&lt;/strong&gt; – Regular versions (e.g., &lt;code&gt;v0.42.0&lt;/code&gt;) that are feature-complete and thoroughly tested.
Such versions usually introduce new features, update dependencies, and may have API changes.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Patch Releases&lt;/strong&gt; – Bugfix-only updates (e.g., &lt;code&gt;v0.42.1&lt;/code&gt;) made after a stable release, based on a dedicated release branch.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&amp;rsquo;s highly recommended to install only stable and patch releases in production environments.&lt;/p&gt;</description></item><item><title>Virtual Machine</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-instance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-instance/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/virtualization/_include/vm-instance.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/vm-instance/README.md
--&gt;
&lt;p&gt;A Virtual Machine (VM) simulates computer hardware, enabling various operating systems and applications to run in an isolated environment.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The virtual machine is managed and hosted through KubeVirt, allowing you to harness the benefits of virtualization within your Kubernetes ecosystem.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://kubevirt.io/user-guide/" target="_blank"&gt;KubeVirt User Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: 
&lt;a href="https://github.com/kubevirt/kubevirt" target="_blank"&gt;KubeVirt Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="accessing-virtual-machine"&gt;Accessing virtual machine&lt;/h2&gt;
&lt;p&gt;You can access the virtual machine using the virtctl tool:&lt;/p&gt;</description></item><item><title>Virtual Machine</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-instance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-instance/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/virtualization/_include/vm-instance.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/vm-instance/README.md
--&gt;
&lt;p&gt;A Virtual Machine (VM) simulates computer hardware, enabling various operating systems and applications to run in an isolated environment.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The virtual machine is managed and hosted through KubeVirt, allowing you to harness the benefits of virtualization within your Kubernetes ecosystem.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://kubevirt.io/user-guide/" target="_blank"&gt;KubeVirt User Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: 
&lt;a href="https://github.com/kubevirt/kubevirt" target="_blank"&gt;KubeVirt Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="accessing-virtual-machine"&gt;Accessing virtual machine&lt;/h2&gt;
&lt;p&gt;You can access the virtual machine using the virtctl tool:&lt;/p&gt;</description></item><item><title>VPC</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/vpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/vpc/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/networking/_include/vpc.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/vpc/README.md
--&gt;
&lt;p&gt;VPC offers a subset of dedicated subnets with networking services related to it.
As the service evolves, it will provide more ways to isolate your workloads.&lt;/p&gt;
&lt;h2 id="service-details"&gt;Service details&lt;/h2&gt;
&lt;p&gt;To function, the service requires kube-ovn and multus CNI to be present, so by default it will only work on &lt;code&gt;paas-full&lt;/code&gt; bundle.
Kube-ovn provides VPC and Subnet resources and performs isolation and networking maintenance such as DHCP. Under the hood it uses ovn virtual routers and virtual switches.
Multus enables a multi-nic capability, so a pod or a VM could have two or more network interfaces.&lt;/p&gt;</description></item><item><title>VPC</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/vpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/vpc/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/networking/_include/vpc.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/vpc/README.md
--&gt;
&lt;p&gt;VPC offers a subset of dedicated subnets with networking services related to it.
As the service evolves, it will provide more ways to isolate your workloads.&lt;/p&gt;
&lt;h2 id="service-details"&gt;Service details&lt;/h2&gt;
&lt;p&gt;To function, the service requires kube-ovn and multus CNI to be present, so by default it will only work on &lt;code&gt;paas-full&lt;/code&gt; bundle.
Kube-ovn provides VPC and Subnet resources and performs isolation and networking maintenance such as DHCP. Under the hood it uses ovn virtual routers and virtual switches.
Multus enables a multi-nic capability, so a pod or a VM could have two or more network interfaces.&lt;/p&gt;</description></item><item><title>Managed VPN Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/vpn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/vpn/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/networking/_include/vpn.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/vpn/README.md
--&gt;
&lt;p&gt;A Virtual Private Network (VPN) is a critical tool for ensuring secure and private communication over the internet.
Managed VPN Service simplifies the deployment and management of VPN server, enabling you to establish secure connections with ease.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VPN client applications: 
&lt;a href="https://shadowsocks5.github.io/en/download/clients.html" target="_blank"&gt;https://shadowsocks5.github.io/en/download/clients.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The VPN Service is powered by the Outline Server, an advanced and user-friendly VPN solution.
Internally known as &amp;ldquo;Shadowbox&amp;rdquo;, which simplifies the process of setting up and sharing Shadowsocks servers.
It operates by launching Shadowsocks instances on demand.
Furthermore, Shadowbox is compatible with standard Shadowsocks clients, providing flexibility and ease of use for your VPN requirements.&lt;/p&gt;</description></item><item><title>Managed VPN Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/vpn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/vpn/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/networking/_include/vpn.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/vpn/README.md
--&gt;
&lt;p&gt;A Virtual Private Network (VPN) is a critical tool for ensuring secure and private communication over the internet.
Managed VPN Service simplifies the deployment and management of VPN server, enabling you to establish secure connections with ease.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VPN client applications: 
&lt;a href="https://shadowsocks5.github.io/en/download/clients.html" target="_blank"&gt;https://shadowsocks5.github.io/en/download/clients.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The VPN Service is powered by the Outline Server, an advanced and user-friendly VPN solution.
Internally known as &amp;ldquo;Shadowbox&amp;rdquo;, which simplifies the process of setting up and sharing Shadowsocks servers.
It operates by launching Shadowsocks instances on demand.
Furthermore, Shadowbox is compatible with standard Shadowsocks clients, providing flexibility and ease of use for your VPN requirements.&lt;/p&gt;</description></item><item><title>Monitoring Logs</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/logs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/logs/</guid><description>&lt;h2 id="collecting-and-storing-logs"&gt;Collecting and Storing Logs&lt;/h2&gt;
&lt;p&gt;Cozystack uses Fluent Bit for log collection and VictoriaLogs for log storage and querying. Logs are collected from various sources within the cluster and stored in dedicated log storages configured per tenant.&lt;/p&gt;
&lt;h3 id="configuring-logs-storages"&gt;Configuring Logs Storages&lt;/h3&gt;
&lt;p&gt;Log storages are configured through the monitoring hub parameters. Each tenant can have multiple log storage instances with customizable retention periods and storage sizes.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Array of log storage configurations&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for logs (e.g., &amp;ldquo;30d&amp;rdquo;)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;10Gi&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass for data persistence&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;replicated&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For detailed configuration options, see 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/" target="_blank"&gt;Monitoring Hub Reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Monitoring Logs</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/logs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/logs/</guid><description>&lt;h2 id="collecting-and-storing-logs"&gt;Collecting and Storing Logs&lt;/h2&gt;
&lt;p&gt;Cozystack uses Fluent Bit for log collection and VictoriaLogs for log storage and querying. Logs are collected from various sources within the cluster and stored in dedicated log storages configured per tenant.&lt;/p&gt;
&lt;h3 id="configuring-logs-storages"&gt;Configuring Logs Storages&lt;/h3&gt;
&lt;p&gt;Log storages are configured through the monitoring hub parameters. Each tenant can have multiple log storage instances with customizable retention periods and storage sizes.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Array of log storage configurations&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the storage instance&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].retentionPeriod&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention period for logs (e.g., &amp;ldquo;30d&amp;rdquo;)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;1&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent volume size&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;10Gi&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logsStorages[i].storageClassName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass for data persistence&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;replicated&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For detailed configuration options, see 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/" target="_blank"&gt;Monitoring Hub Reference&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>2. Install and Bootstrap a Kubernetes cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-kubernetes/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;We start this step of the tutorial, having 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-talos/" target="_blank"&gt;three nodes with Talos Linux installed on them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a result of this step, we will have a Kubernetes cluster installed, configured, and ready to install Cozystack.
We will also have a &lt;code&gt;kubeconfgig&lt;/code&gt; for this cluster, and will have performed basic checks on the cluster.&lt;/p&gt;
&lt;h2 id="installing-kubernetes"&gt;Installing Kubernetes&lt;/h2&gt;
&lt;p&gt;Install and bootstrap a Kubernetes cluster using 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/" target="_blank"&gt;Talm&lt;/a&gt;, a declarative CLI configuration tool with ready configuration presets for Cozystack.&lt;/p&gt;</description></item><item><title>2. Install and Bootstrap a Kubernetes cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-kubernetes/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;We start this step of the tutorial, having 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-talos/" target="_blank"&gt;three nodes with Talos Linux installed on them&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a result of this step, we will have a Kubernetes cluster installed, configured, and ready to install Cozystack.
We will also have a &lt;code&gt;kubeconfig&lt;/code&gt; for this cluster, and will have performed basic checks on the cluster.&lt;/p&gt;
&lt;h2 id="installing-kubernetes"&gt;Installing Kubernetes&lt;/h2&gt;
&lt;p&gt;Install and bootstrap a Kubernetes cluster using 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/" target="_blank"&gt;Talm&lt;/a&gt;, a declarative CLI configuration tool with ready configuration presets for Cozystack.&lt;/p&gt;</description></item><item><title>Custom Metrics Collection</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/custom-metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/custom-metrics/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack tenant monitoring supports scraping custom metrics from your own applications and exporters. The tenant VMAgent discovers scrape targets through Kubernetes namespace labels, allowing you to connect any application that exposes a Prometheus-compatible &lt;code&gt;/metrics&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;This guide explains how to create &lt;code&gt;VMServiceScrape&lt;/code&gt; and &lt;code&gt;VMPodScrape&lt;/code&gt; resources so that the tenant VMAgent collects your custom metrics and makes them available in Grafana.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Monitoring is enabled for your tenant (see 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/setup/"&gt;Monitoring Setup&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Your application or exporter is deployed and exposes a Prometheus-compatible &lt;code&gt;/metrics&lt;/code&gt; endpoint&lt;/li&gt;
&lt;li&gt;You have &lt;code&gt;kubectl&lt;/code&gt; access to the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="using-vmservicescrape"&gt;Using VMServiceScrape&lt;/h2&gt;
&lt;p&gt;A &lt;code&gt;VMServiceScrape&lt;/code&gt; tells the tenant VMAgent to scrape metrics from endpoints behind a Kubernetes Service.&lt;/p&gt;</description></item><item><title>Custom Metrics Collection</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/custom-metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/custom-metrics/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack tenant monitoring supports scraping custom metrics from your own applications and exporters. The tenant VMAgent discovers scrape targets through Kubernetes namespace labels, allowing you to connect any application that exposes a Prometheus-compatible &lt;code&gt;/metrics&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;This guide explains how to create &lt;code&gt;VMServiceScrape&lt;/code&gt; and &lt;code&gt;VMPodScrape&lt;/code&gt; resources so that the tenant VMAgent collects your custom metrics and makes them available in Grafana.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Monitoring is enabled for your tenant (see 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/setup/"&gt;Monitoring Setup&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Your application or exporter is deployed and exposes a Prometheus-compatible &lt;code&gt;/metrics&lt;/code&gt; endpoint&lt;/li&gt;
&lt;li&gt;You have &lt;code&gt;kubectl&lt;/code&gt; access to the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="using-vmservicescrape"&gt;Using VMServiceScrape&lt;/h2&gt;
&lt;p&gt;A &lt;code&gt;VMServiceScrape&lt;/code&gt; tells the tenant VMAgent to scrape metrics from endpoints behind a Kubernetes Service.&lt;/p&gt;</description></item><item><title>Local Cloud Controller Manager</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/local-ccm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/local-ccm/</guid><description>&lt;p&gt;The &lt;code&gt;local-ccm&lt;/code&gt; package provides a lightweight cloud controller manager for self-managed clusters.
It handles node IP detection and node lifecycle without requiring an external cloud provider.&lt;/p&gt;
&lt;h2 id="what-it-does"&gt;What it does&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;External IP detection&lt;/strong&gt;: Detects each node&amp;rsquo;s external IP via &lt;code&gt;ip route get&lt;/code&gt; (default target: &lt;code&gt;8.8.8.8&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node initialization&lt;/strong&gt;: Removes the &lt;code&gt;node.cloudprovider.kubernetes.io/uninitialized&lt;/code&gt; taint so pods can be scheduled&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node lifecycle controller&lt;/strong&gt; (optional): Monitors NotReady nodes via ICMP ping and removes them after a configurable timeout&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="install"&gt;Install&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cozypkg add cozystack.local-ccm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="talos-machine-config"&gt;Talos machine config&lt;/h2&gt;
&lt;p&gt;All nodes in the cluster (including control plane) must have &lt;code&gt;cloud-provider: external&lt;/code&gt; set
so that kubelet defers node initialization to the cloud controller manager:&lt;/p&gt;</description></item><item><title>Install Talos Linux using PXE</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/pxe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/pxe/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on bare metal servers or virtual machines
using temporary DHCP and PXE servers running in Docker containers.
This method requires an extra management machine, but allows for installing on multiple hosts at once.&lt;/p&gt;
&lt;p&gt;Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;
&lt;h2 id="dependencies"&gt;Dependencies&lt;/h2&gt;
&lt;p&gt;To install Talos using this method, you will need the following dependencies on the management host:&lt;/p&gt;</description></item><item><title>Install Talos Linux using PXE</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/pxe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/pxe/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on bare metal servers or virtual machines
using temporary DHCP and PXE servers running in Docker containers.
This method requires an extra management machine, but allows for installing on multiple hosts at once.&lt;/p&gt;
&lt;p&gt;Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;
&lt;h2 id="dependencies"&gt;Dependencies&lt;/h2&gt;
&lt;p&gt;To install Talos using this method, you will need the following dependencies on the management host:&lt;/p&gt;</description></item><item><title>Use talosctl to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talosctl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talosctl/</guid><description>&lt;p&gt;This guide explains how to prepare a Talos Linux cluster for deploying Cozystack using &lt;code&gt;talosctl&lt;/code&gt;,
a specialized command line tool for managing Talos.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;By the start of this guide you should have Talos OS booted from ISO, but not initialized (bootstrapped), on several nodes.
These nodes should belong to one subnet or have public IPs.&lt;/p&gt;
&lt;p&gt;This guide uses an example where the nodes of a cluster are located in the subnet &lt;code&gt;192.168.123.0/24&lt;/code&gt;, having the following IP addresses:&lt;/p&gt;</description></item><item><title>Use talosctl to bootstrap a Cozystack cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talosctl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talosctl/</guid><description>&lt;p&gt;This guide explains how to prepare a Talos Linux cluster for deploying Cozystack using &lt;code&gt;talosctl&lt;/code&gt;,
a specialized command line tool for managing Talos.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;By the start of this guide you should have Talos OS booted from ISO, but not initialized (bootstrapped), on several nodes.
These nodes should belong to one subnet or have public IPs.&lt;/p&gt;
&lt;p&gt;This guide uses an example where the nodes of a cluster are located in the subnet &lt;code&gt;192.168.123.0/24&lt;/code&gt;, having the following IP addresses:&lt;/p&gt;</description></item><item><title>3. Install and Configure Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-cozystack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-cozystack/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;In this step of the tutorial, we&amp;rsquo;ll install Cozystack on top of a 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-kubernetes/" target="_blank"&gt;Kubernetes cluster, prepared in the previous step&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The tutorial will guide you through the following stages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Prepare a Cozystack configuration file&lt;/li&gt;
&lt;li&gt;Install Cozystack by applying configuration&lt;/li&gt;
&lt;li&gt;Configure storage&lt;/li&gt;
&lt;li&gt;Configure networking&lt;/li&gt;
&lt;li&gt;Deploy etcd, ingress and monitoring stack in the root tenant&lt;/li&gt;
&lt;li&gt;Finalize deployment and access Cozystack dashboard&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="1-prepare-a-configuration-file"&gt;1. Prepare a Configuration File&lt;/h2&gt;
&lt;p&gt;We will start installing Cozystack by making a configuration file.
Take the example below and write it in a file &lt;strong&gt;cozystack.yaml&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>3. Install and Configure Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-cozystack/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-cozystack/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;


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


 This tutorial covers installing Cozystack as a &lt;strong&gt;ready-to-use platform&lt;/strong&gt;.
If you want to build your own platform by installing only specific components,
see the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/cozystack/kubernetes-distribution/" target="_blank"&gt;BYOP (Build Your Own Platform) guide&lt;/a&gt;.

&lt;/div&gt;

&lt;p&gt;In this step of the tutorial, we&amp;rsquo;ll install Cozystack on top of a 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-kubernetes/" target="_blank"&gt;Kubernetes cluster, prepared in the previous step&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The tutorial will guide you through the following stages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install the Cozystack operator&lt;/li&gt;
&lt;li&gt;Prepare a Cozystack configuration file and apply it&lt;/li&gt;
&lt;li&gt;Configure storage&lt;/li&gt;
&lt;li&gt;Configure networking&lt;/li&gt;
&lt;li&gt;Deploy etcd, ingress and monitoring stack in the root tenant&lt;/li&gt;
&lt;li&gt;Finalize deployment and access Cozystack dashboard&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="1-install-the-cozystack-operator"&gt;1. Install the Cozystack Operator&lt;/h2&gt;
&lt;p&gt;Install the Cozystack operator using the Helm chart from the OCI registry.
The operator manages all Cozystack components and handles the Platform Package lifecycle.&lt;/p&gt;</description></item><item><title>Bootstrap an Air-Gapped Cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/air-gapped/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/air-gapped/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide outlines the steps to bootstrap a Cozystack cluster in an &lt;strong&gt;air-gapped environment&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Air-gapped&lt;/strong&gt; installation means that the cluster has no direct access to the Internet.
All necessary resources, such as images and metadata, must be available on the private network.&lt;/p&gt;
&lt;h2 id="configuring-talos-nodes"&gt;Configuring Talos Nodes&lt;/h2&gt;


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


 &lt;p&gt;For installing with Talm, it&amp;rsquo;s enough to make all mentioned changes once in &lt;code&gt;./templates/_helpers.tpl&lt;/code&gt; and then build the actual node configuration files with &lt;code&gt;talm template&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Bootstrap an Air-Gapped Cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/air-gapped/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/air-gapped/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide outlines the steps to bootstrap a Cozystack cluster in an &lt;strong&gt;air-gapped environment&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Air-gapped&lt;/strong&gt; installation means that the cluster has no direct access to the Internet.
All necessary resources, such as images and metadata, must be available on the private network.&lt;/p&gt;
&lt;h2 id="configuring-talos-nodes"&gt;Configuring Talos Nodes&lt;/h2&gt;


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


 &lt;p&gt;For installing with Talm, it&amp;rsquo;s enough to make all mentioned changes once in &lt;code&gt;./templates/_helpers.tpl&lt;/code&gt; and then build the actual node configuration files with &lt;code&gt;talm template&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Cluster Autoscaler for Azure</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/autoscaling/azure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/autoscaling/azure/</guid><description>&lt;p&gt;This guide explains how to configure cluster-autoscaler for automatic node scaling in Azure with Talos Linux.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Azure subscription with Contributor Service Principal&lt;/li&gt;
&lt;li&gt;&lt;code&gt;az&lt;/code&gt; CLI installed&lt;/li&gt;
&lt;li&gt;Existing Talos Kubernetes cluster&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/networking-mesh/" target="_blank"&gt;Networking Mesh&lt;/a&gt; and 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/multi-location/local-ccm/" target="_blank"&gt;Local CCM&lt;/a&gt; configured&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-create-azure-infrastructure"&gt;Step 1: Create Azure Infrastructure&lt;/h2&gt;
&lt;h3 id="11-login-with-service-principal"&gt;1.1 Login with Service Principal&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az login --service-principal &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --username &lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;APP_ID&amp;gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --password &lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;PASSWORD&amp;gt;&amp;#34;&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --tenant &lt;span style="color:#4070a0"&gt;&amp;#34;&amp;lt;TENANT_ID&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-create-resource-group"&gt;1.2 Create Resource Group&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az group create &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --location &amp;lt;location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="13-create-vnet-and-subnet"&gt;1.3 Create VNet and Subnet&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az network vnet create &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name cozystack-vnet &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --address-prefix 10.2.0.0/16 &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --subnet-name workers &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --subnet-prefix 10.2.0.0/24 &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --location &amp;lt;location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="14-create-network-security-group"&gt;1.4 Create Network Security Group&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az network nsg create &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name cozystack-nsg &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --location &amp;lt;location&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Allow WireGuard&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az network nsg rule create &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --nsg-name cozystack-nsg &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name AllowWireGuard &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --priority &lt;span style="color:#40a070"&gt;100&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --direction Inbound &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --access Allow &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --protocol Udp &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --destination-port-ranges &lt;span style="color:#40a070"&gt;51820&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Allow Talos API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az network nsg rule create &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --nsg-name cozystack-nsg &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name AllowTalosAPI &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --priority &lt;span style="color:#40a070"&gt;110&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --direction Inbound &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --access Allow &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --protocol Tcp &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --destination-port-ranges &lt;span style="color:#40a070"&gt;50000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Associate NSG with subnet&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;az network vnet subnet update &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --resource-group &amp;lt;resource-group&amp;gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --vnet-name cozystack-vnet &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --name workers &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; --network-security-group cozystack-nsg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="step-2-create-talos-image"&gt;Step 2: Create Talos Image&lt;/h2&gt;
&lt;h3 id="21-generate-schematic-id"&gt;2.1 Generate Schematic ID&lt;/h3&gt;
&lt;p&gt;Create a schematic at 
&lt;a href="https://factory.talos.dev" target="_blank"&gt;factory.talos.dev&lt;/a&gt; with required extensions:&lt;/p&gt;</description></item><item><title>Buckets and Users</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/object-storage/buckets/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/object-storage/buckets/</guid><description>&lt;p&gt;The Bucket application creates an S3 bucket via COSI and provisions per-user credentials as Kubernetes Secrets.&lt;/p&gt;
&lt;h2 id="creating-a-bucket"&gt;Creating a Bucket&lt;/h2&gt;
&lt;p&gt;A minimal bucket uses the default BucketClass and creates no users:&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;"&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;apps.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:#bbb"&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;Bucket&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;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;my-bucket&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;tenant-example&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;spec&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &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;This provisions a BucketClaim against the default BucketClass (&lt;code&gt;tenant-example&lt;/code&gt;).
To make the bucket useful, add at least one user (see 
&lt;a href="#users"&gt;Users&lt;/a&gt; below).&lt;/p&gt;
&lt;h2 id="selecting-a-storage-pool"&gt;Selecting a Storage Pool&lt;/h2&gt;
&lt;p&gt;If your SeaweedFS instance defines 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/object-storage/storage-pools/" target="_blank"&gt;storage pools&lt;/a&gt;, use the &lt;code&gt;storagePool&lt;/code&gt; field to target a specific pool:&lt;/p&gt;</description></item><item><title>Build Your Own Platform (BYOP)</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/cozystack/kubernetes-distribution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/cozystack/kubernetes-distribution/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Cozystack can be used in BYOP (Build Your Own Platform) mode — similar to how Linux distributions let you install only the packages you need.
Instead of deploying the full platform with all components, you selectively install only what you need from the Cozystack package repository.&lt;/p&gt;
&lt;p&gt;This approach is useful when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have an existing Kubernetes cluster and only need specific components (e.g., a Postgres operator or monitoring).&lt;/li&gt;
&lt;li&gt;Your cluster already has networking (CNI) and storage configured, and you don&amp;rsquo;t want Cozystack to manage them.&lt;/li&gt;
&lt;li&gt;You want full control over which components are installed and how they are configured.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The workflow relies on two Kubernetes resources managed by the Cozystack Operator:&lt;/p&gt;</description></item><item><title>Cozystack Bundles: Overview and Comparison</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/bundles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/bundles/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Bundles&lt;/strong&gt; are pre-defined combinations of Cozystack components.
Each bundle is tested, versioned, and guaranteed to work as a unit.
They simplify installation, reduce the risk of misconfiguration, and make it easier to choose the right set of features for your deployment.&lt;/p&gt;
&lt;p&gt;This guide is for infrastructure engineers, DevOps teams, and platform architects planning to deploy Cozystack in different environments.
It explains how Cozystack bundles help tailor the installation to specific needs—whether you&amp;rsquo;re building a fully featured platform-as-a-service
or just need a minimal Kubernetes cluster.&lt;/p&gt;</description></item><item><title>Cluster Scaling: Adding and Removing Nodes</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/scaling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/scaling/</guid><description>&lt;h2 id="how-to-add-a-node-to-a-cozystack-cluster"&gt;How to add a node to a Cozystack cluster&lt;/h2&gt;
&lt;p&gt;Adding a node is done in a way similar to regular Cozystack installation.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/" target="_blank"&gt;Install Talos on the node&lt;/a&gt;, using the Cozystack&amp;rsquo;s custom-built Talos image.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate the configuration for the new node, using the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/#3-generate-node-configuration-files" target="_blank"&gt;Talm&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talosctl/#2-generate-node-configuration-files" target="_blank"&gt;talosctl&lt;/a&gt; guide.&lt;/p&gt;
&lt;p&gt;For example, configuring a control plane node:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm template -e 192.168.123.20 -n 192.168.123.20 -t templates/controlplane.yaml -i &amp;gt; nodes/nodeN.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and for a worker node:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm template -e 192.168.123.20 -n 192.168.123.20 -t templates/worker.yaml -i &amp;gt; nodes/nodeN.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply the generated configuration to the node, using the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/#41-apply-configuration-files" target="_blank"&gt;Talm&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talosctl/#3-apply-node-configuration" target="_blank"&gt;talosctl&lt;/a&gt; guide.
For example:&lt;/p&gt;</description></item><item><title>Cluster Scaling: Adding and Removing Nodes</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/scaling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/scaling/</guid><description>&lt;h2 id="how-to-add-a-node-to-a-cozystack-cluster"&gt;How to add a node to a Cozystack cluster&lt;/h2&gt;
&lt;p&gt;Adding a node is done in a way similar to regular Cozystack installation.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/" target="_blank"&gt;Install Talos on the node&lt;/a&gt;, using the Cozystack&amp;rsquo;s custom-built Talos image.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generate the configuration for the new node, using the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/#3-generate-node-configuration-files" target="_blank"&gt;Talm&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talosctl/#2-generate-node-configuration-files" target="_blank"&gt;talosctl&lt;/a&gt; guide.&lt;/p&gt;
&lt;p&gt;For example, configuring a control plane node:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm template -e 192.168.123.20 -n 192.168.123.20 -t templates/controlplane.yaml -i &amp;gt; nodes/nodeN.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and for a worker node:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm template -e 192.168.123.20 -n 192.168.123.20 -t templates/worker.yaml -i &amp;gt; nodes/nodeN.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply the generated configuration to the node, using the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/#41-apply-configuration-files" target="_blank"&gt;Talm&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talosctl/#3-apply-node-configuration" target="_blank"&gt;talosctl&lt;/a&gt; guide.
For example:&lt;/p&gt;</description></item><item><title>Configuring DRBD Resync Controller in LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/drbd-tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/drbd-tuning/</guid><description>&lt;p&gt;Cozystack administrators can adjust DRBD synchronization performance by setting tuning parameters
for the LINSTOR Controller.&lt;/p&gt;
&lt;p&gt;This allows you to optimize the speed of resynchronization without overloading the replication network or storage backend.&lt;/p&gt;
&lt;p&gt;For detailed explanations of all available parameters and tuning recommendations, please refer to the official LINBIT guide:

&lt;a href="https://kb.linbit.com/drbd/tuning-the-drbd-resync-controller/" target="_blank"&gt;Tuning the DRBD Resync Controller&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For a multi-datacenter setup, also read the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/drbd-tuning/" target="_blank"&gt;Multi-DC DRBD configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="recommended-settings-for-10g-networks"&gt;Recommended Settings for 10G Networks&lt;/h2&gt;
&lt;p&gt;We consider the following values to be optimal for clusters connected with a 10-Gigabit network:&lt;/p&gt;</description></item><item><title>Configuring DRBD Resync Controller in LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/drbd-tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/drbd-tuning/</guid><description>&lt;p&gt;Cozystack administrators can adjust DRBD synchronization performance by setting tuning parameters
for the LINSTOR Controller.&lt;/p&gt;
&lt;p&gt;This allows you to optimize the speed of resynchronization without overloading the replication network or storage backend.&lt;/p&gt;
&lt;p&gt;For detailed explanations of all available parameters and tuning recommendations, please refer to the official LINBIT guide:

&lt;a href="https://kb.linbit.com/drbd/tuning-the-drbd-resync-controller/" target="_blank"&gt;Tuning the DRBD Resync Controller&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For a multi-datacenter setup, also read the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/drbd-tuning/" target="_blank"&gt;Multi-DC DRBD configuration&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="recommended-settings-for-10g-networks"&gt;Recommended Settings for 10G Networks&lt;/h2&gt;
&lt;p&gt;We consider the following values to be optimal for clusters connected with a 10-Gigabit network:&lt;/p&gt;</description></item><item><title>Managed FerretDB Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/ferretdb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/ferretdb/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/ferretdb.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/ferretdb/README.md
--&gt;
&lt;p&gt;FerretDB is an open source MongoDB alternative.
It translates MongoDB wire protocol queries to SQL and can be used as a direct replacement for MongoDB 5.0+.
Internally, FerretDB service is backed by Postgres.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each FerretDB replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size available for application data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;quorum&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration for quorum-based synchronous replication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;quorum.minSyncReplicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Minimum number of synchronous replicas required for commit.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;quorum.maxSyncReplicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Maximum number of synchronous replicas allowed (must be less than total replicas).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Users configuration map.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for the user.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="backup-parameters"&gt;Backup parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable regular backups (default: false).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.schedule&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cron schedule for automated backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0 2 * * * *&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.retentionPolicy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention policy.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;30d&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.endpointURL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;S3 endpoint URL for uploads.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;http://minio-gateway-service:9000&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.destinationPath&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Path to store the backup (e.g. s3://bucket/path/to/folder/).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;s3://bucket/path/to/folder/&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3AccessKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Access key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-access-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3SecretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secret key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-secret-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="bootstrap-recovery-parameters"&gt;Bootstrap (recovery) parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bootstrap&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bootstrap configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bootstrap.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Restore database cluster from a backup.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bootstrap.recoveryTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Timestamp (RFC3339) for point-in-time recovery; empty means latest.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bootstrap.oldName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of database cluster before deletion.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Managed Nginx-based HTTP Cache Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/http-cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/http-cache/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/networking/_include/http-cache.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/http-cache/README.md
--&gt;
&lt;p&gt;The Nginx-based HTTP caching service is designed to optimize web traffic and enhance web application performance.
This service combines custom-built Nginx instances with HAProxy for efficient caching and load balancing.&lt;/p&gt;
&lt;h2 id="deployment-information"&gt;Deployment information&lt;/h2&gt;
&lt;p&gt;The Nginx instances include the following modules and features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VTS module for statistics&lt;/li&gt;
&lt;li&gt;Integration with ip2location&lt;/li&gt;
&lt;li&gt;Integration with ip2proxy&lt;/li&gt;
&lt;li&gt;Support for 51Degrees&lt;/li&gt;
&lt;li&gt;Cache purge functionality&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HAproxy plays a vital role in this setup by directing incoming traffic to specific Nginx instances based on a consistent hash calculated from the URL. Each Nginx instance includes a Persistent Volume Claim (PVC) for storing cached content, ensuring fast and reliable access to frequently used resources.&lt;/p&gt;</description></item><item><title>Managed Nginx-based HTTP Cache Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/http-cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/http-cache/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/networking/_include/http-cache.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/http-cache/README.md
--&gt;
&lt;p&gt;The Nginx-based HTTP caching service is designed to optimize web traffic and enhance web application performance.
This service combines custom-built Nginx instances with HAProxy for efficient caching and load balancing.&lt;/p&gt;
&lt;h2 id="deployment-information"&gt;Deployment information&lt;/h2&gt;
&lt;p&gt;The Nginx instances include the following modules and features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VTS module for statistics&lt;/li&gt;
&lt;li&gt;Integration with ip2location&lt;/li&gt;
&lt;li&gt;Integration with ip2proxy&lt;/li&gt;
&lt;li&gt;Support for 51Degrees&lt;/li&gt;
&lt;li&gt;Cache purge functionality&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HAproxy plays a vital role in this setup by directing incoming traffic to specific Nginx instances based on a consistent hash calculated from the URL. Each Nginx instance includes a Persistent Volume Claim (PVC) for storing cached content, ensuring fast and reliable access to frequently used resources.&lt;/p&gt;</description></item><item><title>Install Talos Linux using ISO</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/iso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/talos/iso/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on bare metal servers or virtual machines.
Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download Talos Linux asset from the Cozystack&amp;rsquo;s 
&lt;a href="https://github.com/cozystack/cozystack/releases" target="_blank"&gt;releases page&lt;/a&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://github.com/cozystack/cozystack/releases/latest/download/metal-amd64.iso
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot your machine with ISO attached.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;&lt;F3&gt;&lt;/strong&gt; and fill your network settings:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/talos-network-configuration.png" alt="Cozystack for private cloud"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;Once you have installed Talos, proceed by 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/" target="_blank"&gt;installing and bootstrapping a Kubernetes cluster&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Install Talos Linux using ISO</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/iso/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/talos/iso/</guid><description>&lt;p&gt;This guide explains how to install Talos Linux on bare metal servers or virtual machines.
Note that Cozystack provides its own Talos builds, which are tested and optimized for running a Cozystack cluster.&lt;/p&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Download Talos Linux asset from the Cozystack&amp;rsquo;s 
&lt;a href="https://github.com/cozystack/cozystack/releases" target="_blank"&gt;releases page&lt;/a&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget https://github.com/cozystack/cozystack/releases/latest/download/metal-amd64.iso
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Boot your machine with ISO attached.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;strong&gt;&lt;F3&gt;&lt;/strong&gt; and fill your network settings:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/talos-network-configuration.png" alt="Cozystack for private cloud"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="next-steps"&gt;Next steps&lt;/h2&gt;
&lt;p&gt;Once you have installed Talos, proceed by 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/" target="_blank"&gt;installing and bootstrapping a Kubernetes cluster&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kube scheduler configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/kubeschedulerconfiguration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/kubeschedulerconfiguration/</guid><description>&lt;h2 id="label-nodes"&gt;Label nodes&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl label node &amp;lt;nodename&amp;gt; topology.kubernetes.io/zone&lt;span style="color:#666"&gt;=&lt;/span&gt;A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="create-global-app-topology-spread-constraints"&gt;Create global app topology spread constraints&lt;/h2&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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-scheduling&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:#bbb"&gt;&lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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;globalAppTopologySpreadConstraints&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#4070a0;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; topologySpreadConstraints:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; - maxSkew: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; topologyKey: topology.kubernetes.io/zone
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; whenUnsatisfiable: DoNotSchedule&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="configure-podtopologyspread"&gt;Configure PodTopologySpread&lt;/h2&gt;
&lt;p&gt;See: 
&lt;a href="https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#cluster-level-default-constraints" target="_blank"&gt;https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#cluster-level-default-constraints&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Talm installation:
Add to &lt;code&gt;templates/_helpers.tpl&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;"&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;cluster&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:#0e84b5;font-weight:bold"&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;scheduler&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;config&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kubescheduler.config.k8s.io/v1beta3&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;KubeSchedulerConfiguration&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;profiles&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;schedulerName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default-scheduler&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;pluginConfig&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;PodTopologySpread&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;args&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;defaultConstraints&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;maxSkew&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;1&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;topologyKey&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;topology.kubernetes.io/zone&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;whenUnsatisfiable&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ScheduleAnyway&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;defaultingType&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;List&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;Apply changes:&lt;/p&gt;</description></item><item><title>Kube scheduler configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/kubeschedulerconfiguration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/kubeschedulerconfiguration/</guid><description>&lt;h2 id="label-nodes"&gt;Label nodes&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl label node &amp;lt;nodename&amp;gt; topology.kubernetes.io/zone&lt;span style="color:#666"&gt;=&lt;/span&gt;A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="create-global-app-topology-spread-constraints"&gt;Create global app topology spread constraints&lt;/h2&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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-scheduling&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:#bbb"&gt;&lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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;globalAppTopologySpreadConstraints&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#4070a0;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; topologySpreadConstraints:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; - maxSkew: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; topologyKey: topology.kubernetes.io/zone
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; whenUnsatisfiable: DoNotSchedule&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="configure-podtopologyspread"&gt;Configure PodTopologySpread&lt;/h2&gt;
&lt;p&gt;See: 
&lt;a href="https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#cluster-level-default-constraints" target="_blank"&gt;https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/#cluster-level-default-constraints&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Talm installation:
Add to &lt;code&gt;templates/_helpers.tpl&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;"&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;cluster&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:#0e84b5;font-weight:bold"&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;scheduler&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;config&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;kubescheduler.config.k8s.io/v1beta3&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;KubeSchedulerConfiguration&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;profiles&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;schedulerName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;default-scheduler&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;pluginConfig&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;PodTopologySpread&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;args&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;defaultConstraints&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;maxSkew&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;1&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;topologyKey&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;topology.kubernetes.io/zone&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;whenUnsatisfiable&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ScheduleAnyway&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;defaultingType&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;List&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;Apply changes:&lt;/p&gt;</description></item><item><title>Troubleshooting Kube-OVN</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/kube-ovn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/kube-ovn/</guid><description>&lt;h2 id="getting-information-about-kube-ovn-database-state"&gt;Getting information about Kube-OVN database state&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Northbound DB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl -n cozy-kubeovn &lt;span style="color:#007020"&gt;exec&lt;/span&gt; deploy/ovn-central -c ovn-central -- ovn-appctl &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Southbound DB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl -n cozy-kubeovn &lt;span style="color:#007020"&gt;exec&lt;/span&gt; deploy/ovn-central -c ovn-central -- ovn-appctl &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&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;"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Name: OVN_Northbound
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Cluster ID: abf6 (abf66f15-9382-4b2b-b14c-355d64ae1bda)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Server ID: 8d8a (8d8a2985-c444-43bb-99f6-21c82f05b58d)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Address: ssl:[10.200.1.22]:6643
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Status: cluster member
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Role: leader
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Term: 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Leader: self
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Vote: self
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;&lt;/span&gt;&lt;span style=""&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="color:#888"&gt;Last Election started 146211 ms ago, reason: leadership_transfer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Last Election won: 146202 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Election timer: 5000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Log: [2, 1569]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Entries not yet committed: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Entries not yet applied: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Connections: -&amp;gt;2a66 -&amp;gt;c23f &amp;lt;-2a66 &amp;lt;-c23f
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Disconnections: 30
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Servers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; 2a66 (2a66 at ssl:[10.200.1.18]:6643) next_index=1569 match_index=1568 last msg 17 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; 8d8a (8d8a at ssl:[10.200.1.22]:6643) (self) next_index=1471 match_index=1568
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; c23f (c23f at ssl:[10.200.1.1]:6643) next_index=1569 match_index=1568 last msg 18 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To kick a node out of the cluster (for example, if it is down, and you want to remove it from the cluster), use:&lt;/p&gt;</description></item><item><title>Troubleshooting Kube-OVN</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/kube-ovn/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/kube-ovn/</guid><description>&lt;h2 id="getting-information-about-kube-ovn-database-state"&gt;Getting information about Kube-OVN database state&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Northbound DB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl -n cozy-kubeovn &lt;span style="color:#007020"&gt;exec&lt;/span&gt; deploy/ovn-central -c ovn-central -- ovn-appctl &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; -t /var/run/ovn/ovnnb_db.ctl cluster/status OVN_Northbound
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Southbound DB&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl -n cozy-kubeovn &lt;span style="color:#007020"&gt;exec&lt;/span&gt; deploy/ovn-central -c ovn-central -- ovn-appctl &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; -t /var/run/ovn/ovnsb_db.ctl cluster/status OVN_Southbound
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&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;"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Name: OVN_Northbound
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Cluster ID: abf6 (abf66f15-9382-4b2b-b14c-355d64ae1bda)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Server ID: 8d8a (8d8a2985-c444-43bb-99f6-21c82f05b58d)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Address: ssl:[10.200.1.22]:6643
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Status: cluster member
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Role: leader
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Term: 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Leader: self
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Vote: self
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;&lt;/span&gt;&lt;span style=""&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;span style="color:#888"&gt;Last Election started 146211 ms ago, reason: leadership_transfer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Last Election won: 146202 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Election timer: 5000
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Log: [2, 1569]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Entries not yet committed: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Entries not yet applied: 0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Connections: -&amp;gt;2a66 -&amp;gt;c23f &amp;lt;-2a66 &amp;lt;-c23f
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Disconnections: 30
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt;Servers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; 2a66 (2a66 at ssl:[10.200.1.18]:6643) next_index=1569 match_index=1568 last msg 17 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; 8d8a (8d8a at ssl:[10.200.1.22]:6643) (self) next_index=1471 match_index=1568
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#888"&gt; c23f (c23f at ssl:[10.200.1.1]:6643) next_index=1569 match_index=1568 last msg 18 ms ago
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To kick a node out of the cluster (for example, if it is down, and you want to remove it from the cluster), use:&lt;/p&gt;</description></item><item><title>Using Cozystack to build private cloud</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/private-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/private-cloud/</guid><description>&lt;p&gt;You can use Cozystack as platform to build a private cloud powered by Infrastructure-as-Code&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;One of the use cases is a self-portal for users within your company, where they can order the service they&amp;rsquo;re interested in or a managed database.&lt;/p&gt;
&lt;p&gt;You can implement best GitOps practices, where users will launch their own Kubernetes clusters and databases for their needs with a simple commit of configuration into your infrastructure Git repository.&lt;/p&gt;</description></item><item><title>Using Cozystack to build private cloud</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/private-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/private-cloud/</guid><description>&lt;p&gt;You can use Cozystack as platform to build a private cloud powered by Infrastructure-as-Code&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;One of the use cases is a self-portal for users within your company, where they can order the service they&amp;rsquo;re interested in or a managed database.&lt;/p&gt;
&lt;p&gt;You can implement best GitOps practices, where users will launch their own Kubernetes clusters and databases for their needs with a simple commit of configuration into your infrastructure Git repository.&lt;/p&gt;</description></item><item><title>ServiceAccount Tokens for API Access</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/faq/serviceaccount-api-access/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/faq/serviceaccount-api-access/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin, make sure that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A tenant already exists in Cozystack.
See 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/create-tenant/" target="_blank"&gt;Create a User Tenant&lt;/a&gt; if you haven&amp;rsquo;t created one yet.&lt;/li&gt;
&lt;li&gt;You have access to the tenant namespace — either via OIDC credentials or an administrative kubeconfig.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; is installed and configured.&lt;/li&gt;
&lt;li&gt;(Optional) &lt;code&gt;jq&lt;/code&gt; is installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="retrieving-the-serviceaccount-token"&gt;Retrieving the ServiceAccount Token&lt;/h2&gt;
&lt;p&gt;Each tenant in Cozystack has a Secret that contains a ServiceAccount token.
The Secret has the same name as the tenant and is located in the tenant&amp;rsquo;s namespace.&lt;/p&gt;</description></item><item><title>ServiceAccount Tokens for API Access</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/faq/serviceaccount-api-access/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/faq/serviceaccount-api-access/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin, make sure that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A tenant already exists in Cozystack.
See 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/create-tenant/" target="_blank"&gt;Create a User Tenant&lt;/a&gt; if you haven&amp;rsquo;t created one yet.&lt;/li&gt;
&lt;li&gt;You have access to the tenant namespace — either via OIDC credentials or an administrative kubeconfig.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; is installed and configured.&lt;/li&gt;
&lt;li&gt;(Optional) &lt;code&gt;jq&lt;/code&gt; is installed.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="retrieving-the-serviceaccount-token"&gt;Retrieving the ServiceAccount Token&lt;/h2&gt;
&lt;p&gt;Each tenant in Cozystack has a Secret that contains a ServiceAccount token.
The Secret has the same name as the tenant and is located in the tenant&amp;rsquo;s namespace.&lt;/p&gt;</description></item><item><title>Node labels</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/labels/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/labels/</guid><description>&lt;h2 id="how-topology-labels-work"&gt;How topology labels work&lt;/h2&gt;
&lt;p&gt;When running a Kubernetes cluster in multiple datacenters, it&amp;rsquo;s important to know when you want to schedule workloads
close to each other (for example, a database and a backend application) or when you want to spread them out (for
example, multiple replicas of frontend, or database replicas, or volume replicas). The first step to achieving this is
to label Kubernetes nodes. Public clouds typically use the &lt;code&gt;zone&lt;/code&gt; and &lt;code&gt;region&lt;/code&gt; terms. In Kubernetes, the most common way
to designate a geographical location is to use &lt;code&gt;topology.kubernetes.io/zone&lt;/code&gt; and &lt;code&gt;topology.kubernetes.io/region&lt;/code&gt;
labels (or only the zone one).&lt;/p&gt;</description></item><item><title>Node labels</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/labels/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/labels/</guid><description>&lt;h2 id="how-topology-labels-work"&gt;How topology labels work&lt;/h2&gt;
&lt;p&gt;When running a Kubernetes cluster in multiple datacenters, it&amp;rsquo;s important to know when you want to schedule workloads
close to each other (for example, a database and a backend application) or when you want to spread them out (for
example, multiple replicas of frontend, or database replicas, or volume replicas). The first step to achieving this is
to label Kubernetes nodes. Public clouds typically use the &lt;code&gt;zone&lt;/code&gt; and &lt;code&gt;region&lt;/code&gt; terms. In Kubernetes, the most common way
to designate a geographical location is to use &lt;code&gt;topology.kubernetes.io/zone&lt;/code&gt; and &lt;code&gt;topology.kubernetes.io/region&lt;/code&gt;
labels (or only the zone one).&lt;/p&gt;</description></item><item><title>Cozystack Variants: Overview and Comparison</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/variants/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/variants/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Variants&lt;/strong&gt; are pre-defined configurations of Cozystack that determine which bundles and components are enabled.
Each variant is tested, versioned, and guaranteed to work as a unit.
They simplify installation, reduce the risk of misconfiguration, and make it easier to choose the right set of features for your deployment.&lt;/p&gt;
&lt;p&gt;This guide is for infrastructure engineers, DevOps teams, and platform architects planning to deploy Cozystack in different environments.
It explains how Cozystack variants help tailor the installation to specific needs—whether you&amp;rsquo;re building a fully featured platform-as-a-service
or need full manual control over installed packages.&lt;/p&gt;</description></item><item><title>Virtual Machine Disk</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-disk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-disk/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/virtualization/_include/vm-disk.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/vm-disk/README.md
--&gt;
&lt;p&gt;A Virtual Machine Disk&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The source image location used to create a disk.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.image&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Use image by name.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.image.name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the image to use (uploaded as &amp;ldquo;golden image&amp;rdquo; or from the list: &lt;code&gt;ubuntu&lt;/code&gt;, &lt;code&gt;fedora&lt;/code&gt;, &lt;code&gt;cirros&lt;/code&gt;, &lt;code&gt;alpine&lt;/code&gt;, &lt;code&gt;talos&lt;/code&gt;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.upload&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Upload local image.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.http&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Download image from an HTTP source.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.http.url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;URL to download the image.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;optical&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Defines if disk should be considered optical.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The size of the disk allocated for the virtual machine.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;replicated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Virtual Machine Disk</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-disk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-disk/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/virtualization/_include/vm-disk.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/vm-disk/README.md
--&gt;
&lt;p&gt;A Virtual Machine Disk&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The source image location used to create a disk.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.image&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Use image by name.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.image.name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name of the image to use (uploaded as &amp;ldquo;golden image&amp;rdquo; or from the list: &lt;code&gt;ubuntu&lt;/code&gt;, &lt;code&gt;fedora&lt;/code&gt;, &lt;code&gt;cirros&lt;/code&gt;, &lt;code&gt;alpine&lt;/code&gt;, &lt;code&gt;talos&lt;/code&gt;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.upload&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Upload local image.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.http&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Download image from an HTTP source.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;null&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;source.http.url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;URL to download the image.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;optical&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Defines if disk should be considered optical.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storage&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The size of the disk allocated for the virtual machine.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;replicated&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>How to install Cozystack in Oracle Cloud Infrastructure</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/providers/oracle-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/providers/oracle-cloud/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains how to install Talos on Oracle Cloud Infrastructure and deploy a Kubernetes cluster that is ready for Cozystack.
After completing the guide, you will be ready to proceed with

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-cozystack/" target="_blank"&gt;installing Cozystack itself&lt;/a&gt;.&lt;/p&gt;


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


 This guide was created to support deployment of development clusters by the Cozystack team.
If you face any problems while going through the guide, please raise an issue in 
&lt;a href="https://github.com/cozystack/website/issues" target="_blank"&gt;cozystack/website&lt;/a&gt;
or come and share your experience in the 
&lt;a href="https://t.me/cozystack" target="_blank"&gt;Cozystack community&lt;/a&gt;.

&lt;/div&gt;

&lt;h2 id="1-upload-talos-image-to-oracle-cloud"&gt;1. Upload Talos Image to Oracle Cloud&lt;/h2&gt;
&lt;p&gt;The first step is to make a Talos Linux installation image available for use in Oracle Cloud as a custom image.&lt;/p&gt;</description></item><item><title>How to install Cozystack in Oracle Cloud Infrastructure</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/providers/oracle-cloud/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/providers/oracle-cloud/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains how to install Talos on Oracle Cloud Infrastructure and deploy a Kubernetes cluster that is ready for Cozystack.
After completing the guide, you will be ready to proceed with

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-cozystack/" target="_blank"&gt;installing Cozystack itself&lt;/a&gt;.&lt;/p&gt;


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


 This guide was created to support deployment of development clusters by the Cozystack team.
If you face any problems while going through the guide, please raise an issue in 
&lt;a href="https://github.com/cozystack/website/issues" target="_blank"&gt;cozystack/website&lt;/a&gt;
or come and share your experience in the 
&lt;a href="https://t.me/cozystack" target="_blank"&gt;Cozystack community&lt;/a&gt;.

&lt;/div&gt;

&lt;h2 id="1-upload-talos-image-to-oracle-cloud"&gt;1. Upload Talos Image to Oracle Cloud&lt;/h2&gt;
&lt;p&gt;The first step is to make a Talos Linux installation image available for use in Oracle Cloud as a custom image.&lt;/p&gt;</description></item><item><title>Build Your Own Platform (BYOP)</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/kubernetes-distribution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/use-cases/kubernetes-distribution/</guid><description>&lt;p&gt;Cozystack can be used in BYOP (Build Your Own Platform) mode — installing only the components you need from the Cozystack package repository,
rather than deploying the full platform.&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;Cozystack provides a package management system inspired by Linux distribution package managers.
The Cozystack Operator manages &lt;code&gt;PackageSource&lt;/code&gt; and &lt;code&gt;Package&lt;/code&gt; resources, while the &lt;code&gt;cozypkg&lt;/code&gt; CLI tool
provides an interactive interface for listing available packages, resolving dependencies, and installing them selectively.&lt;/p&gt;
&lt;p&gt;This approach is useful when:&lt;/p&gt;</description></item><item><title>Cozystack Components Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/components/</guid><description>&lt;h3 id="overwriting-component-parameters"&gt;Overwriting Component Parameters&lt;/h3&gt;
&lt;p&gt;You might want to override specific options for the components.
To achieve this, you must specify values in JSON or YAML format using the &lt;code&gt;data.values-&amp;lt;component&amp;gt;&lt;/code&gt; option
in the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/configmap/" target="_blank"&gt;Cozystack ConfigMap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For example, if you want to overwrite &lt;code&gt;k8sServiceHost&lt;/code&gt; and &lt;code&gt;k8sServicePort&lt;/code&gt; for cilium,
take a look at its 
&lt;a href="https://github.com/cozystack/cozystack/blob/238061efbc0da61d60068f5de31d6eaa35c4d994/packages/system/cilium/values.yaml#L18-L19" target="_blank"&gt;values.yaml&lt;/a&gt; file.&lt;/p&gt;
&lt;p&gt;Then specify these options in the &lt;code&gt;values-cilium&lt;/code&gt; section of your Cozystack configuration, as shown below:&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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&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:#bbb"&gt;&lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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;bundle-name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;distro-full&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;ipv4-pod-cidr&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;ipv4-svc-cidr&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;values-cilium&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#4070a0;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; cilium:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; k8sServiceHost: 11.22.33.44
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; k8sServicePort: 6443&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="enabling-and-disabling-components"&gt;Enabling and Disabling Components&lt;/h3&gt;
&lt;p&gt;Bundles have optional components that need to be explicitly enabled (included) in the installation.
Regular bundle components can, on the other hand, be disabled (excluded) from the installation, when you don&amp;rsquo;t need them.&lt;/p&gt;</description></item><item><title>Cozystack Components Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/components/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/components/</guid><description>&lt;h3 id="overwriting-component-parameters"&gt;Overwriting Component Parameters&lt;/h3&gt;
&lt;p&gt;You might want to override specific options for the components.
To achieve this, modify the corresponding Package resource and specify values
in the &lt;code&gt;spec.components&lt;/code&gt; section. The values structure follows the

&lt;a href="https://github.com/cozystack/cozystack/tree/main/packages/system" target="_blank"&gt;values.yaml&lt;/a&gt;
of the respective system chart in the Cozystack repository.&lt;/p&gt;
&lt;p&gt;For example, if you want to enable FRR-K8s mode for MetalLB, look at its

&lt;a href="https://github.com/cozystack/cozystack/blob/main/packages/system/metallb/values.yaml" target="_blank"&gt;values.yaml&lt;/a&gt;
to understand the available parameters, then modify the &lt;code&gt;cozystack.metallb&lt;/code&gt; Package:&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;"&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:#bbb"&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:#bbb"&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:#bbb"&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="enabling-and-disabling-components"&gt;Enabling and Disabling Components&lt;/h3&gt;
&lt;p&gt;Bundles have optional components that need to be explicitly enabled (included) in the installation.
Regular bundle components can, on the other hand, be disabled (excluded) from the installation, when you don&amp;rsquo;t need them.&lt;/p&gt;</description></item><item><title>How to generate kubeconfig for tenant users</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/faq/generate-kubeconfig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/faq/generate-kubeconfig/</guid><description>&lt;p&gt;To generate a &lt;code&gt;kubeconfig&lt;/code&gt; for tenant users, use the following script.
As a result, you’ll receive the tenant-kubeconfig file, which you can provide to the user.&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bb60d5"&gt;SERVER&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;$(&lt;/span&gt;kubectl config view --minify -o &lt;span style="color:#bb60d5"&gt;jsonpath&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;{.clusters[0].cluster.server}&amp;#39;&lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get secret tenant-root -n tenant-root -o go-template&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;apiVersion: v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;kind: Config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; cluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; server: &amp;#39;&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bb60d5"&gt;$SERVER&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; certificate-authority-data: {{ index .data &amp;#34;ca.crt&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;contexts:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; context:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; cluster: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; namespace: {{ index .data &amp;#34;namespace&amp;#34; | base64decode }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; user: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;current-context: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;users:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; user:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; token: {{ index .data &amp;#34;token&amp;#34; | base64decode }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt;&amp;gt; tenant-root.kubeconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How to generate kubeconfig for tenant users</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/faq/generate-kubeconfig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/faq/generate-kubeconfig/</guid><description>&lt;p&gt;To generate a &lt;code&gt;kubeconfig&lt;/code&gt; for tenant users, use the following script.
As a result, you’ll receive the tenant-kubeconfig file, which you can provide to the user.&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bb60d5"&gt;SERVER&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;$(&lt;/span&gt;kubectl config view --minify -o &lt;span style="color:#bb60d5"&gt;jsonpath&lt;/span&gt;&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;{.clusters[0].cluster.server}&amp;#39;&lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get secret tenant-root -n tenant-root -o go-template&lt;span style="color:#666"&gt;=&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;apiVersion: v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;kind: Config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; cluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; server: &amp;#39;&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#bb60d5"&gt;$SERVER&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; certificate-authority-data: {{ index .data &amp;#34;ca.crt&amp;#34; }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;contexts:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; context:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; cluster: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; namespace: {{ index .data &amp;#34;namespace&amp;#34; | base64decode }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; user: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;current-context: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;users:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;- name: tenant-root
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; user:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt; token: {{ index .data &amp;#34;token&amp;#34; | base64decode }}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0"&gt;&amp;#39;&lt;/span&gt; &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt;&amp;gt; tenant-root.kubeconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>How to configure GitLab as an Identity Provider</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/identity_providers/gitlab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/identity_providers/gitlab/</guid><description>&lt;p&gt;You can use Gitlab identity provider for Keycloak&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;h2 id="create-application-in-gitlab"&gt;Create Application in Gitlab&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;https://gitlab.com/groups/&amp;lt;YOUR_GROUP&amp;gt;/-/settings/applications&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Add new application&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Name: cozy, Redirect URI: &lt;code&gt;https://keycloak.&amp;lt;root-host&amp;gt;/realms/cozy/broker/gitlab/endpoint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enable Confidential, api, read_api, read_user, openid, profile, email&lt;/li&gt;
&lt;li&gt;Copy and save Secret&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configure-keycloak-identity-provider"&gt;Configure Keycloak Identity Provider&lt;/h2&gt;
&lt;p&gt;Create a &lt;code&gt;KeycloakRealmIdentityProvider&lt;/code&gt; resource with the following configuration:&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;"&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;v1.edp.epam.com/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;KeycloakRealmIdentityProvider&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;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;gitlab&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;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;realmRef&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;keycloakrealm-cozy&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ClusterKeycloakRealm&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;alias&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;gitlab&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;authenticateByDefault&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;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;providerId&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;gitlab&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;config&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;clientId&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;YOUR GITLAB APP ID&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;clientSecret&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;YOUR GITLAB APP SECRET&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;syncMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;IMPORT&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;mappers&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;&lt;span style="color:#4070a0"&gt;&amp;#34;username&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;identityProviderMapper&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;oidc-username-idp-mapper&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;identityProviderAlias&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;gitlab&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;config&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;target&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;LOCAL&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;syncMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;INHERIT&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;template&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;${ALIAS}---${CLAIM.preferred_username}&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;</description></item><item><title>How to configure GitLab as an Identity Provider</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/identity_providers/gitlab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/identity_providers/gitlab/</guid><description>&lt;p&gt;You can use Gitlab identity provider for Keycloak&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;h2 id="create-application-in-gitlab"&gt;Create Application in Gitlab&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;https://gitlab.com/groups/&amp;lt;YOUR_GROUP&amp;gt;/-/settings/applications&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Add new application&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Name: cozy, Redirect URI: &lt;code&gt;https://keycloak.&amp;lt;root-host&amp;gt;/realms/cozy/broker/gitlab/endpoint&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Enable Confidential, api, read_api, read_user, openid, profile, email&lt;/li&gt;
&lt;li&gt;Copy and save Secret&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configure-keycloak-identity-provider"&gt;Configure Keycloak Identity Provider&lt;/h2&gt;
&lt;p&gt;Create a &lt;code&gt;KeycloakRealmIdentityProvider&lt;/code&gt; resource with the following configuration:&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;"&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;v1.edp.epam.com/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;KeycloakRealmIdentityProvider&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;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;gitlab&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;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;realmRef&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;keycloakrealm-cozy&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ClusterKeycloakRealm&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;alias&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;gitlab&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;authenticateByDefault&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;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;providerId&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;gitlab&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;config&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;clientId&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;YOUR GITLAB APP ID&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;clientSecret&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;YOUR GITLAB APP SECRET&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;syncMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;IMPORT&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;mappers&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;&lt;span style="color:#4070a0"&gt;&amp;#34;username&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;identityProviderMapper&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;oidc-username-idp-mapper&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;identityProviderAlias&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;gitlab&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;config&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;target&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;LOCAL&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;syncMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;INHERIT&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;template&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;${ALIAS}---${CLAIM.preferred_username}&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;</description></item><item><title>How to configure Google as an Identity Provider</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/identity_providers/google/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/identity_providers/google/</guid><description>&lt;h2 id="configure-google"&gt;Configure Google&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Head over to 
&lt;a href="https://console.cloud.google.com/apis/dashboard" target="_blank"&gt;Google Console&lt;/a&gt;, login in to the console using Google account and you will see Google Developer Console. Once logged in, head over the top left drop-down to create new project.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/1.jpeg" alt="1"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on &amp;ldquo;New Project&amp;rdquo; to proceed.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/2.jpeg" alt="2"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter the project name of your choice and select the Organisation if you have multiple organisations. Once done click on &amp;ldquo;Create&amp;rdquo;
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/3.jpeg" alt="3"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once the project is created you will get a pop-up suggesting to configure the consent screen. If not then head over to the Dashboard and head over to &amp;ldquo;Explore and enable APIs&amp;rdquo; options. Then Click on &amp;ldquo;Credentials&amp;rdquo; &amp;gt; &amp;ldquo;Configure Consent Screen&amp;rdquo; and head over to the next step.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/4.jpeg" alt="4"&gt;&lt;/p&gt;</description></item><item><title>How to configure Google as an Identity Provider</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/identity_providers/google/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/identity_providers/google/</guid><description>&lt;h2 id="configure-google"&gt;Configure Google&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Head over to 
&lt;a href="https://console.cloud.google.com/apis/dashboard" target="_blank"&gt;Google Console&lt;/a&gt;, login in to the console using Google account and you will see Google Developer Console. Once logged in, head over the top left drop-down to create new project.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/1.jpeg" alt="1"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on &amp;ldquo;New Project&amp;rdquo; to proceed.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/2.jpeg" alt="2"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter the project name of your choice and select the Organisation if you have multiple organisations. Once done click on &amp;ldquo;Create&amp;rdquo;
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/3.jpeg" alt="3"&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Once the project is created you will get a pop-up suggesting to configure the consent screen. If not then head over to the Dashboard and head over to &amp;ldquo;Explore and enable APIs&amp;rdquo; options. Then Click on &amp;ldquo;Credentials&amp;rdquo; &amp;gt; &amp;ldquo;Configure Consent Screen&amp;rdquo; and head over to the next step.
&lt;img src="https://deploy-preview-470--cozystack.netlify.app/img/oidc/identity_providers/google/4.jpeg" alt="4"&gt;&lt;/p&gt;</description></item><item><title>How to install Cozystack in Hetzner</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/providers/hetzner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/providers/hetzner/</guid><description>&lt;p&gt;This guide will help you to install Cozystack on a dedicated server from 
&lt;a href="https://www.hetzner.com/" target="_blank"&gt;Hetzner&lt;/a&gt;.
There are several steps to follow, including preparing the infrastructure, installing Talos Linux, configuring cloud-init, and bootstrapping the cluster.&lt;/p&gt;
&lt;h2 id="prepare-infrastructure-and-networking"&gt;Prepare Infrastructure and Networking&lt;/h2&gt;
&lt;p&gt;Installation on Hetzner includes the common 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/hardware-requirements/" target="_blank"&gt;hardware requirements&lt;/a&gt; with several additions.&lt;/p&gt;
&lt;h3 id="networking-options"&gt;Networking Options&lt;/h3&gt;
&lt;p&gt;There are two options for network connectivity between Cozystack nodes in the cluster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creating a subnet using vSwitch.&lt;/strong&gt;
This option is recommended for production environments.&lt;/p&gt;</description></item><item><title>How to install Cozystack in Hetzner</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/providers/hetzner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/providers/hetzner/</guid><description>&lt;p&gt;This guide will help you to install Cozystack on a dedicated server from 
&lt;a href="https://www.hetzner.com/" target="_blank"&gt;Hetzner&lt;/a&gt;.
There are several steps to follow, including preparing the infrastructure, installing Talos Linux, configuring cloud-init, and bootstrapping the cluster.&lt;/p&gt;
&lt;h2 id="prepare-infrastructure-and-networking"&gt;Prepare Infrastructure and Networking&lt;/h2&gt;
&lt;p&gt;Installation on Hetzner includes the common 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/hardware-requirements/" target="_blank"&gt;hardware requirements&lt;/a&gt; with several additions.&lt;/p&gt;
&lt;h3 id="networking-options"&gt;Networking Options&lt;/h3&gt;
&lt;p&gt;There are two options for network connectivity between Cozystack nodes in the cluster:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creating a subnet using vSwitch.&lt;/strong&gt;
This option is recommended for production environments.&lt;/p&gt;</description></item><item><title>Managed Kafka Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/kafka/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/kafka/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/kafka.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/kafka/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topics configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topic name.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].partitions&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of partitions.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].config&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topic configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="kafka-configuration"&gt;Kafka configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kafka configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of Kafka replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for Kafka.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the Kafka data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="zookeeper-configuration"&gt;ZooKeeper configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ZooKeeper configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ZooKeeper replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for ZooKeeper.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the ZooKeeper data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Using Cozystack as Kubernetes distribution</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/kubernetes-distribution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/use-cases/kubernetes-distribution/</guid><description>&lt;p&gt;You can use Cozystack as Kubernetes distribution for Bare Metal&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;We created Cozystack primarily for our own needs, having vast experience in building reliable systems on bare metal infrastructure. This experience led to the formation of a separate boxed product, which is aimed at standardizing and providing a ready-to-use tool for managing your infrastructure.&lt;/p&gt;
&lt;p&gt;Currently, Cozystack already solves a huge scope of infrastructure tasks: starting from provisioning bare-metal servers, having a ready monitoring system, fast and reliable storage, a network fabric with the possibility of interconnect with your infrastructure, the ability to run virtual machines, databases, and much more right out of the box.&lt;/p&gt;</description></item><item><title>LINSTOR DRBD Configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/drbd-tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/drbd-tuning/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains the configuration needed to use LINSTOR storage in a stretched (distributed) Cozystack cluster.&lt;/p&gt;
&lt;p&gt;DRBD (Distributed Replicated Block Device) is a kernel-level block device replication system that works over the network.
LINSTOR server manages DRBD volumes, including their creation, deletion, and orchestration across nodes.&lt;/p&gt;
&lt;h2 id="challenges-of-using-drbd"&gt;Challenges of using DRBD&lt;/h2&gt;
&lt;p&gt;DRBD only considers data as written once it reaches a quorum of nodes.
But as it presents itself as a block device to the end user, it must return an error within a given timeout if there are not enough nodes to establish a quorum.&lt;/p&gt;</description></item><item><title>LINSTOR DRBD Configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/drbd-tuning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/drbd-tuning/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains the configuration needed to use LINSTOR storage in a stretched (distributed) Cozystack cluster.&lt;/p&gt;
&lt;p&gt;DRBD (Distributed Replicated Block Device) is a kernel-level block device replication system that works over the network.
LINSTOR server manages DRBD volumes, including their creation, deletion, and orchestration across nodes.&lt;/p&gt;
&lt;h2 id="challenges-of-using-drbd"&gt;Challenges of using DRBD&lt;/h2&gt;
&lt;p&gt;DRBD only considers data as written once it reaches a quorum of nodes.
But as it presents itself as a block device to the end user, it must return an error within a given timeout if there are not enough nodes to establish a quorum.&lt;/p&gt;</description></item><item><title>Talos Linux in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/guides/talos/</guid><description>&lt;h2 id="why-cozystack-is-using-talos-linux"&gt;Why Cozystack is Using Talos Linux&lt;/h2&gt;
&lt;p&gt;Talos Linux is a Linux distribution made and optimized for one job: to run Kubernetes.
It is the foundation of reliability and security in Cozystack cluster.
Selecting it enables Cozystack to strictly limit the technology stack and make the system stable as a rock.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see why Cozystack developers chose Talos as the foundation of a Kubernetes cluster and what it brings to Cozystack.&lt;/p&gt;</description></item><item><title>Talos Linux in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/talos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/talos/</guid><description>&lt;h2 id="why-cozystack-is-using-talos-linux"&gt;Why Cozystack is Using Talos Linux&lt;/h2&gt;
&lt;p&gt;Talos Linux is a Linux distribution made and optimized for one job: to run Kubernetes.
It is the foundation of reliability and security in Cozystack cluster.
Selecting it enables Cozystack to strictly limit the technology stack and make the system stable as a rock.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see why Cozystack developers chose Talos as the foundation of a Kubernetes cluster and what it brings to Cozystack.&lt;/p&gt;</description></item><item><title>Managed TCP Load Balancer Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/tcp-balancer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/tcp-balancer/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/networking/_include/tcp-balancer.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/tcp-balancer/README.md
--&gt;
&lt;p&gt;The Managed TCP Load Balancer Service simplifies the deployment and management of load balancers. It efficiently distributes incoming TCP traffic across multiple backend servers, ensuring high availability and optimal resource utilization.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;Managed TCP Load Balancer Service efficiently utilizes HAProxy for load balancing purposes. HAProxy is a well-established and reliable solution for distributing incoming TCP traffic across multiple backend servers, ensuring high availability and efficient resource utilization. This deployment choice guarantees the seamless and dependable operation of your load balancing infrastructure.&lt;/p&gt;</description></item><item><title>Managed TCP Load Balancer Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/tcp-balancer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/tcp-balancer/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/networking/_include/tcp-balancer.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/tcp-balancer/README.md
--&gt;
&lt;p&gt;The Managed TCP Load Balancer Service simplifies the deployment and management of load balancers. It efficiently distributes incoming TCP traffic across multiple backend servers, ensuring high availability and optimal resource utilization.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;Managed TCP Load Balancer Service efficiently utilizes HAProxy for load balancing purposes. HAProxy is a well-established and reliable solution for distributing incoming TCP traffic across multiple backend servers, ensuring high availability and efficient resource utilization. This deployment choice guarantees the seamless and dependable operation of your load balancing infrastructure.&lt;/p&gt;</description></item><item><title>Using NFS shares with Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/nfs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/nfs/</guid><description>&lt;h2 id="enable-nfs-driver"&gt;Enable NFS driver&lt;/h2&gt;
&lt;p&gt;Add &lt;code&gt;bundle-enable: nfs-driver&lt;/code&gt; to your Cozystack configuration:&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;"&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;bundle-enable&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;nfs-driver&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;Wait a minute for the platform chart to reconcile, then verify the HelmRelease has been created:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get helmrelease --namespace cozy-nfs-driver nfs-driver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="export-share"&gt;Export share&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install nfs-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir /data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#40a070"&gt;777&lt;/span&gt; /data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;echo&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;/data *(rw,sync,no_subtree_check)&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /etc/exports
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exportfs -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="configure-connection"&gt;Configure connection&lt;/h2&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;storage.k8s.io/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;StorageClass&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;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;nfs&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;provisioner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;nfs.csi.k8s.io&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;parameters&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;server&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;10.244.57.210&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;share&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/data&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;reclaimPolicy&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Delete&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;volumeBindingMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Immediate&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;allowVolumeExpansion&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;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;mountOptions&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;- nfsvers=4.1&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="order-volume"&gt;Order volume&lt;/h2&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;PersistentVolumeClaim&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;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;task-pv-claim&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;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;storageClassName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;nfs&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;accessModes&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;- ReadWriteMany&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;resources&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;requests&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;3Gi&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Using NFS shares with Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/nfs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/nfs/</guid><description>&lt;h2 id="enable-nfs-driver"&gt;Enable NFS driver&lt;/h2&gt;
&lt;p&gt;Add &lt;code&gt;nfs-driver&lt;/code&gt; to &lt;code&gt;bundles.enabledPackages&lt;/code&gt; in the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/platform-package/" target="_blank"&gt;Platform Package&lt;/a&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl patch packages.cozystack.io cozystack.cozystack-platform --type&lt;span style="color:#666"&gt;=&lt;/span&gt;json &lt;span style="color:#4070a0;font-weight:bold"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-weight:bold"&gt;&lt;/span&gt; -p &lt;span style="color:#4070a0"&gt;&amp;#39;[{&amp;#34;op&amp;#34;: &amp;#34;add&amp;#34;, &amp;#34;path&amp;#34;: &amp;#34;/spec/components/platform/values/bundles/enabledPackages/-&amp;#34;, &amp;#34;value&amp;#34;: &amp;#34;nfs-driver&amp;#34;}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Wait a minute for the platform chart to reconcile, then verify the HelmRelease has been created:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get helmrelease --namespace cozy-nfs-driver nfs-driver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="export-share"&gt;Export share&lt;/h2&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;apt install nfs-server
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir /data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod &lt;span style="color:#40a070"&gt;777&lt;/span&gt; /data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#007020"&gt;echo&lt;/span&gt; &lt;span style="color:#4070a0"&gt;&amp;#39;/data *(rw,sync,no_subtree_check)&amp;#39;&lt;/span&gt; &amp;gt;&amp;gt; /etc/exports
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;exportfs -a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="configure-connection"&gt;Configure connection&lt;/h2&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;storage.k8s.io/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;StorageClass&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;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;nfs&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;provisioner&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;nfs.csi.k8s.io&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;parameters&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;server&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;10.244.57.210&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;share&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;/data&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;reclaimPolicy&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Delete&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;volumeBindingMode&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;Immediate&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;allowVolumeExpansion&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;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;mountOptions&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;- nfsvers=4.1&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="order-volume"&gt;Order volume&lt;/h2&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;PersistentVolumeClaim&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;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;task-pv-claim&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;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;storageClassName&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;nfs&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;accessModes&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;- ReadWriteMany&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;resources&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;requests&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;3Gi&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Velero Backup Configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/velero-backup-configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/velero-backup-configuration/</guid><description>&lt;p&gt;This guide is for &lt;strong&gt;cluster administrators&lt;/strong&gt; who configure the backup infrastructure in Cozystack: S3 storage, Velero locations, backup &lt;strong&gt;strategies&lt;/strong&gt;, and &lt;strong&gt;BackupClasses&lt;/strong&gt;. Tenant users then use existing BackupClasses to create 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/backup-and-recovery/" target="_blank"&gt;BackupJobs and Plans&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Administrator access to the Cozystack (management) cluster.&lt;/li&gt;
&lt;li&gt;S3-compatible storage: if you want to store backups in Cozy you need enable SeaweedFS and create a Bucket or can use another external S3 service.&lt;/li&gt;
&lt;li&gt;Enable disabled by default component &lt;code&gt;cozystack.velero&lt;/code&gt; in &lt;code&gt;bundles.enabledPackages&lt;/code&gt; of the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/platform-package/" target="_blank"&gt;Platform Package&lt;/a&gt;. And for &lt;strong&gt;tenant clusters&lt;/strong&gt;, set &lt;code&gt;spec.addons.velero.enabled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; in the &lt;code&gt;Kubernetes&lt;/code&gt; resource.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-set-up-storage-credentials-and-configuration"&gt;1. Set up storage credentials and configuration&lt;/h2&gt;
&lt;p&gt;Create the following resources in the &lt;strong&gt;management cluster&lt;/strong&gt; in the &lt;code&gt;cozy-velero&lt;/code&gt; namespace so that Velero can store backups and volume snapshots.&lt;/p&gt;</description></item><item><title>Virtual Machine (simple)</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/virtual-machine/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/virtual-machine/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/virtualization/_include/virtual-machine.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/virtual-machine/README.md
--&gt;
&lt;p&gt;A Virtual Machine (VM) simulates computer hardware, enabling various operating systems and applications to run in an isolated environment.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The virtual machine is managed and hosted through KubeVirt, allowing you to harness the benefits of virtualization within your Kubernetes ecosystem.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://kubevirt.io/user-guide/" target="_blank"&gt;KubeVirt User Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: 
&lt;a href="https://github.com/kubevirt/kubevirt" target="_blank"&gt;KubeVirt Repository&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="accessing-virtual-machine"&gt;Accessing virtual machine&lt;/h2&gt;
&lt;p&gt;You can access the virtual machine using the virtctl tool:&lt;/p&gt;</description></item><item><title>Creating and Using Named VM Images</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/vm-image/</guid><description>&lt;!--
https://app.read.ai/analytics/meetings/01K0BTTJ1VMJHJ6A5FVV81A3PD
--&gt;
&lt;p&gt;Golden images in Cozystack allow administrators to prepare &lt;strong&gt;named operating system images&lt;/strong&gt; that users can later reuse when creating virtual machines.&lt;br&gt;
This guide explains the benefits of golden images, how to create them, and how to use them when deploying VMs.&lt;/p&gt;
&lt;p&gt;By default, every time a user creates a virtual machine, Cozystack downloads the required image from its source URL.&lt;br&gt;
This can become a bottleneck when multiple VMs are created in quick succession.&lt;br&gt;
Golden images solve this problem by caching the image locally, eliminating repeated downloads and speeding up deployment.&lt;/p&gt;</description></item><item><title>Creating and Using Named VM Images</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/vm-image/</guid><description>&lt;!--
https://app.read.ai/analytics/meetings/01K0BTTJ1VMJHJ6A5FVV81A3PD
--&gt;
&lt;p&gt;Golden images in Cozystack allow administrators to prepare &lt;strong&gt;named operating system images&lt;/strong&gt; that users can later reuse when creating virtual machines.&lt;br&gt;
This guide explains the benefits of golden images, how to create them, and how to use them when deploying VMs.&lt;/p&gt;
&lt;p&gt;By default, every time a user creates a virtual machine, Cozystack downloads the required image from its source URL.&lt;br&gt;
This can become a bottleneck when multiple VMs are created in quick succession.&lt;br&gt;
Golden images solve this problem by caching the image locally, eliminating repeated downloads and speeding up deployment.&lt;/p&gt;</description></item><item><title>Monitoring Alerting</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/alerting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/monitoring/alerting/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The alerting system in Cozystack integrates Prometheus, Alertmanager, and Alerta to provide comprehensive monitoring and notification capabilities. Alerts are generated based on metrics collected by VMAgent and stored in VMCluster, then routed through Alertmanager for grouping and deduplication, and finally managed by Alerta for notifications via various channels like Telegram and Slack.&lt;/p&gt;
&lt;h3 id="alerting-flow"&gt;Alerting Flow&lt;/h3&gt;
&lt;pre class="mermaid"&gt;sequenceDiagram
 participant P as Prometheus
 participant AM as Alertmanager
 participant A as Alerta
 participant T as Telegram
 participant S as Slack
 P-&amp;gt;&amp;gt;AM: Send Alert
 AM-&amp;gt;&amp;gt;A: Forward Alert
 A-&amp;gt;&amp;gt;T: Send Notification
 A-&amp;gt;&amp;gt;S: Send Notification&lt;/pre&gt;
&lt;h2 id="configuring-alerts-in-alerta"&gt;Configuring Alerts in Alerta&lt;/h2&gt;
&lt;p&gt;Alerta is the alerting system integrated into Cozystack&amp;rsquo;s monitoring stack. It processes alerts from various sources and provides notifications through multiple channels.&lt;/p&gt;</description></item><item><title>Monitoring Alerting</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/alerting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/monitoring/alerting/</guid><description>&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;The alerting system in Cozystack integrates Prometheus, Alertmanager, and Alerta to provide comprehensive monitoring and notification capabilities. Alerts are generated based on metrics collected by VMAgent and stored in VMCluster, then routed through Alertmanager for grouping and deduplication, and finally managed by Alerta for notifications via various channels like Telegram and Slack.&lt;/p&gt;
&lt;h3 id="alerting-flow"&gt;Alerting Flow&lt;/h3&gt;
&lt;pre class="mermaid"&gt;sequenceDiagram
 participant P as Prometheus
 participant AM as Alertmanager
 participant A as Alerta
 participant T as Telegram
 participant S as Slack
 P-&amp;gt;&amp;gt;AM: Send Alert
 AM-&amp;gt;&amp;gt;A: Forward Alert
 A-&amp;gt;&amp;gt;T: Send Notification
 A-&amp;gt;&amp;gt;S: Send Notification&lt;/pre&gt;
&lt;h2 id="configuring-alerts-in-alerta"&gt;Configuring Alerts in Alerta&lt;/h2&gt;
&lt;p&gt;Alerta is the alerting system integrated into Cozystack&amp;rsquo;s monitoring stack. It processes alerts from various sources and provides notifications through multiple channels.&lt;/p&gt;</description></item><item><title>Enable OIDC Server</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/enable_oidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/enable_oidc/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OIDC Configuration&lt;/strong&gt;
Your API server must be configured to use OIDC. If you are using Talos Linux, your machine configuration should include the following parameters:&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;"&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;cluster&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;apiServer&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;extraArgs&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;oidc-issuer-url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.example.org/realms/cozy&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;oidc-client-id&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;kubernetes&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;oidc-username-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;preferred_username&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;oidc-groups-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;groups&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;strong&gt;For Talm&lt;/strong&gt;
Add to your &lt;code&gt;values.yaml&lt;/code&gt; in talm repo:&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;"&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;oidcIssuerUrl&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.&amp;lt;YOUR_ROOT_DOMAIN&amp;gt;/realms/cozy&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;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Domain Reachability&lt;/strong&gt;
Ensure that the domain &lt;code&gt;keycloak.example.org&lt;/code&gt; is accessible from the cluster and resolves to your root ingress controller.&lt;/p&gt;</description></item><item><title>Enable OIDC Server</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/enable_oidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/enable_oidc/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OIDC Configuration&lt;/strong&gt;
Your API server must be configured to use OIDC. If you are using Talos Linux, your machine configuration should include the following parameters:&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;"&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;cluster&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;apiServer&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;extraArgs&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;oidc-issuer-url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.example.org/realms/cozy&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;oidc-client-id&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;kubernetes&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;oidc-username-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;preferred_username&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;oidc-groups-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;groups&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;strong&gt;For Talm&lt;/strong&gt;
Add to your &lt;code&gt;values.yaml&lt;/code&gt; in talm repo:&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;"&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;oidcIssuerUrl&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.&amp;lt;YOUR_ROOT_DOMAIN&amp;gt;/realms/cozy&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;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Domain Reachability&lt;/strong&gt;
Ensure that the domain &lt;code&gt;keycloak.example.org&lt;/code&gt; is accessible from the cluster and resolves to your root ingress controller.&lt;/p&gt;</description></item><item><title>4. Create a User Tenant and Configure Access</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/create-tenant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/create-tenant/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;At this step of the tutorial, you will create a user tenant — a space for users to deploy applications and VMs.
You will also get tenant credentials and log in as a user with access to this tenant.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Complete the previous steps of the tutorial to get
a 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-cozystack/" target="_blank"&gt;Cozystack cluster&lt;/a&gt; running,
with storage, networking, and management dashboard configured.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure you can access the dashboard, as described in the

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/install-cozystack/" target="_blank"&gt;previous step of the tutorial&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>4. Create a User Tenant and Configure Access</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/create-tenant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/create-tenant/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;At this step of the tutorial, you will create a user tenant — a space for users to deploy applications and VMs.
You will also get tenant credentials and log in as a user with access to this tenant.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Complete the previous steps of the tutorial to get
a 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-cozystack/" target="_blank"&gt;Cozystack cluster&lt;/a&gt; running,
with storage, networking, and management dashboard configured.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure you can access the dashboard, as described in the

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/install-cozystack/" target="_blank"&gt;previous step of the tutorial&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Backup and Recovery</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/kubernetes/backup-and-recovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/kubernetes/backup-and-recovery/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;


 &amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Warning&lt;/strong&gt;: Backup and restore functionality is currently under development and will be exposed via user‑friendly API interfaces in future releases.
The instructions below require manual configuration and are recommended for advanced users only.

&lt;/div&gt;

&lt;p&gt;Cozystack uses 
&lt;a href="https://velero.io/docs/v1.17/" target="_blank"&gt;Velero&lt;/a&gt; to manage Kubernetes resource backups and restores, including volume snapshots.
This guide explains how to configure one‑off and scheduled backups and how to perform restores, with practical examples.&lt;/p&gt;
&lt;p&gt;The Velero add‑on is disabled by default. To enable it:&lt;/p&gt;</description></item><item><title>Backup and Recovery</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/backup-and-recovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/backup-and-recovery/</guid><description>&lt;p&gt;Cluster backup &lt;strong&gt;strategies&lt;/strong&gt; and &lt;strong&gt;BackupClasses&lt;/strong&gt; are configured by cluster administrators. If your tenant does not have a BackupClass yet, ask your administrator to follow the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/velero-backup-configuration/" target="_blank"&gt;Velero Backup Configuration&lt;/a&gt; guide to set up storage, strategies, and BackupClasses.&lt;/p&gt;
&lt;p&gt;This guide covers backing up and restoring &lt;strong&gt;VMInstance&lt;/strong&gt; and &lt;strong&gt;VMDisk&lt;/strong&gt; resources as a tenant user: running one-off and scheduled backups, checking backup status, and restoring from a backup using RestoreJobs.&lt;/p&gt;
&lt;p&gt;Cozystack uses 
&lt;a href="https://velero.io/docs/v1.17/" target="_blank"&gt;Velero&lt;/a&gt; under the hood for backup storage and volume snapshots.&lt;/p&gt;</description></item><item><title>Cloneable Virtual Machines</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/cloneable-vms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/cloneable-vms/</guid><description>&lt;p&gt;To create a cloneable VM, you will need to create a &lt;code&gt;VMDisk&lt;/code&gt; and a &lt;code&gt;VMInstance&lt;/code&gt;. This guide uses an &lt;code&gt;ubuntu&lt;/code&gt; base image
as an example.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create VMDisk&lt;/strong&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;"&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;apps.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:#bbb"&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;VMDisk&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;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;ubuntu-source&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;tenant-root&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;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;optical&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;source&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;http&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;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;20Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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;div class="alert alert-info" role="alert"&gt;


 Since expanding a disk can be complicated, we recommend creating it with extra space to accommodate future growth.

&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create VMInstance&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Cloneable Virtual Machines</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/cloneable-vms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/cloneable-vms/</guid><description>&lt;p&gt;To create a cloneable VM, you will need to create a &lt;code&gt;VMDisk&lt;/code&gt; and a &lt;code&gt;VMInstance&lt;/code&gt;. This guide uses an &lt;code&gt;ubuntu&lt;/code&gt; base image
as an example.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create VMDisk&lt;/strong&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;"&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;apps.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:#bbb"&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;VMDisk&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;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;ubuntu-source&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;tenant-root&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;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;optical&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;source&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;http&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;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;20Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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;div class="alert alert-info" role="alert"&gt;


 Since expanding a disk can be complicated, we recommend creating it with extra space to accommodate future growth.

&lt;/div&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create VMInstance&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Configuring a Dedicated Network for Distributed Storage with LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/linstor-dedicated-network/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/linstor-dedicated-network/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains how to improve storage reliability and performance in distributed Cozystack clusters.&lt;/p&gt;
&lt;p&gt;In hyper-converged clusters, it’s common to dedicate a network to storage traffic.
However, it’s not always possible to provision separate storage links between datacenters.&lt;/p&gt;
&lt;p&gt;If you lack dedicated inter-datacenter links for storage, you have two options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make storage nodes in each datacenter isolated,&lt;/li&gt;
&lt;li&gt;make storage traffic share the existing uplinks with other workloads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This guide shows how to configure LINSTOR to use a dedicated network for storage traffic within each datacenter,
while falling back to shared links between datacenters when needed.&lt;/p&gt;</description></item><item><title>Configuring a Dedicated Network for Distributed Storage with LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/linstor-dedicated-network/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/linstor-dedicated-network/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This guide explains how to improve storage reliability and performance in distributed Cozystack clusters.&lt;/p&gt;
&lt;p&gt;In hyper-converged clusters, it’s common to dedicate a network to storage traffic.
However, it’s not always possible to provision separate storage links between datacenters.&lt;/p&gt;
&lt;p&gt;If you lack dedicated inter-datacenter links for storage, you have two options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;make storage nodes in each datacenter isolated,&lt;/li&gt;
&lt;li&gt;make storage traffic share the existing uplinks with other workloads.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This guide shows how to configure LINSTOR to use a dedicated network for storage traffic within each datacenter,
while falling back to shared links between datacenters when needed.&lt;/p&gt;</description></item><item><title>Running VMs with GPU Passthrough</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/gpu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/gpu/</guid><description>&lt;p&gt;This section demonstrates how to deploy virtual machines (VMs) with GPU passthrough using Cozystack.
First, we’ll deploy the GPU Operator to configure the worker node for GPU passthrough
Then we will deploy a 
&lt;a href="https://kubevirt.io/" target="_blank"&gt;KubeVirt&lt;/a&gt; VM that requests a GPU.&lt;/p&gt;
&lt;p&gt;By default, to provision a GPU Passthrough, the GPU Operator will deploy the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VFIO Manager&lt;/strong&gt; to bind &lt;code&gt;vfio-pci&lt;/code&gt; driver to all GPUs on the node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox Device Plugin&lt;/strong&gt; to discover and advertise the passthrough GPUs to kubelet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox Validator&lt;/strong&gt; to validate the other operands.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Cozystack cluster with at least one GPU-enabled node.&lt;/li&gt;
&lt;li&gt;kubectl installed and cluster access credentials configured.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-install-the-gpu-operator"&gt;1. Install the GPU Operator&lt;/h2&gt;
&lt;p&gt;Follow these steps:&lt;/p&gt;</description></item><item><title>Running VMs with GPU Passthrough</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/gpu/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/gpu/</guid><description>&lt;p&gt;This section demonstrates how to deploy virtual machines (VMs) with GPU passthrough using Cozystack.
First, we’ll deploy the GPU Operator to configure the worker node for GPU passthrough
Then we will deploy a 
&lt;a href="https://kubevirt.io/" target="_blank"&gt;KubeVirt&lt;/a&gt; VM that requests a GPU.&lt;/p&gt;
&lt;p&gt;By default, to provision a GPU Passthrough, the GPU Operator will deploy the following components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VFIO Manager&lt;/strong&gt; to bind &lt;code&gt;vfio-pci&lt;/code&gt; driver to all GPUs on the node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox Device Plugin&lt;/strong&gt; to discover and advertise the passthrough GPUs to kubelet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sandbox Validator&lt;/strong&gt; to validate the other operands.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A Cozystack cluster with at least one GPU-enabled node.&lt;/li&gt;
&lt;li&gt;kubectl installed and cluster access credentials configured.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="1-install-the-gpu-operator"&gt;1. Install the GPU Operator&lt;/h2&gt;
&lt;p&gt;Follow these steps:&lt;/p&gt;</description></item><item><title>Managed MariaDB Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/mysql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/mysql/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/mysql.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/mysql/README.md
--&gt;
&lt;p&gt;The Managed MariaDB Service offers a powerful and widely used relational database solution.
This service allows you to create and manage a replicated MariaDB cluster seamlessly.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by mariadb-operator, ensuring efficient management and seamless operation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://mariadb.com/kb/en/documentation/" target="_blank"&gt;https://mariadb.com/kb/en/documentation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: 
&lt;a href="https://github.com/mariadb-operator/mariadb-operator" target="_blank"&gt;https://github.com/mariadb-operator/mariadb-operator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="howtos"&gt;HowTos&lt;/h2&gt;
&lt;h3 id="how-to-switch-masterslave-replica"&gt;How to switch master/slave replica&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl edit mariadb &amp;lt;instance&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;update:&lt;/p&gt;</description></item><item><title>Troubleshooting Kubernetes Installation</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/troubleshooting/</guid><description>&lt;p&gt;This page has instructions for resolving typical problems that can occur when installing Kubernetes with &lt;code&gt;talm&lt;/code&gt;, &lt;code&gt;talos-bootstrap&lt;/code&gt;, or &lt;code&gt;talosctl&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="no-talos-nodes-in-maintenance-mode-found"&gt;No Talos nodes in maintenance mode found!&lt;/h2&gt;
&lt;p&gt;If you encounter issues with the &lt;code&gt;talos-bootstrap&lt;/code&gt; script not detecting any nodes, follow these steps to diagnose and resolve the issue:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Verify Network Segment&lt;/p&gt;
&lt;p&gt;Ensure that you are running the script within the same network segment as the nodes. This is crucial for the script to be able to communicate with the nodes.&lt;/p&gt;</description></item><item><title>Troubleshooting Kubernetes Installation</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/troubleshooting/</guid><description>&lt;p&gt;This page has instructions for resolving typical problems that can occur when installing Kubernetes with &lt;code&gt;talm&lt;/code&gt;, &lt;code&gt;talos-bootstrap&lt;/code&gt;, or &lt;code&gt;talosctl&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="no-talos-nodes-in-maintenance-mode-found"&gt;No Talos nodes in maintenance mode found!&lt;/h2&gt;
&lt;p&gt;If you encounter issues with the &lt;code&gt;talos-bootstrap&lt;/code&gt; script not detecting any nodes, follow these steps to diagnose and resolve the issue:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Verify Network Segment&lt;/p&gt;
&lt;p&gt;Ensure that you are running the script within the same network segment as the nodes. This is crucial for the script to be able to communicate with the nodes.&lt;/p&gt;</description></item><item><title>Virtual Routers</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/virtual-router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/networking/virtual-router/</guid><description>&lt;p&gt;Starting with version 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v0.27.0" target="_blank"&gt;v0.27.0&lt;/a&gt;,
Cozystack can deploy virtual routers (also known as &amp;ldquo;router appliances&amp;rdquo; or &amp;ldquo;middlebox appliances&amp;rdquo;).
This feature allows you to create a virtual router based on a virtual machine instance.
The virtual router can route traffic between different networks.&lt;/p&gt;
&lt;h2 id="creating-a-virtual-router"&gt;Creating a Virtual Router&lt;/h2&gt;
&lt;p&gt;Creating a virtual router requires a Cozystack administrator account.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a VM Instance&lt;/strong&gt;&lt;br/&gt;
Use the standard &lt;code&gt;vm-instance&lt;/code&gt; and &lt;code&gt;virtual-machine&lt;/code&gt; packages to create a virtual machine instance.&lt;/p&gt;</description></item><item><title>Virtual Routers</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/virtual-router/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/networking/virtual-router/</guid><description>&lt;p&gt;Starting with version 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v0.27.0" target="_blank"&gt;v0.27.0&lt;/a&gt;,
Cozystack can deploy virtual routers (also known as &amp;ldquo;router appliances&amp;rdquo; or &amp;ldquo;middlebox appliances&amp;rdquo;).
This feature allows you to create a virtual router based on a virtual machine instance.
The virtual router can route traffic between different networks.&lt;/p&gt;
&lt;h2 id="creating-a-virtual-router"&gt;Creating a Virtual Router&lt;/h2&gt;
&lt;p&gt;Creating a virtual router requires a Cozystack administrator account.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create a VM Instance&lt;/strong&gt;&lt;br/&gt;
Use the standard &lt;code&gt;vm-instance&lt;/code&gt; and &lt;code&gt;virtual-machine&lt;/code&gt; packages to create a virtual machine instance.&lt;/p&gt;</description></item><item><title>Automated Installation with Ansible</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/ansible/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/ansible/</guid><description>&lt;p&gt;The 
&lt;a href="https://github.com/cozystack/ansible-cozystack" target="_blank"&gt;&lt;code&gt;cozystack.installer&lt;/code&gt;&lt;/a&gt; Ansible collection automates the full deployment pipeline: OS preparation, k3s cluster bootstrap, and Cozystack installation. It is suited for deploying Cozystack on bare-metal servers or VMs running a standard Linux distribution.&lt;/p&gt;
&lt;h2 id="when-to-use-ansible"&gt;When to Use Ansible&lt;/h2&gt;
&lt;p&gt;Consider this approach when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You want a fully automated, repeatable deployment from bare OS to a running Cozystack&lt;/li&gt;
&lt;li&gt;You are deploying on generic Linux (Ubuntu, Debian, RHEL, Rocky, openSUSE) rather than Talos Linux&lt;/li&gt;
&lt;li&gt;You want to manage multiple nodes with a single inventory file&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For manual installation steps without Ansible, see the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/generic/" target="_blank"&gt;Generic Kubernetes&lt;/a&gt; guide.&lt;/p&gt;</description></item><item><title>Support</title><link>https://deploy-preview-470--cozystack.netlify.app/support/</link><pubDate>Sun, 02 Mar 2025 15:45:07 +0400</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/support/</guid><description>&lt;h2 id="these-companies-provide-enterprise-support-for-cozystack"&gt;These companies provide enterprise support for Cozystack.&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Organization&lt;/th&gt;
 &lt;th&gt;Contact&lt;/th&gt;
 &lt;th&gt;Description of Use&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;img src="https://deploy-preview-470--cozystack.netlify.app/img/logo.png" alt="[drawing](https://aenix.io/contact/)" width="200"/&gt;&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://aenix.io/contact/" target="_blank"&gt;Site&lt;/a&gt; 
&lt;a href="https://www.linkedin.com/company/aenix-io" target="_blank"&gt;LinkedIn&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;We provide all types of assistance, including consultations, development of missing features, design, assistance with installation, and integration.&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;img src="https://hikube.cloud/hs-fs/hubfs/image%20-%202025-07-23T133743.819.png" alt="Hidora" width="200"/&gt;&lt;/td&gt;
 &lt;td&gt;
&lt;a href="https://hidora.io/en/contact/" target="_blank"&gt;Site&lt;/a&gt; 
&lt;a href="https://www.linkedin.com/company/hidora" target="_blank"&gt;LinkedIn&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;We handle installation, provide ongoing support, and offer 24/7 managed services.&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>5. Deploy Managed Applications, VMs, and tenant Kubernetes cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/deploy-app/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/getting-started/deploy-app/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;This guide will walk you through setting up the environment needed to run a typical web application with common service
dependencies—PostgreSQL and Redis—on Cozystack, a Kubernetes-based PaaS framework.&lt;/p&gt;
&lt;p&gt;You’ll learn how to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deploy managed applications in your tenant: a PostgreSQL database and Redis cache.&lt;/li&gt;
&lt;li&gt;Create a managed Kubernetes cluster, configure DNS, and access the cluster.&lt;/li&gt;
&lt;li&gt;Deploy a containerized application to the new cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You don’t need in-depth Kubernetes knowledge to complete this tutorial—most steps are done through the Cozystack web interface.&lt;/p&gt;</description></item><item><title>5. Deploy Managed Applications, VMs, and tenant Kubernetes cluster</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/deploy-app/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/getting-started/deploy-app/</guid><description>&lt;h2 id="objectives"&gt;Objectives&lt;/h2&gt;
&lt;p&gt;This guide will walk you through setting up the environment needed to run a typical web application with common service
dependencies—PostgreSQL and Redis—on Cozystack, a Kubernetes-based PaaS framework.&lt;/p&gt;
&lt;p&gt;You’ll learn how to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Deploy managed applications in your tenant: a PostgreSQL database and Redis cache.&lt;/li&gt;
&lt;li&gt;Create a managed Kubernetes cluster, configure DNS, and access the cluster.&lt;/li&gt;
&lt;li&gt;Deploy a containerized application to the new cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You don’t need in-depth Kubernetes knowledge to complete this tutorial—most steps are done through the Cozystack web interface.&lt;/p&gt;</description></item><item><title>Managed ClickHouse Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/clickhouse/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/clickhouse/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/clickhouse.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/clickhouse/README.md
--&gt;
&lt;p&gt;ClickHouse is an open source high-performance and column-oriented SQL database management system (DBMS).
It is used for online analytical processing (OLAP).&lt;/p&gt;
&lt;h3 id="how-to-restore-backup-from-s3"&gt;How to restore backup from S3&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Find the snapshot:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r s3:s3.example.org/clickhouse-backups/table_name snapshots
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Restore it:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;restic -r s3:s3.example.org/clickhouse-backups/table_name restore latest --target /tmp/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more details, read 
&lt;a href="https://blog.aenix.io/restic-effective-backup-from-stdin-4bc1e8f083c1" target="_blank"&gt;Restic: Effective Backup from Stdin&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ClickHouse replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;shards&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ClickHouse shards.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each ClickHouse replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size available for application data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logStorageSize&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Size of Persistent Volume for logs.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;logTTL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;TTL (expiration time) for &lt;code&gt;query_log&lt;/code&gt; and &lt;code&gt;query_thread_log&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Users configuration map.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for the user.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].readonly&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;User is readonly (default: false).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="backup-parameters"&gt;Backup parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Backup configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable regular backups (default: false).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3Region&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;AWS S3 region where backups are stored.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;us-east-1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3Bucket&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;S3 bucket used for storing backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;s3.example.org/clickhouse-backups&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.schedule&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Cron schedule for automated backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0 2 * * *&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.cleanupStrategy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Retention strategy for cleaning up old backups.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--keep-last=3 --keep-daily=3 --keep-within-weekly=1m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3AccessKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Access key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-access-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.s3SecretKey&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secret key for S3 authentication.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;your-secret-key&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;backup.resticPassword&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for Restic backup encryption.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;lt;password&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="clickhouse-keeper-parameters"&gt;ClickHouse Keeper parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ClickHouse Keeper configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Deploy ClickHouse Keeper for cluster coordination.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size available for application data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clickhouseKeeper.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of Keeper replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>FoundationDB</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/foundationdb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/foundationdb/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/foundationdb.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/foundationdb/README.md
--&gt;
&lt;p&gt;A managed FoundationDB service for Cozystack.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations.&lt;/p&gt;
&lt;p&gt;This package provides a managed FoundationDB cluster deployment using the FoundationDB Kubernetes Operator.&lt;/p&gt;
&lt;h2 id="features"&gt;Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;High Availability&lt;/strong&gt;: Multi-instance deployment with automatic failover&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ACID Transactions&lt;/strong&gt;: Full ACID transaction support across the cluster&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalable&lt;/strong&gt;: Easily scale storage and compute resources&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backup Integration&lt;/strong&gt;: Optional S3-compatible backup storage&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitoring&lt;/strong&gt;: Built-in monitoring and alerting through WorkloadMonitor&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flexible Configuration&lt;/strong&gt;: Support for custom FoundationDB parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;h3 id="basic-configuration"&gt;Basic Configuration&lt;/h3&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Cluster process configuration&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;cluster&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;version&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;7.3.63&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;processCounts&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;3&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Number of storage processes (determines cluster size)&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;stateless&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;-&lt;span style="color:#40a070"&gt;1&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Automatically calculated&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;cluster_controller&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;1&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;faultDomain&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;key&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;kubernetes.io/hostname&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;valueFrom&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;spec.nodeName&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;h3 id="storage"&gt;Storage&lt;/h3&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;"&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;storage&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;size&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;16Gi&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Storage size per instance&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;storageClass&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 style="color:#60a0b0;font-style:italic"&gt;# Storage class (optional)&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="resources"&gt;Resources&lt;/h3&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Use preset sizing&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;resourcesPreset&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;medium&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# small, medium, large, xlarge, 2xlarge&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&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;# Or custom resource configuration&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;resources&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;cpu&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;2000m&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;memory&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;4Gi&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;h3 id="backup-optional"&gt;Backup (Optional)&lt;/h3&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;"&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;backup&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;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;s3&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;bucket&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;my-fdb-backups&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;endpoint&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://s3.amazonaws.com&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;region&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;us-east-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;credentials&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;accessKeyId&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;AKIA...&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;secretAccessKey&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;retentionPolicy&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;7d&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;h3 id="advanced-configuration"&gt;Advanced Configuration&lt;/h3&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Custom FoundationDB parameters&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;customParameters&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:#4070a0"&gt;&amp;#34;knob_disable_posix_kernel_aio=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&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;# Image type (unified is default and recommended for new deployments)&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;imageType&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;unified&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&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;# Enable automatic pod replacements&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;automaticReplacements&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;span style="display:flex;"&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:#60a0b0;font-style:italic"&gt;# Security context configuration&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;securityContext&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;runAsUser&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;4059&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;runAsGroup&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;4059&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="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;FoundationDB Operator must be installed in the cluster&lt;/li&gt;
&lt;li&gt;Sufficient storage and compute resources&lt;/li&gt;
&lt;li&gt;For backups: S3-compatible storage credentials&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deployment"&gt;Deployment&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install the FoundationDB operator (system package)&lt;/li&gt;
&lt;li&gt;Deploy this application package with your desired configuration&lt;/li&gt;
&lt;li&gt;The cluster will be automatically provisioned and configured&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="monitoring"&gt;Monitoring&lt;/h2&gt;
&lt;p&gt;This package includes WorkloadMonitor integration for cluster health monitoring and resource tracking. Monitoring can be disabled by setting:&lt;/p&gt;</description></item><item><title>Deploying Cozystack on Generic Kubernetes</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/generic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/generic/</guid><description>&lt;p&gt;This guide explains how to deploy Cozystack on generic Kubernetes distributions such as k3s, kubeadm, or RKE2.
While Talos Linux remains the recommended platform for production deployments, Cozystack supports deployment on other Kubernetes distributions using the &lt;code&gt;isp-full-generic&lt;/code&gt; bundle.&lt;/p&gt;
&lt;h2 id="when-to-use-generic-kubernetes"&gt;When to Use Generic Kubernetes&lt;/h2&gt;
&lt;p&gt;Consider using generic Kubernetes instead of Talos Linux when:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have an existing Kubernetes cluster you want to enhance with Cozystack&lt;/li&gt;
&lt;li&gt;Your infrastructure doesn&amp;rsquo;t support Talos Linux (certain cloud providers, embedded systems)&lt;/li&gt;
&lt;li&gt;You need specific Linux features or packages not available in Talos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For new production deployments, 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/guides/talos/" target="_blank"&gt;Talos Linux&lt;/a&gt; is recommended due to its security and operational benefits.&lt;/p&gt;</description></item><item><title>Managed Harbor Container Registry</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/harbor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/harbor/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/harbor.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/harbor/README.md
--&gt;
&lt;p&gt;Harbor is an open-source trusted cloud-native registry project that stores, signs, and scans content.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hostname for external access to Harbor (defaults to &amp;lsquo;harbor&amp;rsquo; subdomain for the tenant host).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="component-configuration"&gt;Component configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;core&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Core API server configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;core.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;core.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;core.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;core.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registry&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Container image registry configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registry.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registry.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registry.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;registry.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jobservice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Background job service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jobservice.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jobservice.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jobservice.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jobservice.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nano&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Trivy vulnerability scanner configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable or disable the vulnerability scanner.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for vulnerability database cache.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;trivy.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nano&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;database&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;PostgreSQL database configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;database.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for database storage.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;database.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of database instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;redis&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Redis cache configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;redis.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for cache storage.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;redis.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of Redis replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Managed Kafka Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/kafka/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/kafka/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/kafka.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/kafka/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topics configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].name&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topic name.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].partitions&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of partitions.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topics[i].config&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Topic configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="kafka-configuration"&gt;Kafka configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kafka configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of Kafka replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for Kafka.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;kafka.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the Kafka data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="zookeeper-configuration"&gt;ZooKeeper configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;ZooKeeper configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ZooKeeper replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size for ZooKeeper.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;5Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;zookeeper.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the ZooKeeper data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Managed MariaDB Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/mariadb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/mariadb/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/mariadb.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/mariadb/README.md
--&gt;
&lt;p&gt;The Managed MariaDB Service offers a powerful and widely used relational database solution.
This service allows you to create and manage a replicated MariaDB cluster seamlessly.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by mariadb-operator, ensuring efficient management and seamless operation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://mariadb.com/kb/en/documentation/" target="_blank"&gt;https://mariadb.com/kb/en/documentation/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub: 
&lt;a href="https://github.com/mariadb-operator/mariadb-operator" target="_blank"&gt;https://github.com/mariadb-operator/mariadb-operator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="howtos"&gt;HowTos&lt;/h2&gt;
&lt;h3 id="how-to-switch-masterslave-replica"&gt;How to switch master/slave replica&lt;/h3&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl edit mariadb &amp;lt;instance&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;update:&lt;/p&gt;</description></item><item><title>Managed MongoDB Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/mongodb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/mongodb/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/mongodb.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/mongodb/README.md
--&gt;
&lt;p&gt;MongoDB is a popular document-oriented NoSQL database known for its flexibility and scalability.
The Managed MongoDB Service provides a self-healing replicated cluster managed by the Percona Operator for MongoDB.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by the Percona Operator for MongoDB, ensuring efficient management and seamless operation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://docs.percona.com/percona-operator-for-mongodb/" target="_blank"&gt;https://docs.percona.com/percona-operator-for-mongodb/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Github: 
&lt;a href="https://github.com/percona/percona-server-mongodb-operator" target="_blank"&gt;https://github.com/percona/percona-server-mongodb-operator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deployment-modes"&gt;Deployment Modes&lt;/h2&gt;
&lt;h3 id="replica-set-mode-default"&gt;Replica Set Mode (default)&lt;/h3&gt;
&lt;p&gt;By default, MongoDB deploys as a replica set with the specified number of replicas.
This mode is suitable for most use cases requiring high availability.&lt;/p&gt;</description></item><item><title>Managed NATS Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/nats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/nats/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/nats.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/nats/README.md
--&gt;
&lt;p&gt;NATS is an open-source, simple, secure, and high performance messaging system.
It provides a data layer for cloud native applications, IoT messaging, and microservices architectures.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each NATS replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nano&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Users configuration map.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for the user.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Jetstream configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable or disable Jetstream for persistent messaging in NATS.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Jetstream persistent storage size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NATS configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config.merge&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Additional configuration to merge into NATS config.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config.resolver&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Additional resolver configuration to merge into NATS config.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Managed NATS Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/nats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/nats/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/nats.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/nats/README.md
--&gt;
&lt;p&gt;NATS is an open-source, simple, secure, and high performance messaging system.
It provides a data layer for cloud native applications, IoT messaging, and microservices architectures.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each NATS replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;nano&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Users configuration map.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;users[name].password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Password for the user.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Jetstream configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream.enabled&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable or disable Jetstream for persistent messaging in NATS.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;jetstream.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Jetstream persistent storage size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;NATS configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config.merge&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Additional configuration to merge into NATS config.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;config.resolver&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Additional resolver configuration to merge into NATS config.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;*object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="parameter-examples-and-reference"&gt;Parameter examples and reference&lt;/h2&gt;
&lt;h3 id="resources-and-resourcespreset"&gt;resources and resourcesPreset&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;resources&lt;/code&gt; sets explicit CPU and memory configurations for each replica.
When left empty, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/p&gt;</description></item><item><title>Managed OpenBAO Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/openbao/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/openbao/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/openbao.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/openbao/README.md
--&gt;
&lt;p&gt;OpenBAO is an open-source secrets management solution forked from HashiCorp Vault.
It provides identity-based secrets and encryption management for cloud infrastructure.&lt;/p&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of OpenBAO replicas. HA with Raft is automatically enabled when replicas &amp;gt; 1. Switching between standalone (file storage) and HA (Raft storage) modes requires data migration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each OpenBAO replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume Claim size for data storage.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable external access from outside the cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="application-specific-parameters"&gt;Application-specific parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ui&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Enable the OpenBAO web UI.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Managed PostgreSQL Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/postgres/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/postgres.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/postgres/README.md
--&gt;
&lt;p&gt;PostgreSQL is currently the leading choice among relational databases, known for its robust features and performance.
The Managed PostgreSQL Service takes advantage of platform-side implementation to provide a self-healing replicated cluster.
This cluster is efficiently managed using the highly acclaimed CloudNativePG operator, which has gained popularity within the community.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by the CloudNativePG operator, ensuring efficient management and seamless operation.&lt;/p&gt;</description></item><item><title>Managed Qdrant Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/qdrant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/qdrant/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/qdrant.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/qdrant/README.md
--&gt;
&lt;p&gt;Qdrant is a high-performance vector database and similarity search engine designed for AI and machine learning applications. It provides efficient storage and retrieval of high-dimensional vectors with advanced filtering capabilities, making it ideal for recommendation systems, semantic search, and RAG (Retrieval-Augmented Generation) applications.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;Service deploys Qdrant as a StatefulSet with automatic cluster mode when multiple replicas are configured.&lt;/p&gt;</description></item><item><title>Managed RabbitMQ Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/rabbitmq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/rabbitmq/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/rabbitmq.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/rabbitmq/README.md
--&gt;
&lt;p&gt;RabbitMQ is a robust message broker that plays a crucial role in modern distributed systems. Our Managed RabbitMQ Service simplifies the deployment and management of RabbitMQ clusters, ensuring reliability and scalability for your messaging needs.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The service utilizes official RabbitMQ operator. This ensures the reliability and seamless operation of your RabbitMQ instances.&lt;/p&gt;</description></item><item><title>Managed Redis Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/redis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/redis/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/redis.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/redis/README.md
--&gt;
&lt;p&gt;Redis is a highly versatile and blazing-fast in-memory data store and cache that can significantly boost the performance of your applications. Managed Redis Service offers a hassle-free solution for deploying and managing Redis clusters, ensuring that your data is always available and responsive.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;Service utilizes the Spotahome Redis Operator for efficient management and orchestration of Redis clusters.&lt;/p&gt;</description></item><item><title>Tenant Application Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/tenant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/applications/tenant/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/applications/_include/tenant.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/apps/tenant/README.md
--&gt;
&lt;p&gt;A tenant is the main unit of security on the platform. The closest analogy would be Linux kernel namespaces.&lt;/p&gt;
&lt;p&gt;Tenants can be created recursively and are subject to the following rules:&lt;/p&gt;
&lt;h3 id="tenant-naming"&gt;Tenant naming&lt;/h3&gt;
&lt;p&gt;Tenant names must follow DNS-1035 naming rules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Must start with a lowercase letter (&lt;code&gt;a-z&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Can only contain lowercase letters, numbers, and hyphens (&lt;code&gt;a-z&lt;/code&gt;, &lt;code&gt;0-9&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Must end with a letter or number (not a hyphen)&lt;/li&gt;
&lt;li&gt;Maximum length depends on the cluster configuration (Helm release prefix and root domain)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Using dashes (&lt;code&gt;-&lt;/code&gt;) in tenant names is &lt;strong&gt;allowed but discouraged&lt;/strong&gt;, unlike with other services.
This is to keep consistent naming in tenants, nested tenants, and services deployed in them.
Names with dashes (e.g., &lt;code&gt;foo-bar&lt;/code&gt;) may lead to ambiguous parsing of internal resource names like &lt;code&gt;tenant-foo-bar&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Creating users and add roles for them</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/users_and_roles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/users_and_roles/</guid><description>&lt;p&gt;Creating users and add roles for them&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;When a tenant is created in Cozy (starting with version 1.6.0), roles, RoleBindings and keycloak groups will automatically be created in the Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;To create a user, refer to the following documentation:

&lt;a href="https://www.keycloak.org/docs/latest/server_admin/#using-the-admin-console" target="_blank"&gt;Keycloak Admin Console Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="assigning-a-role-to-a-user-for-a-tenant"&gt;Assigning a Role to a User for a Tenant&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Access Keycloak&lt;/strong&gt;:
To retrieve login credentials, check the secret by running the following command:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get secret keycloak-credentials -n cozy-keycloak -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;strong&gt;Keycloak Address&lt;/strong&gt;:
The Keycloak address will match the value specified in the cozystack ConfigMap. For example, if your ConfigMap looks like this:
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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&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:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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;root-host&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;infra.example.org&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;api-server-adress&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;55.21.33.22&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;bundle-name&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;paas-full&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;ipv4-pod-cidr&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;ipv4-pod-gateway&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;ipv4-svc-cidr&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;ipv4-join-cidr&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;Then Keycloak will be available at: &lt;code&gt;keycloak.infra.example.org&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;


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


 If you are planning to integrate with external services either as clients or as IdPs, your Keycloak address needs to be publicly accessible and reachable by these services.

&lt;/div&gt;

&lt;h2 id="configure-roles-for-each-tenant-in-cozy"&gt;Configure Roles for Each Tenant in Cozy:&lt;/h2&gt;
&lt;h3 id="cluster-wide"&gt;Cluster wide&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;cozystack-cluster-admin&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Creating users and add roles for them</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/users_and_roles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/users_and_roles/</guid><description>&lt;p&gt;Creating users and add roles for them&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;When a tenant is created in Cozy (starting with version 1.6.0), roles, RoleBindings and keycloak groups will automatically be created in the Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;To create a user, refer to the following documentation:

&lt;a href="https://www.keycloak.org/docs/latest/server_admin/#using-the-admin-console" target="_blank"&gt;Keycloak Admin Console Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="assigning-a-role-to-a-user-for-a-tenant"&gt;Assigning a Role to a User for a Tenant&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Access Keycloak&lt;/strong&gt;:
To retrieve login credentials, check the secret by running the following command:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get secret keycloak-credentials -n cozy-keycloak -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Keycloak Address&lt;/strong&gt;:
The Keycloak address will match the &lt;code&gt;publishing.host&lt;/code&gt; value specified in your Platform Package. For example, if your Package includes:&lt;/p&gt;</description></item><item><title>White Labeling</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/white-labeling/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/white-labeling/</guid><description>&lt;p&gt;White labeling allows you to replace default Cozystack branding with your own logos and text across the Dashboard UI and Keycloak authentication pages.&lt;/p&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Branding is configured through the &lt;code&gt;branding&lt;/code&gt; field in the Platform Package (&lt;code&gt;spec.components.platform.values.branding&lt;/code&gt;). The configuration propagates automatically to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;: logo, page title, footer text, favicon, and tenant identifier&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keycloak&lt;/strong&gt;: realm display name on authentication pages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;Configuration&lt;/h2&gt;
&lt;p&gt;Edit your Platform Package to add or update the &lt;code&gt;branding&lt;/code&gt; section:&lt;/p&gt;</description></item><item><title>Running Windows VMs in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/windows/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/windows/</guid><description>&lt;p&gt;Cozystack can run Windows virtual machines.
This guide explains the prerequisites and steps required to boot up a virtual machine running Windows OS.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Windows installation ISO image.&lt;/li&gt;
&lt;li&gt;Virtio drivers ISO image.&lt;/li&gt;
&lt;li&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt; 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;installed in your local environment&lt;/a&gt;
and configured for your tenant&amp;rsquo;s namespace.&lt;/li&gt;
&lt;li&gt;Cozystack version v0.34.2 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;Creating a virtual machine running Windows OS starts with creating &lt;code&gt;VMDisk&lt;/code&gt; objects
and continues with creating a &lt;code&gt;VMInstance&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="1-create-vmdisk-objects"&gt;1. Create VMDisk objects&lt;/h3&gt;
&lt;p&gt;You need &lt;strong&gt;three disks&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Running Windows VMs in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/windows/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/windows/</guid><description>&lt;p&gt;Cozystack can run Windows virtual machines.
This guide explains the prerequisites and steps required to boot up a virtual machine running Windows OS.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Windows installation ISO image.&lt;/li&gt;
&lt;li&gt;Virtio drivers ISO image.&lt;/li&gt;
&lt;li&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt; 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;installed in your local environment&lt;/a&gt;
and configured for your tenant&amp;rsquo;s namespace.&lt;/li&gt;
&lt;li&gt;Cozystack version v0.34.2 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;p&gt;Creating a virtual machine running Windows OS starts with creating &lt;code&gt;VMDisk&lt;/code&gt; objects
and continues with creating a &lt;code&gt;VMInstance&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="1-create-vmdisk-objects"&gt;1. Create VMDisk objects&lt;/h3&gt;
&lt;p&gt;You need &lt;strong&gt;three disks&lt;/strong&gt;:&lt;/p&gt;</description></item><item><title>Running MikroTik RouterOS in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/mikrotik/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/mikrotik/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MikroTik RouterOS ISO (CHR or NPK install image), for example, &lt;code&gt;mikrotik-7.19.3.iso&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A free static IP or DHCP on the connected tenant network.&lt;/li&gt;
&lt;li&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt; 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;installed in your local environment&lt;/a&gt;
and configured for your tenant&amp;rsquo;s namespace.&lt;/li&gt;
&lt;li&gt;Cozystack version v0.34.2 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;h3 id="1-prepare-disks"&gt;1. Prepare disks&lt;/h3&gt;
&lt;p&gt;You need &lt;strong&gt;two disks&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Installation ISO&lt;/strong&gt; – optical.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System disk&lt;/strong&gt; – non‑optical.&lt;/li&gt;
&lt;/ol&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;"&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;apps.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:#bbb"&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;VMDisk&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;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;mikrotik-iso&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;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;source&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;http&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;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://download.mikrotik.com/routeros/7.19.3/mikrotik-7.19.3.iso&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;optical&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;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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;1Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;apps.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:#bbb"&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;VMDisk&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;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;mikrotik-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:#bbb"&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;optical&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;1Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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="2-create-the-vminstance"&gt;2. Create the VMInstance&lt;/h3&gt;
&lt;p&gt;RouterOS does not require a special instance profile.
Use a lightweight Linux profile such as &lt;code&gt;ubuntu&lt;/code&gt; with a small instance type such as &lt;code&gt;u1.medium&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Running MikroTik RouterOS in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/mikrotik/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/mikrotik/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MikroTik RouterOS ISO (CHR or NPK install image), for example, &lt;code&gt;mikrotik-7.19.3.iso&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;A free static IP or DHCP on the connected tenant network.&lt;/li&gt;
&lt;li&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt; 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;installed in your local environment&lt;/a&gt;
and configured for your tenant&amp;rsquo;s namespace.&lt;/li&gt;
&lt;li&gt;Cozystack version v0.34.2 or later.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;Installation&lt;/h2&gt;
&lt;h3 id="1-prepare-disks"&gt;1. Prepare disks&lt;/h3&gt;
&lt;p&gt;You need &lt;strong&gt;two disks&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Installation ISO&lt;/strong&gt; – optical.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;System disk&lt;/strong&gt; – non‑optical.&lt;/li&gt;
&lt;/ol&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;"&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;apps.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:#bbb"&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;VMDisk&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;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;mikrotik-iso&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;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;source&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;http&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;url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;https://download.mikrotik.com/routeros/7.19.3/mikrotik-7.19.3.iso&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;optical&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;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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;1Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;apps.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:#bbb"&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;VMDisk&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;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;mikrotik-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:#bbb"&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;optical&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#007020;font-weight:bold"&gt;false&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;storage&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;1Gi&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;storageClass&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;replicated&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="2-create-the-vminstance"&gt;2. Create the VMInstance&lt;/h3&gt;
&lt;p&gt;RouterOS does not require a special instance profile.
Use a lightweight Linux profile such as &lt;code&gt;ubuntu&lt;/code&gt; with a small instance type such as &lt;code&gt;u1.medium&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Managed PostgreSQL Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/postgres/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/postgres.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/postgres/README.md
--&gt;
&lt;p&gt;PostgreSQL is currently the leading choice among relational databases, known for its robust features and performance.
The Managed PostgreSQL Service takes advantage of platform-side implementation to provide a self-healing replicated cluster.
This cluster is efficiently managed using the highly acclaimed CloudNativePG operator, which has gained popularity within the community.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by the CloudNativePG operator, ensuring efficient management and seamless operation.&lt;/p&gt;</description></item><item><title>Self-Signed Certificates</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/self-signed-certificates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/oidc/self-signed-certificates/</guid><description>&lt;p&gt;This guide explains how to configure Kubernetes API server for OIDC authentication with Keycloak when using self-signed certificates. By default, Cozystack issues certificates via LetsEncrypt, but some environments (e.g., air-gapped or private enterprise networks) may use a custom CA instead.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cozystack cluster with OIDC enabled (see 
&lt;a href="../enable_oidc/"&gt;Enable OIDC Server&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Talos Linux control plane nodes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;talosctl&lt;/code&gt; configured for your cluster&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubelogin&lt;/code&gt; installed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-retrieve-the-keycloak-certificate"&gt;Step 1: Retrieve the Keycloak Certificate&lt;/h2&gt;
&lt;p&gt;Get the certificate from the ingress controller:&lt;/p&gt;</description></item><item><title>Self-Signed Certificates</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/self-signed-certificates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/oidc/self-signed-certificates/</guid><description>&lt;p&gt;This guide explains how to configure Kubernetes API server for OIDC authentication with Keycloak when using self-signed certificates. By default, Cozystack issues certificates via LetsEncrypt, but some environments (e.g., air-gapped or private enterprise networks) may use a custom CA instead.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Cozystack cluster with OIDC enabled (see 
&lt;a href="../enable_oidc/"&gt;Enable OIDC Server&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Talos Linux control plane nodes&lt;/li&gt;
&lt;li&gt;&lt;code&gt;talosctl&lt;/code&gt; configured for your cluster&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubelogin&lt;/code&gt; installed&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="step-1-retrieve-the-keycloak-certificate"&gt;Step 1: Retrieve the Keycloak Certificate&lt;/h2&gt;
&lt;p&gt;Get the certificate from the ingress controller:&lt;/p&gt;</description></item><item><title>Telemetry</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/configuration/telemetry/</guid><description>&lt;p&gt;This document outlines the telemetry feature within the Cozystack project, detailing the rationale behind data collection, the nature of the data collected, data handling practices, and instructions for opting out.&lt;/p&gt;
&lt;h2 id="why-we-collect-telemetry"&gt;Why We Collect Telemetry&lt;/h2&gt;
&lt;p&gt;Cozystack, as an open source project, thrives on community feedback and usage insights. Telemetry data allows maintainers to understand how Cozystack is being used in real-world scenarios. This data informs decisions related to feature prioritization, testing strategies, bug fixes, and overall project evolution. Without telemetry, decisions would rely on guesswork or limited feedback, which might slow down improvement cycles or introduce features that don’t align with users’ needs. Telemetry ensures that development is guided by actual usage patterns and community requirements, fostering a more robust and user-centric platform.&lt;/p&gt;</description></item><item><title>Telemetry</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/telemetry/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/configuration/telemetry/</guid><description>&lt;p&gt;This document outlines the telemetry feature within the Cozystack project, detailing the rationale behind data collection, the nature of the data collected, data handling practices, and instructions for opting out.&lt;/p&gt;
&lt;h2 id="why-we-collect-telemetry"&gt;Why We Collect Telemetry&lt;/h2&gt;
&lt;p&gt;Cozystack, as an open source project, thrives on community feedback and usage insights. Telemetry data allows maintainers to understand how Cozystack is being used in real-world scenarios. This data informs decisions related to feature prioritization, testing strategies, bug fixes, and overall project evolution. Without telemetry, decisions would rely on guesswork or limited feedback, which might slow down improvement cycles or introduce features that don’t align with users’ needs. Telemetry ensures that development is guided by actual usage patterns and community requirements, fostering a more robust and user-centric platform.&lt;/p&gt;</description></item><item><title>Managed MongoDB Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/mongodb/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/mongodb/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/mongodb.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/mongodb/README.md
--&gt;
&lt;p&gt;MongoDB is a popular document-oriented NoSQL database known for its flexibility and scalability.
The Managed MongoDB Service provides a self-healing replicated cluster managed by the Percona Operator for MongoDB.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;This managed service is controlled by the Percona Operator for MongoDB, ensuring efficient management and seamless operation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docs: 
&lt;a href="https://docs.percona.com/percona-operator-for-mongodb/" target="_blank"&gt;https://docs.percona.com/percona-operator-for-mongodb/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Github: 
&lt;a href="https://github.com/percona/percona-server-mongodb-operator" target="_blank"&gt;https://github.com/percona/percona-server-mongodb-operator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="deployment-modes"&gt;Deployment Modes&lt;/h2&gt;
&lt;h3 id="replica-set-mode-default"&gt;Replica Set Mode (default)&lt;/h3&gt;
&lt;p&gt;By default, MongoDB deploys as a replica set with the specified number of replicas.
This mode is suitable for most use cases requiring high availability.&lt;/p&gt;</description></item><item><title>Migrating Virtual Machines from Proxmox</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/proxmox-migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/proxmox-migration/</guid><description>&lt;p&gt;This guide describes the process of migrating virtual machines from Proxmox VE to Cozystack by exporting VM disk images and uploading them to the target environment.&lt;/p&gt;

&lt;div class="alert alert-info" role="alert"&gt;
&lt;strong&gt;Note:&lt;/strong&gt; Migration is performed by exporting VM disks to files and uploading them to Cozystack.
VM state and snapshots are not preserved during migration.
&lt;/div&gt;

&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before starting the migration, ensure you have:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt;&lt;/strong&gt; installed on your local machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installation guide: 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;KubeVirt User Guide - Virtctl Client Tool&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upload proxy access configured&lt;/strong&gt; in your Cozystack cluster:&lt;/p&gt;</description></item><item><title>Migrating Virtual Machines from Proxmox</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/proxmox-migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/proxmox-migration/</guid><description>&lt;p&gt;This guide describes the process of migrating virtual machines from Proxmox VE to Cozystack by exporting VM disk images and uploading them to the target environment.&lt;/p&gt;

&lt;div class="alert alert-info" role="alert"&gt;
&lt;strong&gt;Note:&lt;/strong&gt; Migration is performed by exporting VM disks to files and uploading them to Cozystack.
VM state and snapshots are not preserved during migration.
&lt;/div&gt;

&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before starting the migration, ensure you have:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;KubeVirt client &lt;code&gt;virtctl&lt;/code&gt;&lt;/strong&gt; installed on your local machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installation guide: 
&lt;a href="https://kubevirt.io/user-guide/user_workloads/virtctl_client_tool/" target="_blank"&gt;KubeVirt User Guide - Virtctl Client Tool&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Upload proxy access configured&lt;/strong&gt; in your Cozystack cluster:&lt;/p&gt;</description></item><item><title>Managed RabbitMQ Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/rabbitmq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/rabbitmq/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/rabbitmq.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/rabbitmq/README.md
--&gt;
&lt;p&gt;RabbitMQ is a robust message broker that plays a crucial role in modern distributed systems. Our Managed RabbitMQ Service simplifies the deployment and management of RabbitMQ clusters, ensuring reliability and scalability for your messaging needs.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;The service utilizes official RabbitMQ operator. This ensures the reliability and seamless operation of your RabbitMQ instances.&lt;/p&gt;</description></item><item><title>Managed Redis Service</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/redis/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/redis/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/redis.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/redis/README.md
--&gt;
&lt;p&gt;Redis is a highly versatile and blazing-fast in-memory data store and cache that can significantly boost the performance of your applications. Managed Redis Service offers a hassle-free solution for deploying and managing Redis clusters, ensuring that your data is always available and responsive.&lt;/p&gt;
&lt;h2 id="deployment-details"&gt;Deployment Details&lt;/h2&gt;
&lt;p&gt;Service utilizes the Spotahome Redis Operator for efficient management and orchestration of Redis clusters.&lt;/p&gt;</description></item><item><title>Tenant Application Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/tenant/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/applications/tenant/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/applications/_include/tenant.md
source: https://github.com/cozystack/cozystack/blob/main/packages/apps/tenant/README.md
--&gt;
&lt;p&gt;A tenant is the main unit of security on the platform. The closest analogy would be Linux kernel namespaces.&lt;/p&gt;
&lt;p&gt;Tenants can be created recursively and are subject to the following rules:&lt;/p&gt;
&lt;h3 id="tenant-naming"&gt;Tenant naming&lt;/h3&gt;
&lt;p&gt;Tenant names must be alphanumeric.
Using dashes (&lt;code&gt;-&lt;/code&gt;) in tenant names is not allowed, unlike with other services.
This limitation exists to keep consistent naming in tenants, nested tenants, and services deployed in them.&lt;/p&gt;</description></item><item><title>Cozystack Internals and Developer Guides</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/development/</guid><description>&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;p&gt;In short, cozystack is a seed container that bootstraps the entire platform. It consists of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;installer.sh&lt;/strong&gt; script: Contains minimal business logic, performs migrations, installs
FluxCD, and prepares Kubernetes to run the platform chart.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;platform chart&lt;/strong&gt;: A Helm chart that bootstraps the remaining configuration. It reads
the state from the Kubernetes cluster using Helm lookup functions and templates
all necessary manifests. The &lt;code&gt;installer.sh&lt;/code&gt; script continuously runs the platform chart
to ensure changes in the cluster are properly reconciled.&lt;/p&gt;</description></item><item><title>Cozystack Internals and Developer Guide</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/development/</guid><description>&lt;h2 id="how-it-works"&gt;How it works&lt;/h2&gt;
&lt;p&gt;Cozystack is an operator-driven platform. The bootstrap and ongoing management are
handled by a set of controllers that run inside the cluster. The high-level flow is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Installer chart&lt;/strong&gt; (&lt;code&gt;packages/core/installer&lt;/code&gt;) is applied via &lt;code&gt;helm install&lt;/code&gt;.
It deploys the &lt;code&gt;cozystack-operator&lt;/code&gt; Deployment into the &lt;code&gt;cozy-system&lt;/code&gt; namespace.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;cozystack-operator&lt;/strong&gt; starts and performs one-time bootstrap:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installs Cozystack CRDs (&lt;code&gt;Package&lt;/code&gt;, &lt;code&gt;PackageSource&lt;/code&gt;) from embedded manifests
(&lt;code&gt;internal/crdinstall&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Installs Flux components (source-controller, helm-controller,
source-watcher) from embedded manifests (&lt;code&gt;internal/fluxinstall&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Creates the &lt;strong&gt;initial OCIRepository&lt;/strong&gt; (&lt;code&gt;cozystack-platform&lt;/code&gt;) from the
&lt;code&gt;platformSourceUrl&lt;/code&gt; and &lt;code&gt;platformSourceRef&lt;/code&gt; values configured in the installer.&lt;/li&gt;
&lt;li&gt;Creates a &lt;code&gt;PackageSource&lt;/code&gt; that references the initial OCIRepository.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reconciliation loop&lt;/strong&gt; takes over. The operator watches &lt;code&gt;PackageSource&lt;/code&gt; and
&lt;code&gt;Package&lt;/code&gt; CRDs and translates them into Flux &lt;code&gt;HelmRelease&lt;/code&gt; objects. Flux
then installs and manages the actual Helm charts.&lt;/p&gt;</description></item><item><title>Creating Encrypted Storage on LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/disk-encryption/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/storage/disk-encryption/</guid><description>&lt;p&gt;Cozystack administrators can enable encrypted storage by creating a custom StorageClass.
This guide explains how to set up encryption passphrase, create an encrypted storage class, and use it in applications.&lt;/p&gt;
&lt;p&gt;LINSTOR provides at-rest encryption for persistent volumes using 
&lt;a href="https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-linstor-encrypted-volumes" target="_blank"&gt;LUKS&lt;/a&gt;.
This ensures that data stored on disk is encrypted and can only be accessed when the volume is mounted and unlocked.&lt;/p&gt;
&lt;h2 id="set-up-encryption-in-linstor"&gt;Set Up Encryption in LINSTOR&lt;/h2&gt;
&lt;p&gt;To start using encryption, set up an encryption passphrase in LINSTOR.&lt;/p&gt;</description></item><item><title>Creating Encrypted Storage on LINSTOR</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/disk-encryption/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/storage/disk-encryption/</guid><description>&lt;p&gt;Cozystack administrators can enable encrypted storage by creating a custom StorageClass.
This guide explains how to set up encryption passphrase, create an encrypted storage class, and use it in applications.&lt;/p&gt;
&lt;p&gt;LINSTOR provides at-rest encryption for persistent volumes using 
&lt;a href="https://linbit.com/drbd-user-guide/linstor-guide-1_0-en/#s-linstor-encrypted-volumes" target="_blank"&gt;LUKS&lt;/a&gt;.
This ensures that data stored on disk is encrypted and can only be accessed when the volume is mounted and unlocked.&lt;/p&gt;
&lt;h2 id="set-up-encryption-in-linstor"&gt;Set Up Encryption in LINSTOR&lt;/h2&gt;
&lt;p&gt;To start using encryption, set up an encryption passphrase in LINSTOR.&lt;/p&gt;</description></item><item><title>How to relocate etcd replicas in tenant clusters</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/kubernetes/relocate-etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/kubernetes/relocate-etcd/</guid><description>&lt;p&gt;Tenant Kubernetes clusters are using their own etcd clusters, not the one that is used by the management cluster.
Such etcd clusters are deployed in tenants and are available to managed Kubernetes clusters deployed in the tenant and its sub-tenants.&lt;/p&gt;
&lt;p&gt;Replicas of a tenant etcd cluster can be relocated between nodes for maintenance reasons.
Currently, management operations for tenant etcd clusters are not automated,
but such a task can be done manually.&lt;/p&gt;</description></item><item><title>How to relocate etcd replicas in tenant clusters</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/kubernetes/relocate-etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/kubernetes/relocate-etcd/</guid><description>&lt;p&gt;Tenant Kubernetes clusters are using their own etcd clusters, not the one that is used by the management cluster.
Such etcd clusters are deployed in tenants and are available to managed Kubernetes clusters deployed in the tenant and its sub-tenants.&lt;/p&gt;
&lt;p&gt;Replicas of a tenant etcd cluster can be relocated between nodes for maintenance reasons.
Currently, management operations for tenant etcd clusters are not automated,
but such a task can be done manually.&lt;/p&gt;</description></item><item><title>How to install Talos on a single-disk machine</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/single-disk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/single-disk/</guid><description>&lt;p&gt;Default Talos setup assumes that each node has a primary and secondary disks, used for system and user storage, respectively.
However, it&amp;rsquo;s possible to use a single disk, allocating space for user storage.&lt;/p&gt;
&lt;p&gt;This configuration must be applied with the first 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talosctl/#3-apply-node-configuration" target="_blank"&gt;&lt;code&gt;talosctl apply&lt;/code&gt;&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/kubernetes/talm/#3-apply-node-configuration" target="_blank"&gt;&lt;code&gt;talm apply&lt;/code&gt;&lt;/a&gt;
— the one with the &lt;code&gt;-i&lt;/code&gt; (&lt;code&gt;--insecure&lt;/code&gt;) flag.
Applying changes after initialization will not have any effect.&lt;/p&gt;
&lt;p&gt;For &lt;code&gt;talosctl&lt;/code&gt;, append the following lines to &lt;code&gt;patch.yaml&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;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:#bbb"&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;VolumeConfig&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;EPHEMERAL&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;provisioning&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;minSize&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;70GiB&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&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:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;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:#bbb"&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;UserVolumeConfig&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;data-storage&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;provisioning&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;diskSelector&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;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;disk.transport == &amp;#39;nvme&amp;#39;&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;minSize&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;400GiB&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;For &lt;code&gt;talm&lt;/code&gt;, append the same lines at end of the first node&amp;rsquo;s configuration file, such as &lt;code&gt;nodes/node1.yaml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>How to install Talos on a single-disk machine</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/single-disk/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/single-disk/</guid><description>&lt;p&gt;Default Talos setup assumes that each node has a primary and secondary disks, used for system and user storage, respectively.
However, it&amp;rsquo;s possible to use a single disk, allocating space for user storage.&lt;/p&gt;
&lt;p&gt;This configuration must be applied with the first 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talosctl/#3-apply-node-configuration" target="_blank"&gt;&lt;code&gt;talosctl apply&lt;/code&gt;&lt;/a&gt;
or 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/kubernetes/talm/#3-apply-node-configuration" target="_blank"&gt;&lt;code&gt;talm apply&lt;/code&gt;&lt;/a&gt;
— the one with the &lt;code&gt;-i&lt;/code&gt; (&lt;code&gt;--insecure&lt;/code&gt;) flag.
Applying changes after initialization will not have any effect.&lt;/p&gt;
&lt;p&gt;For &lt;code&gt;talosctl&lt;/code&gt;, append the following lines to &lt;code&gt;patch.yaml&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;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:#bbb"&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;VolumeConfig&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;EPHEMERAL&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;provisioning&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;minSize&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;70GiB&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&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:#0e84b5;font-weight:bold"&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;apiVersion&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;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:#bbb"&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;UserVolumeConfig&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;data-storage&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;provisioning&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;diskSelector&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;match&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;disk.transport == &amp;#39;nvme&amp;#39;&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;minSize&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;400GiB&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;For &lt;code&gt;talm&lt;/code&gt;, append the same lines at end of the first node&amp;rsquo;s configuration file, such as &lt;code&gt;nodes/node1.yaml&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Troubleshooting LINSTOR controller crash loops</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/linstor-controller/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/linstor-controller/</guid><description>&lt;h2 id="restarting-the-controller"&gt;Restarting the controller&lt;/h2&gt;
&lt;p&gt;If the controller is running but appears idle/unresponsive, try restarting it.
This operation is idempotent and safe: pending (unfinished) work will resume after the restart.&lt;/p&gt;
&lt;h2 id="linstor-controller-crash-loop"&gt;LINSTOR controller crash loop&lt;/h2&gt;
&lt;p&gt;If linstor-controller can&amp;rsquo;t start, but logs do not contain any useful information, you can increase the log level
(maximum level is &lt;code&gt;TRACE&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Example of &lt;code&gt;LINSTORCluster&lt;/code&gt; CR with increased log level:&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;"&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;piraeus.io/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;LINSTORCluster&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;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;controller&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;podTemplate&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;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;containers&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;linstor-controller&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;env&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;# both settings are used by linstor-controller&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;LS_LOG_LEVEL&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;value&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TRACE&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;LS_LOG_LEVEL_LINSTOR&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;value&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TRACE&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;Note: if linstor-controller is not in a crash loop, but you need to increase log level,
you can do so &lt;em&gt;temporarily&lt;/em&gt; in the runtime using the following command:&lt;/p&gt;</description></item><item><title>Troubleshooting LINSTOR controller crash loops</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/linstor-controller/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/linstor-controller/</guid><description>&lt;h2 id="restarting-the-controller"&gt;Restarting the controller&lt;/h2&gt;
&lt;p&gt;If the controller is running but appears idle/unresponsive, try restarting it.
This operation is idempotent and safe: pending (unfinished) work will resume after the restart.&lt;/p&gt;
&lt;h2 id="linstor-controller-crash-loop"&gt;LINSTOR controller crash loop&lt;/h2&gt;
&lt;p&gt;If linstor-controller can&amp;rsquo;t start, but logs do not contain any useful information, you can increase the log level
(maximum level is &lt;code&gt;TRACE&lt;/code&gt;).&lt;/p&gt;
&lt;p&gt;Example of &lt;code&gt;LINSTORCluster&lt;/code&gt; CR with increased log level:&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;"&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;piraeus.io/v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;LINSTORCluster&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;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;controller&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;podTemplate&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;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;containers&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;linstor-controller&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;env&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;# both settings are used by linstor-controller&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;LS_LOG_LEVEL&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;value&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TRACE&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;LS_LOG_LEVEL_LINSTOR&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;value&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TRACE&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;Note: if linstor-controller is not in a crash loop, but you need to increase log level,
you can do so &lt;em&gt;temporarily&lt;/em&gt; in the runtime using the following command:&lt;/p&gt;</description></item><item><title>Virtual Machine Resources</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/virtualization/resources/</guid><description>&lt;p&gt;Each virtual machine has these two configuration settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;instanceType&lt;/code&gt; defines the resourced provided to the Virtual Machine.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;instanceProfile&lt;/code&gt; defines the set of preferences for Virtual Machines, according to the OS being used.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="instance-type-resources"&gt;Instance Type Resources&lt;/h2&gt;
&lt;h3 id="reference-table"&gt;Reference table&lt;/h3&gt;
&lt;p&gt;The following instancetype resources are provided by Cozystack:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;vCPUs&lt;/th&gt;
 &lt;th&gt;Memory&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;256Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.2xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.4xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.8xlarge&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.large&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.medium&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.nano&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;512Mi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.2xmedium&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.nano&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;512Mi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="u-series"&gt;U Series&lt;/h3&gt;
&lt;p&gt;The U Series is quite neutral and provides resources for
general purpose applications.&lt;/p&gt;</description></item><item><title>Virtual Machine Resources</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/virtualization/resources/</guid><description>&lt;p&gt;Each virtual machine has these two configuration settings:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;instanceType&lt;/code&gt; defines the resourced provided to the Virtual Machine.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;instanceProfile&lt;/code&gt; defines the set of preferences for Virtual Machines, according to the OS being used.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="instance-type-resources"&gt;Instance Type Resources&lt;/h2&gt;
&lt;h3 id="reference-table"&gt;Reference table&lt;/h3&gt;
&lt;p&gt;The following instancetype resources are provided by Cozystack:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;vCPUs&lt;/th&gt;
 &lt;th&gt;Memory&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;cx1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;gn1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;256Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;m1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.2xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.4xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.8xlarge&lt;/td&gt;
 &lt;td&gt;64&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.large&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.medium&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;n1.xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.nano&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;512Mi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;o1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;rt1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.2xlarge&lt;/td&gt;
 &lt;td&gt;8&lt;/td&gt;
 &lt;td&gt;32Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.2xmedium&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.4xlarge&lt;/td&gt;
 &lt;td&gt;16&lt;/td&gt;
 &lt;td&gt;64Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.8xlarge&lt;/td&gt;
 &lt;td&gt;32&lt;/td&gt;
 &lt;td&gt;128Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.large&lt;/td&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;8Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.medium&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;4Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.micro&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;1Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.nano&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;512Mi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.small&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;2Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;u1.xlarge&lt;/td&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;16Gi&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="u-series"&gt;U Series&lt;/h3&gt;
&lt;p&gt;The U Series is quite neutral and provides resources for
general purpose applications.&lt;/p&gt;</description></item><item><title>Public-network Kubernetes deployment</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/public-ip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/public-ip/</guid><description>&lt;p&gt;A Kubernetes cluster for Cozystack can be deployed using only public networks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both management and worker nodes have public IP addresses.&lt;/li&gt;
&lt;li&gt;Worker nodes connect to the management nodes over the public Internet, without a private internal network or VPN.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Such a setup is not recommended for production, but can be used for research and testing,
when hosting limitations prevent provisioning a private network.&lt;/p&gt;
&lt;p&gt;To enable this setup when deploying with &lt;code&gt;talosctl&lt;/code&gt;, add the following data in the node configuration files:&lt;/p&gt;</description></item><item><title>Public-network Kubernetes deployment</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/public-ip/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/public-ip/</guid><description>&lt;p&gt;A Kubernetes cluster for Cozystack can be deployed using only public networks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Both management and worker nodes have public IP addresses.&lt;/li&gt;
&lt;li&gt;Worker nodes connect to the management nodes over the public Internet, without a private internal network or VPN.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Such a setup is not recommended for production, but can be used for research and testing,
when hosting limitations prevent provisioning a private network.&lt;/p&gt;
&lt;p&gt;To enable this setup when deploying with &lt;code&gt;talosctl&lt;/code&gt;, add the following data in the node configuration files:&lt;/p&gt;</description></item><item><title>How to Rotate Certificate Authority</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/rotate-ca/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/cluster/rotate-ca/</guid><description>&lt;p&gt;Talos sets up root certificate authorities with a lifetime of 10 years,
and all Talos and Kubernetes API certificates are issued by these root CAs.
In general, you almost never need to rotate the root CA certificate and key for the Talos API and Kubernetes API.&lt;/p&gt;
&lt;p&gt;Rotation of the root CA is only needed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;when you suspect that the private key has been compromised;&lt;/li&gt;
&lt;li&gt;when you want to revoke access to the cluster for a leaked &lt;code&gt;talosconfig&lt;/code&gt; or &lt;code&gt;kubeconfig&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;once in 10 years.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="rotate-ca-for-the-management-kubernetes-cluster"&gt;Rotate CA for the Management Kubernetes Cluster:&lt;/h3&gt;
&lt;p&gt;See: 
&lt;a href="https://www.talos.dev/v1.9/advanced/ca-rotation/#kubernetes-api" target="_blank"&gt;https://www.talos.dev/v1.9/advanced/ca-rotation/#kubernetes-api&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Rotate Certificate Authority</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/rotate-ca/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/cluster/rotate-ca/</guid><description>&lt;p&gt;Talos sets up root certificate authorities with a lifetime of 10 years,
and all Talos and Kubernetes API certificates are issued by these root CAs.
In general, you almost never need to rotate the root CA certificate and key for the Talos API and Kubernetes API.&lt;/p&gt;
&lt;p&gt;Rotation of the root CA is only needed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;when you suspect that the private key has been compromised;&lt;/li&gt;
&lt;li&gt;when you want to revoke access to the cluster for a leaked &lt;code&gt;talosconfig&lt;/code&gt; or &lt;code&gt;kubeconfig&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;once in 10 years.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="rotate-ca-for-talos-api"&gt;Rotate CA for Talos API&lt;/h3&gt;
&lt;p&gt;To rotate the Talos CA for the management cluster, use the following command:&lt;/p&gt;</description></item><item><title>Troubleshooting LINSTOR CrashLoopBackOff related to a broken database</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/linstor-database/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/linstor-database/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;


 &lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Advanced Users Only&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This guide is intended for experienced users who are comfortable with low-level troubleshooting and data recovery operations.
Corrupted LINSTOR databases are rare and typically indicate a serious underlying issue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you encounter this situation in a production environment, we strongly recommend contacting qualified support&lt;/strong&gt;
rather than attempting to fix it yourself. Incorrect actions can lead to permanent data loss.&lt;/p&gt;


&lt;/div&gt;

&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;When running outside of Kubernetes, LINSTOR controller uses some kind of SQL database (various kinds).
In Kubernetes, &lt;code&gt;linstor-controller&lt;/code&gt; does not require a persistent volume or external database.
Instead, it stores all its information as custom resources (CRs) right in the Kubernetes control plane.
Upon startup, LINSTOR controller reads all CRs and creates an in-memory database.&lt;/p&gt;</description></item><item><title>Troubleshooting LINSTOR CrashLoopBackOff related to a broken database</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/linstor-database/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/linstor-database/</guid><description>&lt;div class="alert alert-warning" role="alert"&gt;


 &lt;p&gt;&amp;#x26a0;&amp;#xfe0f; &lt;strong&gt;Advanced Users Only&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This guide is intended for experienced users who are comfortable with low-level troubleshooting and data recovery operations.
Corrupted LINSTOR databases are rare and typically indicate a serious underlying issue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you encounter this situation in a production environment, we strongly recommend contacting qualified support&lt;/strong&gt;
rather than attempting to fix it yourself. Incorrect actions can lead to permanent data loss.&lt;/p&gt;


&lt;/div&gt;

&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;When running outside of Kubernetes, LINSTOR controller uses some kind of SQL database (various kinds).
In Kubernetes, &lt;code&gt;linstor-controller&lt;/code&gt; does not require a persistent volume or external database.
Instead, it stores all its information as custom resources (CRs) right in the Kubernetes control plane.
Upon startup, LINSTOR controller reads all CRs and creates an in-memory database.&lt;/p&gt;</description></item><item><title>How to configure network bonding (LACP)</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/bonding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/bonding/</guid><description>&lt;p&gt;Network bonding allows you to combine multiple physical network interfaces into a single logical interface.
This provides increased bandwidth and link redundancy.&lt;/p&gt;
&lt;p&gt;LACP (Link Aggregation Control Protocol, IEEE 802.3ad) is the most common bonding mode,
which dynamically negotiates link aggregation with the network switch.&lt;/p&gt;


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


 LACP requires configuration on both the server and the network switch.
Make sure your switch has a corresponding LACP port-channel configured for the server&amp;rsquo;s ports.

&lt;/div&gt;

&lt;h2 id="identify-network-interfaces"&gt;Identify network interfaces&lt;/h2&gt;
&lt;p&gt;After running &lt;code&gt;talm template&lt;/code&gt;, the generated node configuration file will contain
a comment block with discovered network interfaces:&lt;/p&gt;</description></item><item><title>How to Enable KubeSpan</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/kubespan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/kubespan/</guid><description>&lt;p&gt;Talos Linux provides a full mesh WireGuard network for your cluster.&lt;/p&gt;
&lt;p&gt;To enable this functionality, you need to configure 
&lt;a href="https://www.talos.dev/v1.8/talos-guides/network/kubespan/" target="_blank"&gt;KubeSpan&lt;/a&gt; and 
&lt;a href="https://www.talos.dev/v1.2/kubernetes-guides/configuration/discovery/" target="_blank"&gt;Cluster Discovery&lt;/a&gt; in your Talos Linux configuration:&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;"&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;machine&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;network&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;kubespan&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;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;cluster&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;discovery&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;p&gt;Since KubeSpan encapsulates traffic into a WireGuard tunnel, Kube-OVN should also be configured with a lower MTU value.&lt;/p&gt;
&lt;p&gt;To achieve this, add the following to the Cozystack ConfigMap:&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;"&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;v1&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;kind&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;ConfigMap&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;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&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:#bbb"&gt;&lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;data&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-kubeovn&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;|&lt;span style="color:#4070a0;font-style:italic"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; kube-ovn:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#4070a0;font-style:italic"&gt; mtu: 1222&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;</description></item><item><title>How to Enable KubeSpan</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/kubespan/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/kubespan/</guid><description>&lt;p&gt;Talos Linux provides a full mesh WireGuard network for your cluster.&lt;/p&gt;
&lt;p&gt;To enable this functionality, you need to configure 
&lt;a href="https://www.talos.dev/v1.8/talos-guides/network/kubespan/" target="_blank"&gt;KubeSpan&lt;/a&gt; and 
&lt;a href="https://www.talos.dev/v1.2/kubernetes-guides/configuration/discovery/" target="_blank"&gt;Cluster Discovery&lt;/a&gt; in your Talos Linux configuration:&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;"&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;machine&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;network&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;kubespan&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;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;cluster&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;discovery&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;p&gt;Since KubeSpan encapsulates traffic into a WireGuard tunnel, Kube-OVN should also be configured with a lower MTU value.&lt;/p&gt;
&lt;p&gt;To achieve this, add the following to the &lt;code&gt;networking&lt;/code&gt; component of your Platform Package:&lt;/p&gt;</description></item><item><title>How to enable Hugepages</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/hugepages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/install/how-to/hugepages/</guid><description>&lt;p&gt;Enabling Hugepages for Cozystack can be done both on initial installation and at any time after it.
Applying this configuration after installation will require a full node reboot.&lt;/p&gt;
&lt;p&gt;Read more in the Linux Kernel documentation: 
&lt;a href="https://docs.kernel.org/admin-guide/mm/hugetlbpage.html" target="_blank"&gt;HugeTLB Pages&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="using-talm"&gt;Using Talm&lt;/h2&gt;
&lt;p&gt;Requires Talm &lt;code&gt;v0.16.0&lt;/code&gt; or later.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add the following lines to &lt;code&gt;values.yaml&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;certSANs&lt;/span&gt;:&lt;span style="color:#bbb"&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;nr_hugepages&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;3000&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;code&gt;vm.nr_hugepages&lt;/code&gt; is the count of pages per 2Mi.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply the configuration:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm apply -f nodes/node0.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, reboot the nodes:&lt;/p&gt;</description></item><item><title>How to enable Hugepages</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/hugepages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/install/how-to/hugepages/</guid><description>&lt;p&gt;Enabling Hugepages for Cozystack can be done both on initial installation and at any time after it.
Applying this configuration after installation will require a full node reboot.&lt;/p&gt;
&lt;p&gt;Read more in the Linux Kernel documentation: 
&lt;a href="https://docs.kernel.org/admin-guide/mm/hugetlbpage.html" target="_blank"&gt;HugeTLB Pages&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="using-talm"&gt;Using Talm&lt;/h2&gt;
&lt;p&gt;Requires Talm &lt;code&gt;v0.16.0&lt;/code&gt; or later.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add the following lines to &lt;code&gt;values.yaml&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;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#0e84b5;font-weight:bold"&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;certSANs&lt;/span&gt;:&lt;span style="color:#bbb"&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;nr_hugepages&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#40a070"&gt;3000&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;code&gt;vm.nr_hugepages&lt;/code&gt; is the count of pages per 2Mi.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Apply the configuration:&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;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;talm apply -f nodes/node0.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Finally, reboot the nodes:&lt;/p&gt;</description></item><item><title>Troubleshooting Piraeus custom resources</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/piraeus-custom-resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/troubleshooting/piraeus-custom-resources/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Piraeus custom resources are the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LinstorCluster&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorSatellite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorSatelliteConfiguration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorNodeConnection&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Piraeus controller protects these resources from unintended changes and deletion.
When you delete the resource, controller will first make sure that all downstream resources are deleted.&lt;/p&gt;
&lt;p&gt;But the default setting of the webhook is to reject any changes if something goes wrong with the webhook itself.
And, in a disturbed system, webhook may go down a lot, without useful stacktraces.&lt;/p&gt;</description></item><item><title>Troubleshooting Piraeus custom resources</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/piraeus-custom-resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/troubleshooting/piraeus-custom-resources/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Piraeus custom resources are the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;LinstorCluster&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorSatellite&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorSatelliteConfiguration&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinstorNodeConnection&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Piraeus controller protects these resources from unintended changes and deletion.
When you delete the resource, controller will first make sure that all downstream resources are deleted.&lt;/p&gt;
&lt;p&gt;But the default setting of the webhook is to reject any changes if something goes wrong with the webhook itself.
And, in a disturbed system, webhook may go down a lot, without useful stacktraces.&lt;/p&gt;</description></item><item><title>Scheduling Classes</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/scheduling-classes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/scheduling-classes/</guid><description>&lt;p&gt;SchedulingClass is a cluster-scoped custom resource that lets administrators define
placement policies for tenant workloads. When a tenant is assigned a scheduling class,
all of its pods are automatically routed to the Cozystack custom scheduler, which
merges the class-defined constraints with any constraints already present on the pod.&lt;/p&gt;
&lt;p&gt;This allows platform operators to pin tenants to specific data centers, availability
zones, or node groups — without modifying individual application charts.&lt;/p&gt;</description></item><item><title>SeaweedFS Multi-DC Configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/seaweedfs-multidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/stretched/seaweedfs-multidc/</guid><description>&lt;p&gt;This guide explains how to deploy SeaweedFS over several data centers (&amp;ldquo;multi-DC&amp;rdquo;).
Multi-zone configuration for SeaweedFS is available since Cozystack v0.34.0.&lt;/p&gt;
&lt;h2 id="seaweedfs-multi-dc-configuration"&gt;SeaweedFS Multi-DC Configuration&lt;/h2&gt;
&lt;p&gt;To span SeaweedFS over several DCs, create a new cluster in multi-DC mode.&lt;/p&gt;
&lt;p&gt;By default, SeaweedFS runs in a single data centre (DC), and a running single-DC deployment cannot be switched to multi-DC mode.
If you need to change the topology, delete the current SeaweedFS instance and create a new one with the desired mode.&lt;/p&gt;</description></item><item><title>SeaweedFS Multi-DC Configuration</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/seaweedfs-multidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/stretched/seaweedfs-multidc/</guid><description>&lt;p&gt;This guide explains how to deploy SeaweedFS over several data centers (&amp;ldquo;multi-DC&amp;rdquo;).
Multi-zone configuration for SeaweedFS is available since Cozystack v0.34.0.&lt;/p&gt;
&lt;h2 id="seaweedfs-multi-dc-configuration"&gt;SeaweedFS Multi-DC Configuration&lt;/h2&gt;
&lt;p&gt;To span SeaweedFS over several DCs, create a new cluster in multi-DC mode.&lt;/p&gt;
&lt;p&gt;By default, SeaweedFS runs in a single data centre (DC), and a running single-DC deployment cannot be switched to multi-DC mode.
If you need to change the topology, delete the current SeaweedFS instance and create a new one with the desired mode.&lt;/p&gt;</description></item><item><title>Cozystack Roadmap</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/roadmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/roadmap/</guid><description>You can view our roadmap on &lt;a href="https://github.com/orgs/cozystack/projects/1" target="_blank"&gt;GitHub Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

If you have some questions and comments about roadmap or need specific functionality, feel free &lt;a href="mailto:timur.tukaev@aenix.io"&gt;to let us know&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

Join our &lt;a href="https://calendar.google.com/calendar?cid=ZTQzZDIxZTVjOWI0NWE5NWYyOGM1ZDY0OWMyY2IxZTFmNDMzZTJlNjUzYjU2ZGJiZGE3NGNhMzA2ZjBkMGY2OEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t"&gt;community meetings&lt;/a&gt;.</description></item><item><title>Cozystack Roadmap</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/roadmap/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/roadmap/</guid><description>You can view our roadmap on &lt;a href="https://github.com/orgs/cozystack/projects/1" target="_blank"&gt;GitHub Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

If you have some questions and comments about roadmap or need specific functionality, feel free &lt;a href="mailto:timur.tukaev@aenix.io"&gt;to let us know&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;

Join our &lt;a href="https://calendar.google.com/calendar?cid=ZTQzZDIxZTVjOWI0NWE5NWYyOGM1ZDY0OWMyY2IxZTFmNDMzZTJlNjUzYjU2ZGJiZGE3NGNhMzA2ZjBkMGY2OEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t"&gt;community meetings&lt;/a&gt;.</description></item><item><title>Game Servers on Cozystack: No April Fools' Joke</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2026/04/game-servers-on-cozystack-no-april-fools-joke/</link><pubDate>Wed, 01 Apr 2026 07:30:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2026/04/game-servers-on-cozystack-no-april-fools-joke/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Timur Tukaev (Ænix)&lt;/p&gt;
&lt;p&gt;hello, world! We are the team behind 
&lt;a href="https://cozystack.io" target="_blank"&gt;Cozystack&lt;/a&gt;, an open-source platform for building clouds on your own hardware. We want to explain why we decided to target the game server space and what came of it.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://deploy-preview-470--cozystack.netlify.app/blog/2026/04/game-servers-on-cozystack-no-april-fools-joke/cozystack-dashboard-game-servers-marketplace.png" alt="Cozystack dashboard showing a marketplace of managed game servers"&gt;&lt;/p&gt;
&lt;h2 id="what-is-cozystack"&gt;What Is Cozystack&lt;/h2&gt;
&lt;p&gt;Cozystack is a platform that turns ordinary servers into a full-fledged cloud. The project is part of CNCF Sandbox, is distributed under the Apache 2.0 license, and is deployed on bare-metal servers.&lt;/p&gt;</description></item><item><title>Cozystack 1.2: OpenSearch, VPC Peering, and Smarter Tenant Scheduling</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-1-2-opensearch-vpc-peering-and-smarter-tenant-scheduling/</link><pubDate>Tue, 31 Mar 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-1-2-opensearch-vpc-peering-and-smarter-tenant-scheduling/</guid><description>&lt;h3 id="cozystack-12-opensearch-vpc-peering-and-smarter-tenant-scheduling"&gt;Cozystack 1.2: OpenSearch, VPC Peering, and Smarter Tenant Scheduling&lt;/h3&gt;
&lt;p&gt;The Cozystack 1.2 release line is now available. 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v1.2.0" target="_blank"&gt;v1.2.0&lt;/a&gt; was published on March 27, 2026, and 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v1.2.1" target="_blank"&gt;v1.2.1&lt;/a&gt; followed on March 31, 2026.&lt;/p&gt;
&lt;p&gt;This cycle expands the platform in three important directions: managed search and analytics, secure networking between tenant environments, and better control over where tenant workloads run. The follow-up &lt;code&gt;v1.2.1&lt;/code&gt; release focuses on safety and operational stability.&lt;/p&gt;
&lt;h3 id="main-highlights"&gt;Main highlights&lt;/h3&gt;
&lt;h4 id="managed-opensearch-in-the-application-catalog"&gt;Managed OpenSearch in the application catalog&lt;/h4&gt;
&lt;p&gt;Cozystack 1.2 adds &lt;strong&gt;OpenSearch&lt;/strong&gt; as a fully managed service. It supports OpenSearch v1, v2, and v3, can run in a multi-role topology, enables TLS by default, ships with built-in HTTP Basic authentication, and can optionally deploy OpenSearch Dashboards alongside the engine.&lt;/p&gt;</description></item><item><title>Cozystack v1.0 &amp; v1.1: Introducing Package-Based Architecture, Cozystack Operator, Velero Strategy Controller, MongoDB and OpenBAO Support</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-1-0-release/</link><pubDate>Mon, 16 Mar 2026 07:30:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-1-0-release/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Timur Tukaev (Ænix)&lt;/p&gt;
&lt;p&gt;The last platform release was 0.41. So it came as a surprise when the next release, 0.42, turned out to be the answer to the ultimate question of life, the universe, and everything. The number of serious changes that had piled up was just too great—so much so that 0.42 had to be renamed to 1.0.&lt;/p&gt;
&lt;p&gt;With the release of v1.0.0, Cozystack is undergoing a fundamental architectural transition. We’ve built a package system based on FluxCD and OCI artifacts — think of it like apt for Debian/Ubuntu, but made for Kubernetes (see “Package-based Deployment” below). This let us introduce a unique new approach: Build Your Own Platform (BYOP).&lt;/p&gt;</description></item><item><title>Cozystack at KubeCon Europe 2026</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-at-kubecon-amsterdam-26/</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2026/03/cozystack-at-kubecon-amsterdam-26/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Timur Tukaev (Ænix)&lt;/p&gt;
&lt;p&gt;Amsterdam, Netherlands — March 25
📍 CNCF Project Pavilion
🪧 Kiosk P-18A | Halls 1–5
🕙 Wednesday, March 25 | 10:00 – 13:30&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Building your own public or private cloud?&lt;/li&gt;
&lt;li&gt;Running Kubernetes-based services for your customers?&lt;/li&gt;
&lt;li&gt;Trying to simplify your stack?&lt;/li&gt;
&lt;li&gt;Want to automate operations and stop paying huge bills to big cloud providers?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Come find our COO, Timur Tukaev, at the kiosk — or reach out and schedule a meeting with him: 
&lt;a href="https://aenix.io/links/timur.tukaev/" target="_blank"&gt;https://aenix.io/links/timur.tukaev/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Invitation to CozySummit Virtual – May 26</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2026/02/invitation-to-cozysummit-virtual-may-26/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2026/02/invitation-to-cozysummit-virtual-may-26/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Timur Tukaev (Ænix)&lt;/p&gt;
&lt;p&gt;Join us on May 26 for 2nd CozySummit Virtual, conference for CozyStack developers and adopters.&lt;/p&gt;
&lt;p&gt;📢 CFP is open until March 8 – submit your talk and become speaker at our event!&lt;/p&gt;
&lt;p&gt;CozySummit Virtual is organized by CNCF with the support of CozyStack maintainers and project sponsors.&lt;/p&gt;
&lt;p&gt;Suggested Session Topics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cozystack in Production: Real-world deep dives into architecture, observability, and the hard parts of running production-grade clouds.&lt;/li&gt;
&lt;li&gt;Built-in Compliance: Practical frameworks for deploying compliance-driven environments, including local infrastructure designs and governance that keep workloads and data under your control.&lt;/li&gt;
&lt;li&gt;Hyperscaler Alternatives: Real-life cases and models for building your own public or private cloud that can compete with global providers on local markets while reducing infrastructure costs by 2x–5x.&lt;/li&gt;
&lt;li&gt;Automation &amp;amp; GitOps: Deep dives into platform engineering: integrations (IAM, networking, storage, monitoring), GitOps/automation workflows, and building self-service developer platforms on top of Cozystack.&lt;/li&gt;
&lt;li&gt;Community &amp;amp; Maintainership: A direct look at release engineering, contributing new modules, and community practices that help Cozystack grow.&lt;/li&gt;
&lt;li&gt;Feel free to suggest your topic if you don&amp;rsquo;t see here what you have in mind💪&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;👉 
&lt;a href="https://community.cncf.io/events/details/cncf-virtual-project-events-hosted-by-cncf-presents-cozysummit-virtual-2026/" target="_blank"&gt;Conference website&lt;/a&gt;
👉 
&lt;a href="https://sessionize.com/cozysummit-virtual-2026/" target="_blank"&gt;CFP&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Talm v0.17: Built-in Age Encryption for Secrets Management</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/12/talm-v0-17-built-in-age-encryption-for-secrets/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/12/talm-v0-17-built-in-age-encryption-for-secrets/</guid><description>&lt;h3 id="talm-v017-built-in-age-encryption-for-secrets-management"&gt;Talm v0.17: Built-in Age Encryption for Secrets Management&lt;/h3&gt;
&lt;p&gt;The latest release of 
&lt;a href="https://github.com/cozystack/talm" target="_blank"&gt;Talm&lt;/a&gt;, the configuration manager for Talos Linux, introduces a powerful new feature: built-in encryption using the 
&lt;a href="https://age-encryption.org/" target="_blank"&gt;age&lt;/a&gt; encryption tool. This enhancement allows you to securely store sensitive configuration files like &lt;code&gt;secrets.yaml&lt;/code&gt;, &lt;code&gt;talosconfig&lt;/code&gt;, and &lt;code&gt;kubeconfig&lt;/code&gt; in Git repositories while following security best practices.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/0*encryption.png" alt=""&gt;&lt;/p&gt;
&lt;h3 id="why-age-encryption"&gt;Why Age Encryption?&lt;/h3&gt;
&lt;p&gt;Managing secrets in Git repositories has always been a challenge. While storing configuration files in version control is convenient for GitOps workflows, sensitive data like API keys, certificates, and cluster credentials should never be committed in plain text. Traditional solutions like &lt;code&gt;git-crypt&lt;/code&gt; or external secret management systems add complexity and dependencies.&lt;/p&gt;</description></item><item><title>Flux-aio, Kubernetes mTLS and the Chicken and Egg Problem</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/12/flux-aio-kubernetes-mtls-and-the-chicken-and-egg-problem/</link><pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/12/flux-aio-kubernetes-mtls-and-the-chicken-and-egg-problem/</guid><description>&lt;p&gt;&lt;img src="https://deploy-preview-470--cozystack.netlify.app/blog/2025/12/flux-aio-kubernetes-mtls-and-the-chicken-and-egg-problem/chicken-and-egg-problem.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Here at 
&lt;a href="https://cozystack.io/" target="_blank"&gt;Cozystack&lt;/a&gt;, we&amp;rsquo;re once again solving the chicken-and-egg problem: how to deploy CNI and kube-proxy through Flux, while ensuring Flux itself works without CNI and kube-proxy.&lt;/p&gt;
&lt;p&gt;Flux can be started without CNI and kube-proxy using the 
&lt;a href="https://github.com/stefanprodan/flux-aio" target="_blank"&gt;flux-aio&lt;/a&gt; project (by the creator of Flux), which runs a single deployment with all controllers configured to communicate with each other via localhost.&lt;/p&gt;
&lt;p&gt;The specific challenge for Cozystack is that we deploy a small HTTP server with Helm charts and other assets used in the platform to each cluster. Flux reads these charts and installs them into the system.&lt;/p&gt;</description></item><item><title>CozySummit lineup is out!</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozysummit-lineup-is-out/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozysummit-lineup-is-out/</guid><description>&lt;h3 id="-cozysummit-lineup-isout"&gt;👻 CozySummit lineup is out!&lt;/h3&gt;
&lt;p&gt;Yaaay! We’ve published the schedule for CozySummit 2025 Virtual — an online conference for Cozystack developers and users, hosted together with the CNCF. The talk lineup looks great. Just look at that!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*XfMqb8nryVeTytZOexqc3Q.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Wednesday, December 3, 2025&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;16:00 CET (9:00 AM CT) Opening/Intro by Andrei Kvapil, Cozystack Maintainer, Ænix CEO&amp;amp;Founder&lt;/li&gt;
&lt;li&gt;16:05 CET (9:05 AM CT) “How we build a multi-AZ cloud in Switzerland”, by Matthieu Robin, Hidora&lt;/li&gt;
&lt;li&gt;16:40 CET (9:40 AM CT) “Home Lab to the Moon and Back”, by Kingdon Barrett, Navteca, LLC&lt;/li&gt;
&lt;li&gt;17:20 CET (10:20 AM CT) “Extensibility without chaos: lessons from building Cozystack”, by Timofei Larkin, Ænix&lt;/li&gt;
&lt;li&gt;17:55 CET (10:55 AM CT) “From AWS EC2 to Cozystack: A Beginner’s Roadmap to Cloud Independence”, by Kirti Goyal&lt;/li&gt;
&lt;li&gt;18:10 CET (11:10 AM CT) “Integrating Proxmox with CozyStack: Advanced Container and Pod Isolation”, by Marian Koreniuk&lt;/li&gt;
&lt;li&gt;18:25 CET (11:25 AM CT) “SeaweedFS S3 API in 2025: Enterprise‑grade security and control”, by Chris Lu, SeaweedFS&lt;/li&gt;
&lt;li&gt;18:40 CET (11:40 AM CT) “Cozystack Storage Deep Dive”, by Moritz Wanzenböck, LINBIT&lt;/li&gt;
&lt;li&gt;19:10 CET (12:10 PM CT) Closing Remarks by Andrei Kvapil&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out the speakers, register for the event, join us, and share with friends and colleagues!&lt;/p&gt;</description></item><item><title>Cozystack applied to CNCF Incubated</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozystack-applied-to-cncf-incubated/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozystack-applied-to-cncf-incubated/</guid><description>&lt;h3 id="cozystack-applied-to-cncf-incubated"&gt;Cozystack applied to CNCF Incubated&lt;/h3&gt;
&lt;p&gt;We’ve just submitted our application to move from CNCF Sandbox to Incubated. We’d love your support — drop a like to cheer us on. It won’t sway the TOC’s decision, but it means a lot to us.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*_xs_0yX9K8OK2BRzFEpj6g.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Why it matters: CNCF Incubating signals a more mature project that’s ready for production use. It also attracts contributors and unlocks extra CNCF opportunities to help us grow.&lt;/p&gt;</description></item><item><title>Cozystack v0.36</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozystack-v0-36/</link><pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/10/cozystack-v0-36/</guid><description>&lt;h3 id="-cozystack-v036-server-side-encryption-for-s3-kube-ovn-cluster-health-monitor-rest-api-documentation"&gt;😜 Cozystack v0.36: Server-side Encryption for S3, Kube-OVN Cluster Health Monitor, REST API Documentation&lt;/h3&gt;
&lt;p&gt;The new version of Cozystack focuses on the stability, observability, and flexible configuration of managed applications.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*nSnbuqjkZ66y1L8T6tEmEw.png" alt=""&gt;&lt;/p&gt;
&lt;h3 id="-major-features-and-improvements"&gt;👉 Major Features and Improvements&lt;/h3&gt;
&lt;h4 id="per-namespace-resource-limits-fortenants"&gt;Per-Namespace Resource Limits for Tenants&lt;/h4&gt;
&lt;p&gt;Resource management for Cozystack tenants has received a final patch and is now graduated to a stable feature. Platform administrators can define explicit CPU, memory, and storage limits for each tenant’s namespace via the tenant specification. This prevents any single tenant from consuming more than their share of cluster resources, ensuring cluster stability and a guaranteed service level for each tenant.&lt;/p&gt;</description></item><item><title>Protofire Experience Operating Kubernetes with Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/protofire-experience-operating-kubernetes-with-cozystack/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/protofire-experience-operating-kubernetes-with-cozystack/</guid><description>&lt;h3 id="protofire-experience-operating-kubernetes-with-cozystack"&gt;
&lt;a href="https://www.linkedin.com/company/protofire-io/" target="_blank"&gt;Protofire&lt;/a&gt; Experience Operating Kubernetes with Cozystack&lt;/h3&gt;
&lt;p&gt;In a recent infrastructure transition that spanned several months, our team explored alternative container orchestration platforms to simplify operations and optimize costs. At the time, our environment consisted of nearly a hundred AWS accounts running multiple ECS services, along with managed PostgreSQL, Redis, RabbitMQ, and ALBs.&lt;/p&gt;
&lt;p&gt;One of the goals was to consolidate our deployment architecture under Kubernetes while maintaining support for stateful services, without introducing significant operational complexity. After evaluating different options, we decided to adopt 
&lt;a href="http://cozystack.io" target="_blank"&gt;Cozystack&lt;/a&gt;, primarily due to its all-in-one approach and compatibility with bare-metal infrastructure.&lt;/p&gt;</description></item><item><title>New CNCF Webinar: Building Your Own Cloud Platform with Open Source</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/new-cncf-webinar-building-your-own-cloud-platform-with-open-source/</link><pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/new-cncf-webinar-building-your-own-cloud-platform-with-open-source/</guid><description>&lt;h3 id="new-cncf-webinar-building-your-own-cloud-platform-with-opensource"&gt;New CNCF Webinar: Building Your Own Cloud Platform with Open Source&lt;/h3&gt;
&lt;p&gt;We’re excited to share Andrey Kvapil’s webinar for CNCF! He dives deep into how to build a powerful cloud platform using open-source components.&lt;/p&gt;
&lt;p&gt;Inside, you’ll find:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architectural approaches &amp;amp; API design&lt;/li&gt;
&lt;li&gt;How to select the right components&lt;/li&gt;
&lt;li&gt;Strategies to integrate them into a robust infrastructure solution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is a must-watch for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Companies looking to migrate from public cloud to their own or leased servers&lt;/li&gt;
&lt;li&gt;Hosting &amp;amp; service providers aiming to compete with hyperscalers like AWS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Watch now!&lt;/p&gt;</description></item><item><title>CNCF Webinar: One API to Rule Them All — Building a Unified Platform with Kubernetes Aggregation</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/cncf-webinar-one-api-to-rule-them-all--building-a-unified-platform-with-kubernetes-aggregation/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/09/cncf-webinar-one-api-to-rule-them-all--building-a-unified-platform-with-kubernetes-aggregation/</guid><description>&lt;h3 id="cncf-webinar-one-api-to-rule-them-allbuilding-a-unified-platform-with-kubernetes-aggregation"&gt;CNCF Webinar: One API to Rule Them All — Building a Unified Platform with Kubernetes Aggregation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Speaker: Andrei Kvapil, Ænix CEO, Cozystack maintainer&lt;/li&gt;
&lt;li&gt;When: Sep, 4&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*OO-ATURlxPokRXAy1Ee8nA.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;How do you build a unified product from a stack of open-source tools? In this talk, a Cozystack core maintainer walks through the engineering journey of integrating Helm, Operators, and the Kubernetes Aggregation Layer to build a general-purpose API — without using etcd.&lt;/p&gt;</description></item><item><title>Cozystack v0.35:</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/cozystack-v0-35/</link><pubDate>Thu, 21 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/cozystack-v0-35/</guid><description>&lt;h3 id="cozystack-v035-external-application-sources-dedicated-s3-clusters-and-monitoring-hetzner-robotlbsupport"&gt;Cozystack v0.35: External Application Sources, Dedicated S3 Clusters and Monitoring, Hetzner RobotLB Support&lt;/h3&gt;
&lt;p&gt;The new version of Cozystack takes a major step forward in its modular (or: decomposed) architecture, enabling users to swiftly integrate custom applications and services. This significantly extends the platform’s out-of-the-box functionality to meet specific business needs. And there’s more!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/0*BTfwy72MMG2NBvvm" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is Cozystack?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Cozystack is a free PaaS and framework for building clouds that unifies VMs, containers, and GPU workloads under Kubernetes. Companies can turn hardware into a cloud: offer users or customers managed K8s, VMs, managed data bases, applications and GPU services. With KubeVirt integration, multi-tenancy, and bare-metal simplicity, it lets enterprises deploy AI, databases, or edge apps without vendor lock-in. Cozystack is a CNCF Sandbox project.&lt;/p&gt;</description></item><item><title>Invitation to CozySummit Virtual — December 3</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/invitation-to-cozysummit-virtual--december-3/</link><pubDate>Thu, 14 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/invitation-to-cozysummit-virtual--december-3/</guid><description>&lt;h3 id="invitation-to-cozysummit-virtualdecember3"&gt;Invitation to CozySummit Virtual — December 3&lt;/h3&gt;
&lt;p&gt;Join us on December 3 for CozySummit Virtual, the first conference for CozyStack developers and users.&lt;/p&gt;
&lt;p&gt;📢 CFP is open until September 14 — submit your talk and become one of the first speakers at our event!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*zEOKAq9jaDdY4Y9drKo9jw.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;CozySummit Virtual is organized by CNCF with the support of CozyStack maintainers and project sponsors.&lt;/p&gt;
&lt;p&gt;Suggested Session Topics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Taking on the Giants: How Local ISPs Can Compete with Hyperscalers Using Cozystack&lt;/li&gt;
&lt;li&gt;How Companies Can Avoid Being Locked in Public Clouds&lt;/li&gt;
&lt;li&gt;Contributing to Cozystack&lt;/li&gt;
&lt;li&gt;Powering AI: Running Demanding Workloads on Cozystack (VMs &amp;amp; K8s)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;👉 
&lt;a href="https://community.cncf.io/events/details/cncf-virtual-project-events-hosted-by-cncf-presents-cozysummit-virtual-2025/" target="_blank"&gt;Conference website&lt;/a&gt;&lt;br&gt;
👉 
&lt;a href="https://sessionize.com/CozySummit_2025" target="_blank"&gt;CFP&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Cozystack v0.34:</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/cozystack-v0-34/</link><pubDate>Mon, 04 Aug 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/08/cozystack-v0-34/</guid><description>&lt;h3 id="cozystack-v034-k8s-version-selection-and-pvc-snapshots-in-tenants-windows-and-routeros-on-vms-vpa-forvpa"&gt;Cozystack v0.34: K8s Version Selection and PVC Snapshots in Tenants, Windows and RouterOS on VMs, VPA for VPA&lt;/h3&gt;
&lt;p&gt;Our maintainers and contributors never stand still, and we’re already ready to present the next stable release of Cozystack v0.34. In this release, we continued working on expanding the functionality of the Vertical Pod Autoscaler, improving tenant clusters, enhancing the backup system, and moving toward platform decomposition.&lt;/p&gt;
&lt;p&gt;Below, we’ll cover the most important changes, and you can find the full list of fixes in the links at the end of the announcement.&lt;/p&gt;</description></item><item><title>Cozystack v0.31–0.33</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/07/cozystack-v0-31-0-33/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/07/cozystack-v0-31-0-33/</guid><description>&lt;h3 id="cozystack-v031033-releases-air-gap-backup-system-ai-workloads-in-k8s-replace-for-helm-and-otherfeatures"&gt;Cozystack v0.31–0.33 Releases: Air Gap, Backup System, AI workloads in K8s, replace for Helm and other features&lt;/h3&gt;
&lt;p&gt;It’s been a while since we last covered Cozystack’s updates — time to fix that! We’re thrilled to showcase a wealth of new features and key improvements in this roundup. For brevity, we’ve curated only the most significant changes here (you’ll find all fixes and enhancements in the release notes, linked throughout the article).&lt;/p&gt;</description></item><item><title>Cozyhr: How We Simplified Local Development with Helm and Flux</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/cozyhr-how-we-simplified-local-development-with-helm-and-flux/</link><pubDate>Wed, 18 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/cozyhr-how-we-simplified-local-development-with-helm-and-flux/</guid><description>&lt;h3 id="cozyhr-how-we-simplified-local-development-with-helm-andflux"&gt;Cozyhr: How We Simplified Local Development with Helm and Flux&lt;/h3&gt;
&lt;p&gt;Hi! I’m Andrei Kvapil CEO of Ænix and developer of Cozystack, an open source platform and framework for building cloud infrastructure. In this article I’ll walk through the way we deliver applications to Kubernetes, explain why regular GitOps can be awkward in local development, an show how the new tool 
&lt;a href="https://github.com/cozystack/cozyhr" target="_blank"&gt;cozyhr&lt;/a&gt; fixes those pain points. The article targets engineers who already know Helm and Flux.&lt;/p&gt;</description></item><item><title>Cozystack became a Certified Kubernetes Platform</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/cozystack-became-a-certified-kubernetes-platform/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/cozystack-became-a-certified-kubernetes-platform/</guid><description>&lt;h3 id="cozystack-became-a-certified-kubernetes-platform"&gt;Cozystack became a Certified Kubernetes Platform&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*etD6GwSg0enlbXD_ByPeNg.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;We’re proud to announce: Cozystack has achieved Certified Kubernetes Platform status. Thanks to our community and especially to our good friends from Hidora.&lt;/p&gt;</description></item><item><title>The Evolution of Virtualization Platforms: The Rise of Managed Services and Local Providers’ Edge…</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/the-evolution-of-virtualization-platforms-the-rise-of-managed-services-and-local-providers-edge/</link><pubDate>Wed, 04 Jun 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/06/the-evolution-of-virtualization-platforms-the-rise-of-managed-services-and-local-providers-edge/</guid><description>&lt;h3 id="the-evolution-of-virtualization-platforms-the-rise-of-managed-services-and-local-providers-edge-against-hyperscalers"&gt;The Evolution of Virtualization Platforms: The Rise of Managed Services and Local Providers’ Edge Against Hyperscalers&lt;/h3&gt;
&lt;p&gt;Hello everyone! I’m Andrey Kvapil, CEO of Ænix and developer of Cozystack, an open-source platform and framework for building cloud infrastructure. In this article, I want to share my perspective on how modern cloud patterns have transformed infrastructure approaches, the evolving role of service providers and public clouds in this landscape, and most importantly, how virtualization’s purpose has fundamentally changed in today’s infrastructure stack.&lt;/p&gt;</description></item><item><title>Cozystack Recognized in CNCF's CNAI Landscape!</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/05/cozystack-recognized-in-cncf-s-cnai-landscape/</link><pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/05/cozystack-recognized-in-cncf-s-cnai-landscape/</guid><description>&lt;h3 id="-cozystack-recognized-in-cncfs-cnai-landscape"&gt;🚀 Cozystack Recognized in CNCF’s CNAI Landscape!&lt;/h3&gt;
&lt;p&gt;We’re thrilled to share that Cozystack has been added to the Cloud Native AI (CNAI) Landscape by the Cloud Native Computing Foundation (CNCF)! This is a significant validation of our work in bridging cloud-native infrastructure with AI workloads.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*JqeVSHv3Vzld4DhSKOA5GQ.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Why This Matters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Industry Recognition: Being featured alongside major players confirms Cozystack’s role in shaping the future of AI infrastructure&lt;/li&gt;
&lt;li&gt;Technical Validation: Highlights our capabilities in GPU provisioning, scalable Kubernetes deployments, and platform engineering for AI/ML&lt;/li&gt;
&lt;li&gt;Ecosystem Growth: Strengthens our position in the open source cloud-native community&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A huge thank you to our contributors, users, and the CNCF community for making this possible! This is just the beginning of our journey to simplify AI infrastructure deployment.&lt;/p&gt;</description></item><item><title>A Simple Way to Install Talos Linux on Any Machine, with Any Provider</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/a-simple-way-to-install-talos-linux-on-any-machine-with-any-provider/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/a-simple-way-to-install-talos-linux-on-any-machine-with-any-provider/</guid><description>&lt;h3 id="a-simple-way-to-install-talos-linux-on-any-machine-with-anyprovider"&gt;A Simple Way to Install Talos Linux on Any Machine, with Any Provider&lt;/h3&gt;
&lt;p&gt;Talos Linux is a specialized operating system designed for running Kubernetes. In my opinion, it does that task better than others. First and foremost it handles full lifecycle management for Kubernetes control-plane components.&lt;/p&gt;
&lt;p&gt;On the other hand, Talos Linux focuses on security, minimizing the user’s ability to influence the system. A distinctive feature of this OS is the near-complete absence of executables, including the absence of a shell and the inability to log in via SSH. All configuration of Talos Linux is done through a Kubernetes-like API.&lt;/p&gt;</description></item><item><title>Cozystack Now Offers GPU Passthrough for AI/ML Virtual Machines</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/cozystack-now-offers-gpu-passthrough-for-ai-ml-virtual-machines/</link><pubDate>Fri, 18 Apr 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/cozystack-now-offers-gpu-passthrough-for-ai-ml-virtual-machines/</guid><description>&lt;h3 id="cozystack-now-offers-gpu-passthrough-for-aiml-virtualmachines"&gt;&lt;strong&gt;Cozystack Now Offers GPU Passthrough for AI/ML Virtual Machines&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;The open-source cloud platform has introduced direct GPU passthrough in its latest release, enabling users to accelerate AI, machine learning, and other compute-intensive workloads on virtual machines. By leveraging physical GPUs from host nodes, teams can now deploy open-source AI stacks without proprietary cloud dependencies.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*Z4hqqFhepCzEwJn7WZpJQw.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Upcoming features include vGPU resource partitioning and a Kubernetes-native GPU operator for multi-tenant clusters.&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://cozystack.io/docs/operations/virtualization/gpu" target="_blank"&gt;Read the documentation →&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Updates to the Open-Source Platform Cozystack 0.24–0.29:</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/updates-to-the-open-source-platform-cozystack-0-24-0-29/</link><pubDate>Thu, 10 Apr 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/04/updates-to-the-open-source-platform-cozystack-0-24-0-29/</guid><description>&lt;h3 id="updates-to-the-open-source-platform-cozystack-024029-pxe-machine-provisioning-inter-datacenter-rtt-monitoring-and-dedicated-ip-addresses-forvms"&gt;Updates to the Open-Source Platform Cozystack 0.24–0.29: PXE Machine Provisioning, Inter-Datacenter RTT Monitoring, and Dedicated IP Addresses for VMs&lt;/h3&gt;
&lt;p&gt;We haven’t shared much about Cozystack’s new features lately, even though we’ve released six new versions over the past month and a half: 0.24, 0.25, 0.26, 0.27, 0.28, and 0.29. Let’s take a closer look at the changes, starting from the latest release and going back to version 0.24.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is Cozystack?&lt;/p&gt;</description></item><item><title>Cozystack Becomes a CNCF Sandbox Project</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/03/cozystack-becomes-a-cncf-sandbox-project/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/03/cozystack-becomes-a-cncf-sandbox-project/</guid><description>&lt;h3 id="cozystack-becomes-a-cncf-sandboxproject"&gt;Cozystack Becomes a CNCF Sandbox Project&lt;/h3&gt;
&lt;p&gt;On February 28, members of the CNCF Technical Oversight Committee 
&lt;a href="https://github.com/cncf/sandbox/issues/322" target="_blank"&gt;completed their voting&lt;/a&gt; and unanimously accepted 
&lt;a href="https://cozystack.io" target="_blank"&gt;Cozystack&lt;/a&gt;, a platform for building private clouds and PaaS, into the CNCF Sandbox. The project is currently undergoing the 
&lt;a href="https://github.com/cncf/sandbox/issues/351" target="_blank"&gt;onboarding process&lt;/a&gt;. Let’s break down what this means in practice, what Cozystack is, and what the CNCF Sandbox represents.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*9fPSDNGw-DholkjtUfkSMQ.png" alt=""&gt;&lt;/p&gt;
&lt;h3 id="what-is-cozystack"&gt;What is Cozystack?&lt;/h3&gt;
&lt;p&gt;Cozystack is an open-source platform that enables the creation of a bare metal cloud for deploying proven cloud-native and open-source tools: managed Kubernetes clusters, databases as a service, applications as a service, and virtual machines based on KubeVirt (see the 
&lt;a href="https://cozystack.io/docs/components/" target="_blank"&gt;full list of components&lt;/a&gt;). Cozystack also provides a ready-made stack for observability and alerting based on Victoria Metrics, Victoria Logs, Grafana, and Alerta.&lt;/p&gt;</description></item><item><title>Cozystack v0.22 Release: telemetry, patched Talos v1.9.1, new entities Workload and WorkloadMonitor</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2025/01/cozystack-v0-22-release-telemetry-patched-talos-v1-9-1-new-entities-workload-and-workloadmonitor/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2025/01/cozystack-v0-22-release-telemetry-patched-talos-v1-9-1-new-entities-workload-and-workloadmonitor/</guid><description>&lt;h3 id="cozystack-v022-release-telemetry-patched-talos-v191-new-entities-workload-and-workloadmonitor"&gt;Cozystack v0.22 Release: telemetry, patched Talos v1.9.1, new entities Workload and WorkloadMonitor&lt;/h3&gt;
&lt;h3 id="main-changes"&gt;Main changes&lt;/h3&gt;
&lt;p&gt;In the latest release was added cozystack-controller and new entities: Workload and WorkloadMonitor, which allow monitoring the state of pods managed by operators and evaluating the service level according to predefined rules.&lt;/p&gt;
&lt;p&gt;Since different applications in Cozystack are managed by different operators, we decided to create a unified format for displaying the status of each service.&lt;/p&gt;</description></item><item><title>Introducing the Pre-New Year Release of open source platform Cozystack v0.21:</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/introducing-the-pre-new-year-release-of-open-source-platform-cozystack-v0-21/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/introducing-the-pre-new-year-release-of-open-source-platform-cozystack-v0-21/</guid><description>&lt;h3 id="introducing-the-pre-new-year-release-of-open-source-platform-cozystack-v021-new-user-dashboard-talos-linuxetc"&gt;Introducing the Pre-New Year Release of open source platform Cozystack v0.21: New User Dashboard, Talos Linux, etc.&lt;/h3&gt;
&lt;p&gt;The dashboard now works directly with the Cozystack API instead of relying on FluxCD resources. This enhancement enables the platform to provide a user-friendly graphical interface while integrating with Kubernetes’ standard RBAC model for managing deployment permissions.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*O0OQMDGX0oHS2AXm0zDg4g.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Each tenant now includes four default groups:&lt;br&gt;
&lt;code&gt;view&lt;/code&gt;: Read-only access.&lt;br&gt;
&lt;code&gt;use&lt;/code&gt;: Access to virtual machines and service usage.&lt;br&gt;
&lt;code&gt;admin&lt;/code&gt;: Ability to deploy core services (MySQL, PostgreSQL, Redis, Kubernetes, virtual machines, etc.).&lt;br&gt;
&lt;code&gt;super-admin&lt;/code&gt;: Manage child tenants and deploy service-level components (monitoring, etcd, ingress, seaweedfs, etc.).&lt;/p&gt;</description></item><item><title>Cozystack v0.20 Release: Terraform, Keycloak, and Stability &amp; Security Improvements</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/cozystack-v0-20-release-terraform-keycloak-and-stability--security-improvements/</link><pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/cozystack-v0-20-release-terraform-keycloak-and-stability--security-improvements/</guid><description>&lt;h3 id="cozystack-v020-release-terraform-keycloak-and-stability--security-improvements"&gt;Cozystack v0.20 Release: Terraform, Keycloak, and Stability &amp;amp; Security Improvements&lt;/h3&gt;
&lt;p&gt;
&lt;a href="https://github.com/aenix-io/cozystack/releases/tag/v0.20.0" target="_blank"&gt;This release&lt;/a&gt; focuses on enhancing stability while addressing a significant number of bugs and introducing new features.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*26UVJiADy26X-QtmslpZqw.png" alt=""&gt;&lt;/p&gt;
&lt;h3 id="whats-new"&gt;What’s new&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Kube-OVN updated to the latest stable release.&lt;/li&gt;
&lt;li&gt;Improved logic in KubeVirt CCM, delivering more reliable load balancers for tenant Kubernetes clusters.&lt;/li&gt;
&lt;li&gt;Resolved user permissions issues in OIDC.&lt;/li&gt;
&lt;li&gt;Added a dedicated cluster admin group.&lt;/li&gt;
&lt;li&gt;Fixed alerts and dashboards in Grafana.&lt;/li&gt;
&lt;li&gt;NATs now supports enabling JetStream and passing configuration files.&lt;/li&gt;
&lt;li&gt;Introduced Terraform support for interacting with our API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In 
&lt;a href="https://github.com/aenix-io/cozystack/releases/tag/v0.19.0" target="_blank"&gt;v0.19&lt;/a&gt;, we introduced OIDC support, along with the integration of Keycloak. However, due to the need for stability improvements, we did not announce v0.19 separately. With this release, Keycloak is bundled with Cozystack, providing seamless OIDC support.&lt;/p&gt;</description></item><item><title>How we built a dynamic Kubernetes API Server for the API Aggregation Layer in Cozystack</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/how-we-built-a-dynamic-kubernetes-api-server-for-the-api-aggregation-layer-in-cozystack/</link><pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/12/how-we-built-a-dynamic-kubernetes-api-server-for-the-api-aggregation-layer-in-cozystack/</guid><description>&lt;h3 id="how-we-built-a-dynamic-kubernetes-api-server-for-the-api-aggregation-layer-in-cozystack"&gt;How we built a dynamic Kubernetes API Server for the API Aggregation Layer in Cozystack&lt;/h3&gt;
&lt;p&gt;Hi there! I’m Andrei Kvapil, but you might know me as 
&lt;a href="https://github.com/kvaps" target="_blank"&gt;@kvaps&lt;/a&gt; in communities dedicated to Kubernetes and cloud-native tools. In this article, I want to share how we implemented our own extension api-server in the open-source PaaS platform, Cozystack.&lt;/p&gt;
&lt;p&gt;Kubernetes truly amazes me with its powerful extensibility features. You’re probably already familiar with the 
&lt;a href="https://kubernetes.io/docs/concepts/architecture/controller/" target="_blank"&gt;controller&lt;/a&gt; concept and frameworks like 
&lt;a href="https://book.kubebuilder.io/" target="_blank"&gt;kubebuilder&lt;/a&gt; and 
&lt;a href="https://sdk.operatorframework.io/" target="_blank"&gt;operator-sdk&lt;/a&gt; that help you implement it. In a nutshell, they allow you to extend your Kubernetes cluster by defining custom resources (CRDs) and writing additional controllers that handle your business logic for reconciling and managing these kinds of resources. This approach is well-documented, with a wealth of information available online on how to develop your own operators.&lt;/p&gt;</description></item><item><title>Cozystack v0.18</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/11/cozystack-v0-18/</link><pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/11/cozystack-v0-18/</guid><description>&lt;h3 id="cozystack-v018-release-public-api-server-metrics-and-logs-from-tenant-clusters-and-other-improvements"&gt;Cozystack v0.18 Release: Public API Server, Metrics and Logs from Tenant Clusters, and Other Improvements&lt;/h3&gt;
&lt;h3 id="-public-api-for-cozystack"&gt;🔥 Public API for Cozystack&lt;/h3&gt;
&lt;p&gt;This is the biggest and most anticipated update for us. Cozystack now includes its own Kubernetes API server, which automatically translates all requests to custom resources into HelmReleases.&lt;/p&gt;
&lt;p&gt;This means that platform administrators can now provide users with granular access to specific resources (Kuberneteses, VirtualMachines, Postgresses, etc.). Additionally, the API server can be easily extended with additional components by simply listing them in a ConfigMap — no recompilation required.&lt;/p&gt;</description></item><item><title>What’s New in Cozystack v0.17</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/what-s-new-in-cozystack-v0-17/</link><pubDate>Thu, 24 Oct 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/what-s-new-in-cozystack-v0-17/</guid><description>&lt;h3 id="whats-new-in-cozystack-v017-windows-on-vms-vm-image-upload-app-and-web-interface-for-s3buckets"&gt;What’s New in Cozystack v0.17: Windows on VMs, VM image upload app, and web interface for S3 buckets&lt;/h3&gt;
&lt;p&gt;This update mainly focuses on enhancing the platform’s virtualization features, while also introducing several other improvements.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Today marks the release of an updated version of the free PaaS system, Cozystack. Built on Kubernetes, Cozystack consists of numerous open technologies and provides all the essential tools for running managed services on your own hardware. The platform is distributed under the Apache 2.0 license.&lt;/p&gt;</description></item><item><title>Cozystack on Hacktoberfest: become a part of the global IT event!</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/cozystack-on-hacktoberfest-become-a-part-of-the-global-it-event/</link><pubDate>Fri, 04 Oct 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/cozystack-on-hacktoberfest-become-a-part-of-the-global-it-event/</guid><description>&lt;h3 id="cozystack-on-hacktoberfest-become-a-part-of-the-global-itevent"&gt;Cozystack on Hacktoberfest: become a part of the global IT event!&lt;/h3&gt;
&lt;p&gt;We’ve decided to participate in Hacktoberfest. If you’re participating too, come visit our GitHub and check out the amazing issues. And if something seems unclear, follow the links below; you’ll find all the answers there :)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*0Xw0OKj1Ldx9MLJqOWX7CQ.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;🫡 Rules and details 
&lt;a href="https://hacktoberfest.com" target="_blank"&gt;https://hacktoberfest.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;😜 Cozystack GitHub 
&lt;a href="https://github.com/aenix-io/cozystack" target="_blank"&gt;https://github.com/aenix-io/cozystack&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;❤️ Cozystack community for all who wants to be a part of Hacktoberfest and asking questions 
&lt;a href="https://t.me/cozystack" target="_blank"&gt;https://t.me/cozystack&lt;/a&gt;&lt;/p&gt;</description></item><item><title>The Open Source Platform Cozystack Version 0.16.0</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/the-open-source-platform-cozystack-version-0-16-0/</link><pubDate>Thu, 03 Oct 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/10/the-open-source-platform-cozystack-version-0-16-0/</guid><description>&lt;h3 id="the-open-source-platform-cozystack-version-0160-released-alert-system-with-telegram-notifications-and-more-improvements"&gt;The Open Source Platform Cozystack Version 0.16.0 Released: Alert System with Telegram Notifications and More Improvements&lt;/h3&gt;
&lt;p&gt;Key Highlights Cozystack now features an alert system based on the open-source tool 
&lt;a href="https://alerta.io/" target="_blank"&gt;Alerta&lt;/a&gt;, with the ability to configure notifications directly to Telegram. Additionally, you can receive alerts from k8s-prometheus stack, all Grafana dashboards have been updated, as well as Grafana itself and the grafana-operator.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*jOAv-G1LLJy84HwQHpI0Pw.png" alt=""&gt;
Alerta interface&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cozystack is an Open Source platform designed for building cloud infrastructure on bare metal, enabling rapid deployment of managed Kubernetes, database as a service, applications as a service, and virtual machines based on KubeVirt. Within the platform, you can deploy services like Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics, and others with just a single click.&lt;/p&gt;</description></item><item><title>Recent Changes in the Cozystack Open Source Platform: Opencost, Log Collection System, Bridge…</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/09/recent-changes-in-the-cozystack-open-source-platform-opencost-log-collection-system-bridge/</link><pubDate>Thu, 26 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/09/recent-changes-in-the-cozystack-open-source-platform-opencost-log-collection-system-bridge/</guid><description>&lt;h3 id="recent-changes-in-the-cozystack-open-source-platform-opencost-log-collection-system-bridge-binding-in-virtualmachines"&gt;&lt;strong&gt;Recent Changes in the Cozystack Open Source Platform: Opencost, Log Collection System, Bridge Binding in Virtual Machines&lt;/strong&gt;&lt;/h3&gt;
&lt;h3 id="over-the-past-couple-of-months-we-have-been-actively-developing-our-cozystack-open-source-platform-and-today-were-presenting-the-improvements-introduced-from-v012-tov015"&gt;Over the past couple of months, we have been actively developing our Cozystack Open Source platform, and today we’re presenting the improvements introduced from v0.12 to v0.15.&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*ZE25TSWfLE46qz7vy5xQGQ.jpeg" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Cozystack is an Open Source platform that enables building a cloud on bare metal for rapid deployment of managed Kubernetes, database as a service, applications as a service, and virtual machines based on KubeVirt. Within the platform, you can deploy Kafka, FerretDB, PostgreSQL, Cilium, Grafana, Victoria Metrics, and&lt;/em&gt; 
&lt;a href="https://cozystack.io/docs/components/" target="_blank"&gt;other services&lt;/a&gt; &lt;em&gt;with a single click.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Cozystack has officially been included in the CNCF Landscape</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/09/cozystack-has-officially-been-included-in-the-cncf-landscape/</link><pubDate>Wed, 25 Sep 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/09/cozystack-has-officially-been-included-in-the-cncf-landscape/</guid><description>&lt;h3 id="cozystack-has-officially-been-included-in-the-cncf-landscape"&gt;Cozystack has officially been included in the CNCF Landscape&lt;/h3&gt;
&lt;p&gt;You can now 
&lt;a href="https://landscape.cncf.io/?item=platform--certified-kubernetes-installer--cozystack" target="_blank"&gt;find the Cozystack&lt;/a&gt; open source platform in the CNCF Landscape categories of &lt;em&gt;Platform&lt;/em&gt; and &lt;em&gt;Certified Kubernetes — Installed&lt;/em&gt;. Despite being a relatively young platform, Cozystack is experiencing rapid growth, and an active community of developers and users has already formed around it.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*SteyePbFZNEeTIh3JWgiOQ.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Weekly open meetings are held to discuss the platform’s development, and the 
&lt;a href="https://t.me/cozystack" target="_blank"&gt;Telegram chat&lt;/a&gt; is constantly buzzing with discussions and questions. Our speakers are regularly invited to industry conferences to share their experiences with integrating and utilizing various Open Source components within the platform. For example, you can check out a 
&lt;a href="https://www.youtube.com/watch?v=s79VqXu-eG4" target="_blank"&gt;recent video&lt;/a&gt; from the &lt;em&gt;Talos Linux Install Fest&lt;/em&gt; and a 
&lt;a href="https://kubernetes.io/blog/2024/04/05/diy-create-your-own-cloud-with-kubernetes-part-1/" target="_blank"&gt;series of articles&lt;/a&gt; on building your own cloud in the official Kubernetes blog.&lt;/p&gt;</description></item><item><title>Installing a Kubernetes Cluster Managed by Cozystack: A Detailed Guide by Gohost and Ænix</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/08/installing-a-kubernetes-cluster-managed-by-cozystack-a-detailed-guide-by-gohost-and-nix/</link><pubDate>Fri, 16 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/08/installing-a-kubernetes-cluster-managed-by-cozystack-a-detailed-guide-by-gohost-and-nix/</guid><description>&lt;h3 id="installing-a-kubernetes-cluster-managed-by-cozystack-a-detailed-guide-by-gohost-andænix"&gt;&lt;strong&gt;Installing a Kubernetes Cluster Managed by Cozystack: A Detailed Guide by Gohost and Ænix&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;This article was written by Vladislav Karabasov from Kazakhstani hosting company 
&lt;a href="https://gohost.kz" target="_blank"&gt;gohost&lt;/a&gt;, therefore the narrative will be conducted in the first person.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*ZLyJcdvbsPSJnErGKwlJ0g.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;At the time of my transition to gohost.kz, the company had already been operating in the Kazakhstan market for 15 years, providing clients with a standard set of services: VPS/VDC, IaaS, virtual hosting, etc. However, clients developed new needs, so I was tasked with developing the direction of Kubernetes as a Service.&lt;/p&gt;</description></item><item><title>Cozystack v0.11</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/08/cozystack-v0-11/</link><pubDate>Thu, 15 Aug 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/08/cozystack-v0-11/</guid><description>&lt;h3 id="cozystack-v011-open-source-platform-has-been-released-s3-improved-tenant-isolation-ui-enhancements-and-otherfeatures"&gt;Cozystack v0.11 Open Source platform has been released: S3, improved tenant isolation, UI enhancements, and other features&lt;/h3&gt;
&lt;p&gt;The 
&lt;a href="https://github.com/aenix-io/cozystack/releases/tag/v0.11.0" target="_blank"&gt;Cozystack v0.11 release&lt;/a&gt; is now available for download, installation, or updating current installations.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/1*YkBDu2xMuY2R4cZcCwh5-Q.jpeg" alt=""&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key changes:&lt;/strong&gt;&lt;br&gt;
 — &lt;strong&gt;Added S3 support.&lt;/strong&gt; Implemented the basic SeaweedFS functionality in Cozystack. Developed a Kubernetes-COSI driver for automatic S3 bucket provisioning. Added support for automatic volume resizing in the SeaweedFS chart.&lt;br&gt;
 — &lt;strong&gt;Network isolation between tenants.&lt;/strong&gt; Significant work was done to enhance network isolation between tenants, bugs were fixed, and network policies were completely revamped.&lt;br&gt;
 — &lt;strong&gt;UI update.&lt;/strong&gt; All service icons have been replaced. The dashboard has been redesigned to display only the necessary information in ResourceView. There is now an option to specify which htcehcs to display by listing them in a special role -dashboard-resources.&lt;br&gt;
 — &lt;strong&gt;Added a&lt;/strong&gt; 
&lt;a href="https://cozystack.io/docs/development" target="_blank"&gt;&lt;strong&gt;Development Guide&lt;/strong&gt; section&lt;/a&gt; to the documentation and updated 
&lt;a href="https://cozystack.io/docs/talos/installation/hetzner" target="_blank"&gt;the installation guide for Hetzner&lt;/a&gt;.&lt;br&gt;
 — &lt;strong&gt;Cilium updated to v1.16&lt;/strong&gt;, which includes 
&lt;a href="https://github.com/cilium/cilium/pull/32730" target="_blank"&gt;our patch&lt;/a&gt; for automatic device detection.&lt;br&gt;
 — &lt;strong&gt;Resolved garbage collector issues&lt;/strong&gt; in tenant Kubernetes clusters.&lt;br&gt;
 — &lt;strong&gt;Fixed issues&lt;/strong&gt; with forwarding HTTP and HTTPS traffic using ingress in tenant Kubernetes clusters.&lt;br&gt;
 — &lt;strong&gt;Added snapshot-controller&lt;/strong&gt; and object-storage-controller.&lt;br&gt;
 — &lt;strong&gt;LINSTOR updated to v1.28&lt;/strong&gt;.&lt;br&gt;
 — &lt;strong&gt;Talos Linux updated to v1.7.6&lt;/strong&gt;.&lt;br&gt;
 — &lt;strong&gt;Kube-OVN&lt;/strong&gt; now built from the stable base.&lt;br&gt;
 — &lt;strong&gt;Refined the logic for substituting image digests&lt;/strong&gt; in values, resulting in fewer modifications to the original charts.&lt;/p&gt;</description></item><item><title>Introducing Talm, a configuration manager for Talos Linux</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/05/introducing-talm-a-configuration-manager-for-talos-linux/</link><pubDate>Wed, 29 May 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/05/introducing-talm-a-configuration-manager-for-talos-linux/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Andrei Kvapil (Ænix)&lt;/p&gt;
&lt;p&gt;The Cozystack project has released Talm, a configuration manager for Talos Linux&lt;/p&gt;
&lt;p&gt;The developers of the open-source PaaS platform 
&lt;a href="https://cozystack.io/" target="_blank"&gt;Cozystack&lt;/a&gt; have prepared the 
&lt;a href="https://github.com/cozystack/talm" target="_blank"&gt;Talm&lt;/a&gt; project, aimed at simplifying the configuration of bare-metal servers for 
&lt;a href="https://www.talos.dev/" target="_blank"&gt;Talos Linux&lt;/a&gt;, an operating system designed to run Kubernetes with a Kubernetes-like API and configured via a single Yaml manifest. Although Talm was created to describe the declarative installation of Cozystack, it is not tied specifically to this platform and can be used to manage any Talos Linux configurations. The project is developed under the MPL license.&lt;/p&gt;</description></item><item><title>DIY: Create Your Own Cloud with Kubernetes (Part 3)</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-3/</link><pubDate>Fri, 05 Apr 2024 07:40:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-3/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Andrei Kvapil (Ænix)&lt;/p&gt;
&lt;p&gt;Approaching the most interesting phase, this article delves into running Kubernetes within
Kubernetes. Technologies such as Kamaji and Cluster API are highlighted, along with their
integration with KubeVirt.&lt;/p&gt;
&lt;p&gt;Previous discussions have covered

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/05/diy-create-your-own-cloud-with-kubernetes-part-1/"&gt;preparing Kubernetes on bare metal&lt;/a&gt;
and

&lt;a href="https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/05/diy-create-your-own-cloud-with-kubernetes-part-2"&gt;how to turn Kubernetes into virtual machines management system&lt;/a&gt;.
This article concludes the series by explaining how, using all of the above, you can build a
full-fledged managed Kubernetes and run virtual Kubernetes clusters with just a click.&lt;/p&gt;</description></item><item><title>DIY: Create Your Own Cloud with Kubernetes (Part 2)</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-2/</link><pubDate>Fri, 05 Apr 2024 07:35:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-2/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Andrei Kvapil (Ænix)&lt;/p&gt;
&lt;p&gt;Continuing our series of posts on how to build your own cloud using just the Kubernetes ecosystem.
In the 
&lt;a href="https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/05/diy-create-your-own-cloud-with-kubernetes-part-1/"&gt;previous article&lt;/a&gt;, we
explained how we prepare a basic Kubernetes distribution based on Talos Linux and Flux CD.
In this article, we&amp;rsquo;ll show you a few various virtualization technologies in Kubernetes and prepare
everything need to run virtual machines in Kubernetes, primarily storage and networking.&lt;/p&gt;
&lt;p&gt;We will talk about technologies such as KubeVirt, LINSTOR, and Kube-OVN.&lt;/p&gt;</description></item><item><title>DIY: Create Your Own Cloud with Kubernetes (Part 1)</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-1/</link><pubDate>Fri, 05 Apr 2024 07:30:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/04/diy-create-your-own-cloud-with-kubernetes-part-1/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Andrei Kvapil (Ænix)&lt;/p&gt;
&lt;p&gt;At Ænix, we have a deep affection for Kubernetes and dream that all modern technologies will soon
start utilizing its remarkable patterns.&lt;/p&gt;
&lt;p&gt;Have you ever thought about building your own cloud? I bet you have. But is it possible to do this
using only modern technologies and approaches, without leaving the cozy Kubernetes ecosystem?
Our experience in developing Cozystack required us to delve deeply into it.&lt;/p&gt;</description></item><item><title>Introducing Cozystack: A Free PaaS Platform based on Kubernetes</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2024/02/introducing-cozystack-a-free-paas-platform-based-on-kubernetes/</link><pubDate>Wed, 21 Feb 2024 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2024/02/introducing-cozystack-a-free-paas-platform-based-on-kubernetes/</guid><description>&lt;p&gt;&lt;strong&gt;Author&lt;/strong&gt;: Andrei Kvapil (Ænix)&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v0.1.0" target="_blank"&gt;Published&lt;/a&gt; the first release of the free PaaS platform 
&lt;a href="https://github.com/cozystack/cozystack/releases/tag/v0.1.0" target="_blank"&gt;Cozystack&lt;/a&gt;, based on Kubernetes.
The project positioned as a ready-to-use platform for hosting providers and a framework for building private and public clouds. The code is 
&lt;a href="https://github.com/cozystack/cozystack" target="_blank"&gt;available&lt;/a&gt; on GitHub and is distributed under the Apache-2.0 license.&lt;/p&gt;
&lt;p&gt;Cozystack is a system that is installed directly on servers and covers all aspects of preparing infrastructure for providing managed services. The installed platform allows to spawn tenant Kubernetes clusters, databases, and virtual machines on demand.&lt;/p&gt;</description></item><item><title>Configuring routing for MetalLB in L2 mode</title><link>https://deploy-preview-470--cozystack.netlify.app/blog/2020/05/configuring-routing-for-metallb-in-l2-mode/</link><pubDate>Thu, 14 May 2020 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/blog/2020/05/configuring-routing-for-metallb-in-l2-mode/</guid><description>&lt;h3 id="configuring-routing-for-metallb-in-l2mode"&gt;Configuring routing for MetalLB in L2 mode&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/800/0*wI1GLh4MrCzuwiwB.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Not so far ago, I was faced with a quite unusual task of configuring routing for MetalLB. All would be nothing, since MetalLB usually does not require any additional configuration from user side, but in our case there is a fairly large cluster with a quite simple network configuration.&lt;/p&gt;
&lt;p&gt;In this article I will show you how to configure source-based and policy-based routing for the external network on your cluster.&lt;/p&gt;</description></item><item><title>BootBox Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/bootbox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/bootbox/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/operations/services/_include/bootbox.md
source: https://github.com/cozystack/cozystack/blob/main/packages/extra/bootbox/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelistHTTP&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secure HTTP by enabling client networks whitelisting.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of client networks.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of physical machine instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].hostname&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hostname.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].arch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Architecture.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP address configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.address&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP address.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.gateway&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP gateway.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.netmask&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Netmask.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].leaseTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lease time.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].mac&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;MAC addresses.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].nameServers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name servers.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].timeServers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time servers.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].uefi&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;UEFI.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>BootBox Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/bootbox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/bootbox/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/operations/services/_include/bootbox.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/extra/bootbox/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelistHTTP&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Secure HTTP by enabling client networks whitelisting.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of client networks.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Configuration of physical machine instances.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].hostname&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hostname.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].arch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Architecture.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP address configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.address&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP address.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.gateway&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;IP gateway.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].ip.netmask&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Netmask.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].leaseTime&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Lease time.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].mac&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;MAC addresses.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].nameServers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Name servers.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].timeServers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Time servers.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;machines[i].uefi&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;UEFI.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>DevStats</title><link>https://deploy-preview-470--cozystack.netlify.app/oss-health/devstats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/oss-health/devstats/</guid><description/></item><item><title>Etcd Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/etcd/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/operations/services/_include/etcd.md
source: https://github.com/cozystack/cozystack/blob/main/packages/extra/etcd/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;4Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of etcd replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration for etcd.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1000m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;512Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Etcd Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/etcd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/etcd/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/operations/services/_include/etcd.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/extra/etcd/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;4Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of etcd replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Resource configuration for etcd.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;1000m&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;512Mi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Ingress-NGINX Controller Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/ingress/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/ingress/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/operations/services/_include/ingress.md
source: https://github.com/cozystack/cozystack/blob/main/packages/extra/ingress/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ingress-nginx replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of client networks.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cloudflareProxy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Restoring original visitor IPs when Cloudflare proxied is enabled.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each ingress-nginx replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Ingress-NGINX Controller Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/ingress/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/ingress/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/operations/services/_include/ingress.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/extra/ingress/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of ingress-nginx replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List of client networks.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cloudflareProxy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Restoring original visitor IPs when Cloudflare proxied is enabled.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;bool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration for each ingress-nginx replica. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;CPU available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Memory (RAM) available to each replica.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;micro&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>OpenSSF</title><link>https://deploy-preview-470--cozystack.netlify.app/oss-health/openssf/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/oss-health/openssf/</guid><description/></item><item><title>OSS Insight</title><link>https://deploy-preview-470--cozystack.netlify.app/oss-health/oss-insight/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/oss-health/oss-insight/</guid><description/></item><item><title>SeaweedFS Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/seaweedfs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v0/operations/services/seaweedfs/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v0/operations/services/_include/seaweedfs.md
source: https://github.com/cozystack/cozystack/blob/main/packages/extra/seaweedfs/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to access SeaweedFS externally (defaults to &amp;lsquo;s3&amp;rsquo; subdomain for the tenant host).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topology&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The topology of the SeaweedFS cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Simple&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicationFactor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Replication factor: number of replicas for each volume in the SeaweedFS cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="seaweedfs-components-configuration"&gt;SeaweedFS Components Configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Database configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of database replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Master service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of master replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filer service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of filer replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.grpcHost&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to expose or access the filer service externally.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.grpcPort&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The port used to access the filer service externally.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A list of IP addresses or CIDR ranges that are allowed to access the filer service.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Volume service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of volume replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A map of zones for MultiZone topology. Each zone can have its own number of replicas and size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas in the zone.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zone storage size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;S3 service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of S3 replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>SeaweedFS Service Reference</title><link>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/seaweedfs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-470--cozystack.netlify.app/docs/v1/operations/services/seaweedfs/</guid><description>&lt;!--
Autogenerated content. Don't edit this file directly; edit sources instead.
metadata: https://github.com/cozystack/website/blob/main/content/en/docs/v1/operations/services/_include/seaweedfs.md
source: https://github.com/cozystack/cozystack/blob/release-1.2.1/packages/extra/seaweedfs/README.md
--&gt;
&lt;h2 id="parameters"&gt;Parameters&lt;/h2&gt;
&lt;h3 id="common-parameters"&gt;Common parameters&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;host&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to access SeaweedFS externally (defaults to &amp;lsquo;s3&amp;rsquo; subdomain for the tenant host).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;topology&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The topology of the SeaweedFS cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Simple&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;replicationFactor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Replication factor: number of replicas for each volume in the SeaweedFS cluster.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="seaweedfs-components-configuration"&gt;SeaweedFS Components Configuration&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Name&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Value&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Database configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of database replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;db.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Master service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of master replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;master.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Filer service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of filer replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.grpcHost&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The hostname used to expose or access the filer service externally.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.grpcPort&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;The port used to access the filer service externally.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;443&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;filer.whitelist&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A list of IP addresses or CIDR ranges that are allowed to access the filer service.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;[]&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Volume service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of volume replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;10Gi&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store the data.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.diskType&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SeaweedFS disk type tag for the default volume servers (e.g., &amp;ldquo;hdd&amp;rdquo;, &amp;ldquo;ssd&amp;rdquo;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A map of zones for MultiZone topology. Each zone can have its own number of replicas and size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of replicas in the zone.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Zone storage size.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].dataCenter&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SeaweedFS data center name for this zone. Defaults to the zone name.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].nodeSelector&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;YAML nodeSelector for this zone (default: topology.kubernetes.io/zone: &lt;zoneName&gt;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;StorageClass used to store zone data. Defaults to volume.storageClass.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A map of storage pools for this zone. Each pool creates a separate Volume StatefulSet per zone.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].diskType&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SeaweedFS disk type tag (e.g., &amp;ldquo;ssd&amp;rdquo;, &amp;ldquo;hdd&amp;rdquo;, &amp;ldquo;nvme&amp;rdquo;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of volume replicas. Defaults to volume.replicas (Simple) or zone.replicas/volume.replicas (MultiZone).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size. Defaults to volume.size (Simple) or zone.size/volume.size (MultiZone).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kubernetes StorageClass for the pool. Defaults to volume.storageClass.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.zones[name].pools[name].resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted. Defaults to volume.resourcesPreset.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;A map of storage pools. Each pool creates a separate Volume StatefulSet with its own disk type.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;map[string]object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].diskType&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;SeaweedFS disk type tag (e.g., &amp;ldquo;ssd&amp;rdquo;, &amp;ldquo;hdd&amp;rdquo;, &amp;ldquo;nvme&amp;rdquo;).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of volume replicas. Defaults to volume.replicas (Simple) or zone.replicas/volume.replicas (MultiZone).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].size&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Persistent Volume size. Defaults to volume.size (Simple) or zone.size/volume.size (MultiZone).&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].storageClass&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Kubernetes StorageClass for the pool. Defaults to volume.storageClass.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;volume.pools[name].resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted. Defaults to volume.resourcesPreset.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;S3 service configuration.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.replicas&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of S3 replicas.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;int&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit CPU and memory configuration. When omitted, the preset defined in &lt;code&gt;resourcesPreset&lt;/code&gt; is applied.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources.cpu&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of CPU cores allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resources.memory&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Amount of memory allocated.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;quantity&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;s3.resourcesPreset&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default sizing preset used when &lt;code&gt;resources&lt;/code&gt; is omitted.&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;small&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>