From 4b9ec7f74d71c0b61af2aacd4fbd3daa68117b1d Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:46:39 -0300 Subject: [PATCH 01/16] docs(project): relocate Manifests + Values under project/workload/ --- content/docs/en/cli.mdx | 2 +- .../docs/en/project/chart/extra_templates.mdx | 2 +- content/docs/en/project/chart/index.mdx | 8 ++++---- .../en/project/deployment/pending_changes.mdx | 2 +- .../docs/en/project/{ => workload}/manifests.mdx | 6 +++--- .../manifests/add-manifest-modal.png | Bin .../manifests/manifest-editor-preview.png | Bin .../manifests/manifest-editor-yaml.png | Bin .../manifests/project-manifests-explorer.png | Bin .../manifests/project-shared-bucket.png | Bin .../manifests/workload-advanced-manifests.png | Bin .../docs/en/project/{ => workload}/values.mdx | 6 +++--- .../values/project-global-values.png | Bin .../values/workload-effective-values.png | Bin .../values/workload-values-tab.png | Bin content/docs/es/cli.mdx | 2 +- .../docs/es/project/chart/extra_templates.mdx | 2 +- content/docs/es/project/chart/index.mdx | 8 ++++---- .../es/project/deployment/pending_changes.mdx | 2 +- .../docs/es/project/{ => workload}/manifests.mdx | 6 +++--- .../manifests/add-manifest-modal.png | Bin .../manifests/manifest-editor-preview.png | Bin .../manifests/manifest-editor-yaml.png | Bin .../manifests/project-manifests-explorer.png | Bin .../manifests/project-shared-bucket.png | Bin .../manifests/workload-advanced-manifests.png | Bin .../docs/es/project/{ => workload}/values.mdx | 6 +++--- .../values/project-global-values.png | Bin .../values/workload-effective-values.png | Bin .../values/workload-values-tab.png | Bin content/tutorials/en/sticky-sessions.mdx | 4 ++-- content/tutorials/es/sticky-sessions.mdx | 4 ++-- docusaurus.config.js | 11 +++++++++++ package.json | 1 + yarn.lock | 15 +++++++++++++++ 35 files changed, 57 insertions(+), 30 deletions(-) rename content/docs/en/project/{ => workload}/manifests.mdx (98%) rename content/docs/en/project/{ => workload}/manifests/add-manifest-modal.png (100%) rename content/docs/en/project/{ => workload}/manifests/manifest-editor-preview.png (100%) rename content/docs/en/project/{ => workload}/manifests/manifest-editor-yaml.png (100%) rename content/docs/en/project/{ => workload}/manifests/project-manifests-explorer.png (100%) rename content/docs/en/project/{ => workload}/manifests/project-shared-bucket.png (100%) rename content/docs/en/project/{ => workload}/manifests/workload-advanced-manifests.png (100%) rename content/docs/en/project/{ => workload}/values.mdx (93%) rename content/docs/en/project/{ => workload}/values/project-global-values.png (100%) rename content/docs/en/project/{ => workload}/values/workload-effective-values.png (100%) rename content/docs/en/project/{ => workload}/values/workload-values-tab.png (100%) rename content/docs/es/project/{ => workload}/manifests.mdx (98%) rename content/docs/es/project/{ => workload}/manifests/add-manifest-modal.png (100%) rename content/docs/es/project/{ => workload}/manifests/manifest-editor-preview.png (100%) rename content/docs/es/project/{ => workload}/manifests/manifest-editor-yaml.png (100%) rename content/docs/es/project/{ => workload}/manifests/project-manifests-explorer.png (100%) rename content/docs/es/project/{ => workload}/manifests/project-shared-bucket.png (100%) rename content/docs/es/project/{ => workload}/manifests/workload-advanced-manifests.png (100%) rename content/docs/es/project/{ => workload}/values.mdx (93%) rename content/docs/es/project/{ => workload}/values/project-global-values.png (100%) rename content/docs/es/project/{ => workload}/values/workload-effective-values.png (100%) rename content/docs/es/project/{ => workload}/values/workload-values-tab.png (100%) diff --git a/content/docs/en/cli.mdx b/content/docs/en/cli.mdx index 712c01763f..39267351ac 100644 --- a/content/docs/en/cli.mdx +++ b/content/docs/en/cli.mdx @@ -80,7 +80,7 @@ Here **project** and **environment** are the required arguments. User might add ### Injecting values on deploy -You can inject Helm values into a single deployment, on top of everything configured in the platform (see [Values](/docs/project/values) for the override levels): +You can inject Helm values into a single deployment, on top of everything configured in the platform (see [Values](/docs/project/workload/values) for the override levels): ```plain sleakops deploy -p myapp -e prod -f values.prod.yaml diff --git a/content/docs/en/project/chart/extra_templates.mdx b/content/docs/en/project/chart/extra_templates.mdx index acfe64739a..dffb3ee008 100644 --- a/content/docs/en/project/chart/extra_templates.mdx +++ b/content/docs/en/project/chart/extra_templates.mdx @@ -8,7 +8,7 @@ import { FiExternalLink } from "react-icons/fi"; # Extra Templates :::warning Deprecated in favor of Manifests -Extending templates & values is deprecated. To add or edit custom resources, use the Project's **Manifests** section instead — each resource becomes its own manifest, with validation, preview and per-Workload scoping. See the [Manifests documentation](/docs/project/manifests). Existing Extra Templates keep deploying as before until you migrate them. +Extending templates & values is deprecated. To add or edit custom resources, use the Project's **Manifests** section instead — each resource becomes its own manifest, with validation, preview and per-Workload scoping. See the [Manifests documentation](/docs/project/workload/manifests). Existing Extra Templates keep deploying as before until you migrate them. ::: Extra Templates enable you to deploy custom Kubernetes resources beyond SleakOps' built-in components. This powerful feature allows you to extend your project with specialized resources such as custom Ingresses, testing pods, or other Kubernetes objects tailored to your specific requirements. diff --git a/content/docs/en/project/chart/index.mdx b/content/docs/en/project/chart/index.mdx index 3dcd58202b..7082bae6d8 100644 --- a/content/docs/en/project/chart/index.mdx +++ b/content/docs/en/project/chart/index.mdx @@ -83,8 +83,8 @@ Values that apply across the entire Project: Yes. You can: - - Customize or add [**Manifests**](/docs/project/manifests) per Workload or shared across the Project - - Override [**Values**](/docs/project/values) at the project or workload level + - Customize or add [**Manifests**](/docs/project/workload/manifests) per Workload or shared across the Project + - Override [**Values**](/docs/project/workload/values) at the project or workload level - Add chart dependencies using [**Chart Dependencies**](/docs/project/chart/chart_dependencies), similar to [Helm Chart Dependencies ](https://helm.sh/docs/helm/helm_dependency/) @@ -93,7 +93,7 @@ Values that apply across the entire Project: ### Can I add a custom Ingress to my Project? Yes — add it as a manifest from the Workload's Advanced view or the project - bucket. See the [Manifests documentation](/docs/project/manifests). The legacy + bucket. See the [Manifests documentation](/docs/project/workload/manifests). The legacy [Extra Templates](/docs/project/chart/extra_templates) path still works but is deprecated. @@ -104,5 +104,5 @@ Values that apply across the entire Project: Yes. Open the Workload's **Advanced** view, click the manifest and edit its YAML — your copy is preserved and never overwritten by SleakOps. See - [Manifests](/docs/project/manifests). + [Manifests](/docs/project/workload/manifests). diff --git a/content/docs/en/project/deployment/pending_changes.mdx b/content/docs/en/project/deployment/pending_changes.mdx index 1d804f8cd1..71e7c7114a 100644 --- a/content/docs/en/project/deployment/pending_changes.mdx +++ b/content/docs/en/project/deployment/pending_changes.mdx @@ -6,7 +6,7 @@ import "react-medium-image-zoom/dist/styles.css"; # Pending Changes & Publishing -Not every change has to hit the cluster immediately. Whenever you save an edit with the **Deploy?** switch off — a Workload edit, a [manifest](/docs/project/manifests) customization, a [values](/docs/project/values) override, a Var Group update — SleakOps records it as a **pending change** instead of deploying it. Pending changes accumulate per environment until you review and publish them with one click. +Not every change has to hit the cluster immediately. Whenever you save an edit with the **Deploy?** switch off — a Workload edit, a [manifest](/docs/project/workload/manifests) customization, a [values](/docs/project/workload/values) override, a Var Group update — SleakOps records it as a **pending change** instead of deploying it. Pending changes accumulate per environment until you review and publish them with one click. ## How changes accumulate diff --git a/content/docs/en/project/manifests.mdx b/content/docs/en/project/workload/manifests.mdx similarity index 98% rename from content/docs/en/project/manifests.mdx rename to content/docs/en/project/workload/manifests.mdx index 2ad9ab57ed..f141abdd88 100644 --- a/content/docs/en/project/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 12 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; @@ -17,7 +17,7 @@ Manifests are being rolled out progressively. If you don't see the **Advanced** Manifests live in two places: -- **Per Workload** — open any Workload (WebService, Worker, CronJob or Hook) and switch the view toggle from **Form** to **Advanced**. The Advanced view has two tabs: **Manifests** (the graph of resources) and **Values** (see [Values](/docs/project/values)). +- **Per Workload** — open any Workload (WebService, Worker, CronJob or Hook) and switch the view toggle from **Form** to **Advanced**. The Advanced view has two tabs: **Manifests** (the graph of resources) and **Values** (see [Values](/docs/project/workload/values)). - **Per Project** — go to **Project → Settings → Chart Configuration**. The **Manifests** section lists every Workload and manifest in the Project, and manages the shared **project bucket**. The **Form** view is still the source of truth for your Workload's configuration: one submit updates every generated manifest. The **Advanced** view is where you inspect and customize what gets deployed. @@ -61,7 +61,7 @@ Click any node to open the manifest editor. The header shows the manifest's kind The **YAML** tab is where you edit the template. Two kinds of placeholders can appear in it: - `<< form >>` variables resolve **before Helm**, from the values of your Workload form (name, namespace, command, healthcheck, etc.). -- `{{ .Values }}` expressions are left for **Helm at deploy time** (replicas, resources, image tag — everything that comes from [Values](/docs/project/values)). +- `{{ .Values }}` expressions are left for **Helm at deploy time** (replicas, resources, image tag — everything that comes from [Values](/docs/project/workload/values)). The **Variables** panel on the right lists everything available: click an entry to insert it at the cursor, or drag it into the editor. diff --git a/content/docs/en/project/manifests/add-manifest-modal.png b/content/docs/en/project/workload/manifests/add-manifest-modal.png similarity index 100% rename from content/docs/en/project/manifests/add-manifest-modal.png rename to content/docs/en/project/workload/manifests/add-manifest-modal.png diff --git a/content/docs/en/project/manifests/manifest-editor-preview.png b/content/docs/en/project/workload/manifests/manifest-editor-preview.png similarity index 100% rename from content/docs/en/project/manifests/manifest-editor-preview.png rename to content/docs/en/project/workload/manifests/manifest-editor-preview.png diff --git a/content/docs/en/project/manifests/manifest-editor-yaml.png b/content/docs/en/project/workload/manifests/manifest-editor-yaml.png similarity index 100% rename from content/docs/en/project/manifests/manifest-editor-yaml.png rename to content/docs/en/project/workload/manifests/manifest-editor-yaml.png diff --git a/content/docs/en/project/manifests/project-manifests-explorer.png b/content/docs/en/project/workload/manifests/project-manifests-explorer.png similarity index 100% rename from content/docs/en/project/manifests/project-manifests-explorer.png rename to content/docs/en/project/workload/manifests/project-manifests-explorer.png diff --git a/content/docs/en/project/manifests/project-shared-bucket.png b/content/docs/en/project/workload/manifests/project-shared-bucket.png similarity index 100% rename from content/docs/en/project/manifests/project-shared-bucket.png rename to content/docs/en/project/workload/manifests/project-shared-bucket.png diff --git a/content/docs/en/project/manifests/workload-advanced-manifests.png b/content/docs/en/project/workload/manifests/workload-advanced-manifests.png similarity index 100% rename from content/docs/en/project/manifests/workload-advanced-manifests.png rename to content/docs/en/project/workload/manifests/workload-advanced-manifests.png diff --git a/content/docs/en/project/values.mdx b/content/docs/en/project/workload/values.mdx similarity index 93% rename from content/docs/en/project/values.mdx rename to content/docs/en/project/workload/values.mdx index a2f0ae0ca3..6723180941 100644 --- a/content/docs/en/project/values.mdx +++ b/content/docs/en/project/workload/values.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 13 +sidebar_position: 7 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; @@ -7,7 +7,7 @@ import { FiExternalLink } from "react-icons/fi"; # Values -Every deployment renders your Project's Helm chart with a **values tree**: replicas, resources, image tags, hosts, probes and everything else that parameterizes the [manifests](/docs/project/manifests). SleakOps generates those values for you, and lets you override them at three persistent levels — plus a fourth, ephemeral level at deploy time. +Every deployment renders your Project's Helm chart with a **values tree**: replicas, resources, image tags, hosts, probes and everything else that parameterizes the [manifests](/docs/project/workload/manifests). SleakOps generates those values for you, and lets you override them at three persistent levels — plus a fourth, ephemeral level at deploy time. ## The override levels @@ -57,7 +57,7 @@ In the example above, `resources.limits.memory` is generated as `1331Mi`, raised ## Project global values -Project-wide overrides live in **Project → Settings → Chart Configuration**, in the **Values** editor of the Extends Template & Values section. The deprecation notice shown on that section is about migrating free-form **templates** to [Manifests](/docs/project/manifests) — the Values editor remains the home of project globals. Nest the keys under the Workload's name (or under `global:` for chart-wide values): +Project-wide overrides live in **Project → Settings → Chart Configuration**, in the **Values** editor of the Extends Template & Values section. The deprecation notice shown on that section is about migrating free-form **templates** to [Manifests](/docs/project/workload/manifests) — the Values editor remains the home of project globals. Nest the keys under the Workload's name (or under `global:` for chart-wide values): Sí. Puedes: - - Personalizar o agregar [**Manifests**](/docs/project/manifests) por Workload o compartidos en el Project - - Sobreescribir [**Values**](/docs/project/values) a nivel Project o Workload + - Personalizar o agregar [**Manifests**](/docs/project/workload/manifests) por Workload o compartidos en el Project + - Sobreescribir [**Values**](/docs/project/workload/values) a nivel Project o Workload - Agregar dependencias de chart usando [**Chart Dependencies**](/docs/project/chart/chart_dependencies), similar a [Helm Chart Dependencies ](https://helm.sh/docs/helm/helm_dependency/) @@ -93,7 +93,7 @@ Valores que se aplican a todo el Proyecto: ### ¿Puedo agregar un Ingress personalizado a mi Proyecto? Sí — agrégalo como manifiesto desde la vista Advanced del Workload o desde el - project bucket. Ver la [documentación de Manifests](/docs/project/manifests). + project bucket. Ver la [documentación de Manifests](/docs/project/workload/manifests). El camino legacy de [Extra Templates](/docs/project/chart/extra_templates) sigue funcionando pero está deprecado. @@ -104,5 +104,5 @@ Valores que se aplican a todo el Proyecto: Sí. Abre la vista **Advanced** del Workload, haz clic en el manifiesto y edita su YAML — tu copia se conserva y SleakOps nunca la sobreescribe. Ver - [Manifests](/docs/project/manifests). + [Manifests](/docs/project/workload/manifests). diff --git a/content/docs/es/project/deployment/pending_changes.mdx b/content/docs/es/project/deployment/pending_changes.mdx index 187ca22276..53c20e2740 100644 --- a/content/docs/es/project/deployment/pending_changes.mdx +++ b/content/docs/es/project/deployment/pending_changes.mdx @@ -6,7 +6,7 @@ import "react-medium-image-zoom/dist/styles.css"; # Cambios Pendientes y Publicación -No todos los cambios tienen que llegar al cluster inmediatamente. Cada vez que guardas una edición con el switch **Deploy?** apagado — una edición de Workload, una personalización de [manifiestos](/docs/project/manifests), un override de [values](/docs/project/values), una actualización de Var Group — SleakOps la registra como un **cambio pendiente** en lugar de desplegarla. Los cambios pendientes se acumulan por entorno hasta que los revisas y publicas con un clic. +No todos los cambios tienen que llegar al cluster inmediatamente. Cada vez que guardas una edición con el switch **Deploy?** apagado — una edición de Workload, una personalización de [manifiestos](/docs/project/workload/manifests), un override de [values](/docs/project/workload/values), una actualización de Var Group — SleakOps la registra como un **cambio pendiente** en lugar de desplegarla. Los cambios pendientes se acumulan por entorno hasta que los revisas y publicas con un clic. ## Cómo se acumulan los cambios diff --git a/content/docs/es/project/manifests.mdx b/content/docs/es/project/workload/manifests.mdx similarity index 98% rename from content/docs/es/project/manifests.mdx rename to content/docs/es/project/workload/manifests.mdx index 5537505172..0cded420a7 100644 --- a/content/docs/es/project/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 12 +sidebar_position: 6 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; @@ -17,7 +17,7 @@ Manifests se está habilitando progresivamente. Si no ves el toggle **Advanced** Los manifiestos viven en dos lugares: -- **Por Workload** — abre cualquier Workload (WebService, Worker, CronJob o Hook) y cambia el toggle de vista de **Form** a **Advanced**. La vista Advanced tiene dos tabs: **Manifests** (el grafo de recursos) y **Values** (ver [Values](/docs/project/values)). +- **Por Workload** — abre cualquier Workload (WebService, Worker, CronJob o Hook) y cambia el toggle de vista de **Form** a **Advanced**. La vista Advanced tiene dos tabs: **Manifests** (el grafo de recursos) y **Values** (ver [Values](/docs/project/workload/values)). - **Por Project** — ve a **Project → Settings → Chart Configuration**. La sección **Manifests** lista todos los Workloads y manifiestos del Project, y administra el **project bucket** compartido. La vista **Form** sigue siendo la fuente de verdad de la configuración de tu Workload: un submit actualiza todos los manifiestos generados. La vista **Advanced** es donde inspeccionas y personalizas lo que se despliega. @@ -61,7 +61,7 @@ Haz clic en cualquier nodo para abrir el editor. El header muestra el kind del m El tab **YAML** es donde editas el template. Pueden aparecer dos tipos de placeholders: - Las variables `<< form >>` se resuelven **antes de Helm**, con los valores del formulario de tu Workload (nombre, namespace, command, healthcheck, etc.). -- Las expresiones `{{ .Values }}` quedan para **Helm en el momento del deploy** (replicas, resources, tag de imagen — todo lo que viene de [Values](/docs/project/values)). +- Las expresiones `{{ .Values }}` quedan para **Helm en el momento del deploy** (replicas, resources, tag de imagen — todo lo que viene de [Values](/docs/project/workload/values)). El panel **Variables** de la derecha lista todo lo disponible: haz clic en una entrada para insertarla en el cursor, o arrástrala al editor. diff --git a/content/docs/es/project/manifests/add-manifest-modal.png b/content/docs/es/project/workload/manifests/add-manifest-modal.png similarity index 100% rename from content/docs/es/project/manifests/add-manifest-modal.png rename to content/docs/es/project/workload/manifests/add-manifest-modal.png diff --git a/content/docs/es/project/manifests/manifest-editor-preview.png b/content/docs/es/project/workload/manifests/manifest-editor-preview.png similarity index 100% rename from content/docs/es/project/manifests/manifest-editor-preview.png rename to content/docs/es/project/workload/manifests/manifest-editor-preview.png diff --git a/content/docs/es/project/manifests/manifest-editor-yaml.png b/content/docs/es/project/workload/manifests/manifest-editor-yaml.png similarity index 100% rename from content/docs/es/project/manifests/manifest-editor-yaml.png rename to content/docs/es/project/workload/manifests/manifest-editor-yaml.png diff --git a/content/docs/es/project/manifests/project-manifests-explorer.png b/content/docs/es/project/workload/manifests/project-manifests-explorer.png similarity index 100% rename from content/docs/es/project/manifests/project-manifests-explorer.png rename to content/docs/es/project/workload/manifests/project-manifests-explorer.png diff --git a/content/docs/es/project/manifests/project-shared-bucket.png b/content/docs/es/project/workload/manifests/project-shared-bucket.png similarity index 100% rename from content/docs/es/project/manifests/project-shared-bucket.png rename to content/docs/es/project/workload/manifests/project-shared-bucket.png diff --git a/content/docs/es/project/manifests/workload-advanced-manifests.png b/content/docs/es/project/workload/manifests/workload-advanced-manifests.png similarity index 100% rename from content/docs/es/project/manifests/workload-advanced-manifests.png rename to content/docs/es/project/workload/manifests/workload-advanced-manifests.png diff --git a/content/docs/es/project/values.mdx b/content/docs/es/project/workload/values.mdx similarity index 93% rename from content/docs/es/project/values.mdx rename to content/docs/es/project/workload/values.mdx index 0bfd4822fb..3af6449996 100644 --- a/content/docs/es/project/values.mdx +++ b/content/docs/es/project/workload/values.mdx @@ -1,5 +1,5 @@ --- -sidebar_position: 13 +sidebar_position: 7 --- import Zoom from "react-medium-image-zoom"; import "react-medium-image-zoom/dist/styles.css"; @@ -7,7 +7,7 @@ import { FiExternalLink } from "react-icons/fi"; # Values -Cada deployment renderiza el chart de Helm de tu Project con un **árbol de values**: replicas, resources, tags de imagen, hosts, probes y todo lo demás que parametriza los [manifiestos](/docs/project/manifests). SleakOps genera esos values por ti, y te deja sobreescribirlos en tres niveles persistentes — más un cuarto nivel, efímero, en el momento del deploy. +Cada deployment renderiza el chart de Helm de tu Project con un **árbol de values**: replicas, resources, tags de imagen, hosts, probes y todo lo demás que parametriza los [manifiestos](/docs/project/workload/manifests). SleakOps genera esos values por ti, y te deja sobreescribirlos en tres niveles persistentes — más un cuarto nivel, efímero, en el momento del deploy. ## Los niveles de override @@ -57,7 +57,7 @@ En el ejemplo de arriba, `resources.limits.memory` se genera como `1331Mi`, sube ## Values globales del Project -Los overrides a nivel Project viven en **Project → Settings → Chart Configuration**, en el editor de **Values** de la sección Extends Template & Values. El aviso de deprecación de esa sección apunta a migrar los **templates** libres a [Manifests](/docs/project/manifests) — el editor de Values sigue siendo el hogar de los globales del Project. Anida las claves bajo el nombre del Workload (o bajo `global:` para values de todo el chart): +Los overrides a nivel Project viven en **Project → Settings → Chart Configuration**, en el editor de **Values** de la sección Extends Template & Values. El aviso de deprecación de esa sección apunta a migrar los **templates** libres a [Manifests](/docs/project/workload/manifests) — el editor de Values sigue siendo el hogar de los globales del Project. Anida las claves bajo el nombre del Workload (o bajo `global:` para values de todo el chart): Date: Fri, 14 Aug 2026 09:57:41 -0300 Subject: [PATCH 02/16] =?UTF-8?q?docs(project):=20fix=20manifests=20permis?= =?UTF-8?q?sion=20model=20=E2=80=94=20Admin-only=20writes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/project/workload/manifests.mdx | 6 +++--- content/docs/es/project/workload/manifests.mdx | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index f141abdd88..624ae23932 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -49,7 +49,7 @@ Below the graph, the **Project-shared manifests** strip shows the manifests in t ## Editing a manifest -Click any node to open the manifest editor. The header shows the manifest's kind, origin, base template version, an **Enabled** switch, a copy button and **Delete**. +Click any node to open the manifest editor. The header shows the manifest's kind, origin, base template version, an **Enabled** switch, a copy button and **Delete** (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)). >` variables were resolve ## Adding a manifest -Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) to deploy resources beyond the generated ones: +Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) to deploy resources beyond the generated ones (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)): ### Who can edit manifests? -Editing follows your platform role: viewers see the graph, the YAML and the previews in read-only mode; editors and admins can customize, add, disable and delete manifests. +Viewers see the graph, the YAML and the Previews in read-only mode. Editors can additionally drag nodes to rearrange the graph and open the Preview tab, but cannot create, edit, disable, delete or reset a manifest — those actions require the Admin role. Only Admins can write to manifests. diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 0cded420a7..1b25e965db 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -49,7 +49,7 @@ Debajo del grafo, la franja **Project-shared manifests** muestra los manifiestos ## Editar un manifiesto -Haz clic en cualquier nodo para abrir el editor. El header muestra el kind del manifiesto, su origen, la versión del template base, un switch **Enabled**, un botón de copiado y **Delete**. +Haz clic en cualquier nodo para abrir el editor. El header muestra el kind del manifiesto, su origen, la versión del template base, un switch **Enabled**, un botón de copiado y **Delete** (requiere rol Admin — ver [¿Quién puede editar manifiestos?](#quién-puede-editar-manifiestos)). >` se resolvie ## Agregar un manifiesto -Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project bucket) para desplegar recursos más allá de los generados: +Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project bucket) para desplegar recursos más allá de los generados (requiere rol Admin — ver [¿Quién puede editar manifiestos?](#quién-puede-editar-manifiestos)): ### ¿Quién puede editar manifiestos? -La edición sigue tu rol en la plataforma: los viewers ven el grafo, el YAML y los previews en modo solo lectura; los editors y admins pueden personalizar, agregar, deshabilitar y borrar manifiestos. +Los viewers ven el grafo, el YAML y los Previews en modo solo lectura. Los editors además pueden arrastrar nodos para reorganizar el grafo y abrir el tab Preview, pero no pueden crear, editar, deshabilitar, borrar ni resetear un manifiesto — esas acciones requieren el rol Admin. Solo los Admins pueden escribir en los manifiestos. From 1669c6c117f75b0f31d258e81c5ec5d0ab438818 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:57:53 -0300 Subject: [PATCH 03/16] docs(project): name the service_manifests flag and 3.0.0 in Availability notice --- content/docs/en/project/workload/manifests.mdx | 2 +- content/docs/es/project/workload/manifests.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 624ae23932..b841202b1b 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -10,7 +10,7 @@ import { FiExternalLink } from "react-icons/fi"; Every Workload you create in SleakOps is deployed to Kubernetes through a set of **manifests** — the Deployment, Service, Ingress, PodDisruptionBudget and HorizontalPodAutoscaler resources that SleakOps generates for it. The Manifests feature makes those resources first-class citizens: you can inspect each one, customize its YAML, disable it, or add your own extra manifests — per Workload or shared across the whole Project. :::info Availability -Manifests are being rolled out progressively. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, the feature is not enabled for your company yet. +Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. ::: ## Where to find them diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 1b25e965db..115e910cbc 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -10,7 +10,7 @@ import { FiExternalLink } from "react-icons/fi"; Cada Workload que creas en SleakOps se despliega en Kubernetes a través de un conjunto de **manifiestos** — los recursos Deployment, Service, Ingress, PodDisruptionBudget y HorizontalPodAutoscaler que SleakOps genera para él. La funcionalidad de Manifests convierte esos recursos en ciudadanos de primera clase: puedes inspeccionar cada uno, personalizar su YAML, deshabilitarlo o agregar tus propios manifiestos extra — por Workload o compartidos a nivel del Project. :::info Disponibilidad -Manifests se está habilitando progresivamente. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, la funcionalidad todavía no está habilitada para tu compañía. +Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. ::: ## Dónde encontrarlos From 66e52a20a5abe8577286536d2899f279a3606938 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:58:24 -0300 Subject: [PATCH 04/16] docs(project): document ingress-per-domain manifests --- content/docs/en/domain/index.mdx | 2 ++ content/docs/en/project/workload/manifests.mdx | 8 ++++++++ content/docs/es/domain/index.mdx | 2 ++ content/docs/es/project/workload/manifests.mdx | 8 ++++++++ 4 files changed, 20 insertions(+) diff --git a/content/docs/en/domain/index.mdx b/content/docs/en/domain/index.mdx index 327eede72b..253978afbd 100644 --- a/content/docs/en/domain/index.mdx +++ b/content/docs/en/domain/index.mdx @@ -134,6 +134,8 @@ If `anything.com` is completely external: - You need multiple domains for the same service - Connecting external domains to your Sleakops services +Each domain or alias you add gets its own manifest — see [Manifests](/docs/project/workload/manifests#ingress-per-domain). + --- ## Delegation Strategies diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index b841202b1b..142d1231c0 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -47,6 +47,14 @@ You can drag nodes to arrange the graph — positions are saved per Workload, an Below the graph, the **Project-shared manifests** strip shows the manifests in the [project bucket](#the-project-bucket) that deploy alongside every Workload, with a **Manage →** shortcut to the Project's Chart Configuration. +### Ingress per domain + +Every domain or alias you add to a WebService gets its own `ingress-` node in the graph, separate from the node for the Workload's default URL — you'll see one Ingress manifest per host, not a single shared one. + +Deleting a per-domain ingress manifest only removes routing for that host: SleakOps does not re-create it automatically. Add a new manifest (or re-add the domain) if you need that host back. + +Two aliases that would collapse to the same manifest name are rejected — rename one of them before saving. + ## Editing a manifest Click any node to open the manifest editor. The header shows the manifest's kind, origin, base template version, an **Enabled** switch, a copy button and **Delete** (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)). diff --git a/content/docs/es/domain/index.mdx b/content/docs/es/domain/index.mdx index d1e1e9a05c..78fa0fef29 100644 --- a/content/docs/es/domain/index.mdx +++ b/content/docs/es/domain/index.mdx @@ -133,6 +133,8 @@ Si `cualquiera.com` es completamente externo: - Necesitas múltiples dominios para el mismo servicio - Conectar dominios externos a tus servicios de Sleakops +Cada dominio o alias que agregas obtiene su propio manifiesto — ver [Manifests](/docs/project/workload/manifests#ingress-por-dominio). + --- ## Estrategias de Delegación diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 115e910cbc..119fb666fb 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -47,6 +47,14 @@ Puedes arrastrar los nodos para acomodar el grafo — las posiciones se guardan Debajo del grafo, la franja **Project-shared manifests** muestra los manifiestos del [project bucket](#el-project-bucket) que se despliegan junto a todos los Workloads, con un acceso **Manage →** a la Chart Configuration del Project. +### Ingress por dominio + +Cada dominio o alias que agregas a un WebService obtiene su propio nodo `ingress-` en el grafo, separado del nodo de la URL predeterminada del Workload — vas a ver un manifiesto Ingress por host, no uno solo compartido. + +Borrar un manifiesto de ingress de un dominio puntual solo quita el ruteo de ese host: SleakOps no lo vuelve a crear automáticamente. Agrega un manifiesto nuevo (o vuelve a agregar el dominio) si necesitas ese host de nuevo. + +Dos alias que colapsarían al mismo nombre de manifiesto se rechazan — renombra uno de los dos antes de guardar. + ## Editar un manifiesto Haz clic en cualquier nodo para abrir el editor. El header muestra el kind del manifiesto, su origen, la versión del template base, un switch **Enabled**, un botón de copiado y **Delete** (requiere rol Admin — ver [¿Quién puede editar manifiestos?](#quién-puede-editar-manifiestos)). From c8280e0bacde5a687852f5a4594c495a5452541c Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:58:38 -0300 Subject: [PATCH 05/16] docs(project): document internal-schema auto-disable of ingress manifests --- content/docs/en/project/workload/manifests.mdx | 4 ++++ content/docs/es/project/workload/manifests.mdx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 142d1231c0..5de21dc548 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -157,6 +157,10 @@ From the diff you can choose **Keep my version** or **Reset to v<new>**. * - **Disable** (the Enabled switch): the manifest is skipped on the next deploy but keeps its configuration. If the resource was already deployed, the next deploy removes it from the cluster. - **Delete**: the manifest will no longer be deployed, and SleakOps will **not re-create it** on future seeds or base-template updates. You can add an equivalent manifest back later. +:::info Internal schema and ingress manifests +Switching a WebService's networking schema to **Internal** automatically disables every ingress manifest for it — you'll see the `Disabled` badge appear without touching anything yourself. Switching back to **Public** or **Private** only re-enables the ingress manifests that this automatic switch disabled; if you had manually disabled one before switching to Internal, it stays disabled and you need to re-enable it yourself. +::: + ## Deploying your changes Every content change in the Manifests view respects the **Deploy?** switch on the toolbar: diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 119fb666fb..6f95075d0b 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -157,6 +157,10 @@ Desde el diff puedes elegir **Keep my version** o **Reset to v<nueva>**. * - **Deshabilitar** (el switch Enabled): el manifiesto se saltea en el próximo deploy pero conserva su configuración. Si el recurso ya estaba desplegado, el próximo deploy lo quita del cluster. - **Delete**: el manifiesto deja de desplegarse y SleakOps **no lo vuelve a crear** en futuros seeds ni actualizaciones del template base. Puedes agregar un manifiesto equivalente más adelante. +:::info Schema Internal y manifiestos de ingress +Cambiar el schema de networking de un WebService a **Internal** deshabilita automáticamente todos sus manifiestos de ingress — vas a ver aparecer el badge `Disabled` sin tocar nada. Volver a **Public** o **Private** solo reactiva los manifiestos de ingress que este cambio automático deshabilitó; si habías deshabilitado uno a mano antes de pasar a Internal, sigue deshabilitado y tienes que reactivarlo tú mismo. +::: + ## Desplegar tus cambios Todos los cambios de contenido de la vista Manifests respetan el switch **Deploy?** de la toolbar: From 706719616cdaa7410ac9e236062306372a5b5578 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:58:50 -0300 Subject: [PATCH 06/16] docs(project): note project_chart flag requirement for the manifests project bucket --- content/docs/en/project/workload/manifests.mdx | 2 ++ content/docs/es/project/workload/manifests.mdx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 5de21dc548..a5608819a8 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -121,6 +121,8 @@ Keep in mind: ## The project bucket +Requires both the **service_manifests** and **project_chart** company flags — if the shared bucket doesn't appear in your Chart Configuration even though per-Workload Manifests do, ask your SleakOps contact to check `project_chart`. + Manifests added with the **Project bucket** scope are not tied to any Workload: they deploy with **every release** of the Project. Typical residents are NetworkPolicies, shared ConfigMaps and ServiceAccounts. Manage them from **Project → Settings → Chart Configuration → Manifests**: diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 6f95075d0b..462f814cb9 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -121,6 +121,8 @@ Ten en cuenta: ## El project bucket +Requiere que estén habilitados los flags de compañía **service_manifests** y **project_chart** — si el bucket compartido no aparece en tu Chart Configuration aunque los Manifests por Workload sí, pide a tu contacto de SleakOps que revise `project_chart`. + Los manifiestos agregados con scope **Project bucket** no están atados a ningún Workload: se despliegan con **cada release** del Project. Los habitantes típicos son NetworkPolicies, ConfigMaps compartidos y ServiceAccounts. Se administran desde **Project → Settings → Chart Configuration → Manifests**: From fcc8b75950df1f08ee6f86ab3e0d92815372b366 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:59:06 -0300 Subject: [PATCH 07/16] docs(project): clarify CRD validation timing and the cluster-scoped-kind check --- content/docs/en/project/workload/manifests.mdx | 4 ++-- content/docs/es/project/workload/manifests.mdx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index a5608819a8..c35221b047 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -116,8 +116,8 @@ Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) t Keep in mind: -- **Cluster-scoped kinds are rejected**, and the `namespace` must equal the Project environment. -- **Custom kinds require their CRD installed in the cluster** — for example, a Keda `ScaledObject` needs the Keda Addon. Otherwise the deploy fails with the corresponding Helm error. +- **Cluster-scoped kinds are rejected** — in practice, a manifest without a `namespace` in its metadata is rejected as "cluster-scoped"; set it explicitly, equal to the Project environment. SleakOps only checks whether the field is present, not whether the kind is genuinely cluster-scoped in Kubernetes. +- **Custom kinds require their CRD installed in the cluster** — for example, a Keda `ScaledObject` needs the Keda Addon. SleakOps does not check this when you save the manifest; it only surfaces as a Helm error the next time the manifest deploys. ## The project bucket diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 462f814cb9..7cc994ce02 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -116,8 +116,8 @@ Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project buck Ten en cuenta: -- **Los kinds cluster-scoped se rechazan**, y el `namespace` debe ser igual al del entorno del Project. -- **Los kinds custom requieren su CRD instalado en el cluster** — por ejemplo, un `ScaledObject` de Keda necesita el Addon de Keda. Si no, el deploy falla con el error correspondiente de Helm. +- **Los kinds cluster-scoped se rechazan** — en la práctica, un manifiesto sin `namespace` en su metadata se rechaza como "cluster-scoped"; defínelo explícitamente, igual al del entorno del Project. SleakOps solo verifica si el campo está presente, no si el kind es realmente cluster-scoped en Kubernetes. +- **Los kinds custom requieren su CRD instalado en el cluster** — por ejemplo, un `ScaledObject` de Keda necesita el Addon de Keda. SleakOps no valida esto al guardar el manifiesto; solo aparece como un error de Helm la próxima vez que el manifiesto se despliega. ## El project bucket From 3837c900a8a08d560e6290fefd46f71c8263aab5 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:59:19 -0300 Subject: [PATCH 08/16] docs(project): note service_manifests also gates project import-from-release --- content/docs/en/project/workload/manifests.mdx | 2 ++ content/docs/es/project/workload/manifests.mdx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index c35221b047..b0b1a63cc1 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -13,6 +13,8 @@ Every Workload you create in SleakOps is deployed to Kubernetes through a set of Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. ::: +Enabling **service_manifests** is also a prerequisite for importing a Project from an existing Helm release — that feature isn't documented yet. + ## Where to find them Manifests live in two places: diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 7cc994ce02..959e29dd45 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -13,6 +13,8 @@ Cada Workload que creas en SleakOps se despliega en Kubernetes a través de un c Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. ::: +Habilitar **service_manifests** también es un prerequisito para importar un Project desde un release de Helm existente — esa funcionalidad todavía no está documentada. + ## Dónde encontrarlos Los manifiestos viven en dos lugares: From d569e85b62ca92d75ca5b7eecb1d48309a53c4c8 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 09:59:31 -0300 Subject: [PATCH 09/16] docs(project): document per-user access gate on the project manifests panel --- content/docs/en/project/workload/manifests.mdx | 2 +- content/docs/es/project/workload/manifests.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index b0b1a63cc1..4e76552e5c 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -10,7 +10,7 @@ import { FiExternalLink } from "react-icons/fi"; Every Workload you create in SleakOps is deployed to Kubernetes through a set of **manifests** — the Deployment, Service, Ingress, PodDisruptionBudget and HorizontalPodAutoscaler resources that SleakOps generates for it. The Manifests feature makes those resources first-class citizens: you can inspect each one, customize its YAML, disable it, or add your own extra manifests — per Workload or shared across the whole Project. :::info Availability -Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. +Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. Even with the flag on for your company, the Project-level Manifests section only shows for users whose role grants it — if it's missing from your Chart Configuration while the per-Workload Manifests tab is visible, check with your admin. ::: Enabling **service_manifests** is also a prerequisite for importing a Project from an existing Helm release — that feature isn't documented yet. diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 959e29dd45..a7172400d3 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -10,7 +10,7 @@ import { FiExternalLink } from "react-icons/fi"; Cada Workload que creas en SleakOps se despliega en Kubernetes a través de un conjunto de **manifiestos** — los recursos Deployment, Service, Ingress, PodDisruptionBudget y HorizontalPodAutoscaler que SleakOps genera para él. La funcionalidad de Manifests convierte esos recursos en ciudadanos de primera clase: puedes inspeccionar cada uno, personalizar su YAML, deshabilitarlo o agregar tus propios manifiestos extra — por Workload o compartidos a nivel del Project. :::info Disponibilidad -Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. +Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. Incluso con el flag habilitado para tu compañía, la sección de Manifests a nivel Project solo se muestra para los usuarios cuyo rol lo permite — si falta en tu Chart Configuration mientras el tab de Manifests por Workload sí se ve, consúltalo con tu admin. ::: Habilitar **service_manifests** también es un prerequisito para importar un Project desde un release de Helm existente — esa funcionalidad todavía no está documentada. From 98f22ae8f24afbf78d44a163091be9d6983694cd Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 10:00:00 -0300 Subject: [PATCH 10/16] docs(project): document standalone compare-with-base and Preview hard-failure state --- content/docs/en/project/workload/manifests.mdx | 4 ++++ content/docs/es/project/workload/manifests.mdx | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 4e76552e5c..7100797efe 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -97,6 +97,8 @@ The **Preview** tab renders the template with the current form variables and sho The badges above the output confirm how many `<< form >>` variables were resolved, whether `{{ .Values }}` expressions remain for deploy time, and that the protected invariants are present. If the template fails to render, the errors are listed with their line numbers and a **Fix in YAML** shortcut — a manifest that doesn't render will not deploy. +If the template fails to render at all, the Preview tab replaces its output with a "Template failed to render — nothing will deploy" card and a **Fix in YAML** shortcut — this is different from the badges that just flag unresolved `{{ .Values }}` expressions, which still render fine. + ## Adding a manifest Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) to deploy resources beyond the generated ones (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)): @@ -156,6 +158,8 @@ When you customize a manifest, your copy is pinned: SleakOps **never overwrites From the diff you can choose **Keep my version** or **Reset to v<new>**. **Reset to base** (also available in the editor header) discards your structural edits, restores the SleakOps base template and turns the manifest back into `managed`. Form values are not affected — they only fill variables. +You don't have to wait for an update-available banner to diff against the base — every manifest with a base template (managed or customized) has a **Compare with base** button in the YAML tab toolbar. Customized manifests also get a **Reset to base** shortcut right there, in addition to the one in the editor header. + ## Disabling and deleting - **Disable** (the Enabled switch): the manifest is skipped on the next deploy but keeps its configuration. If the resource was already deployed, the next deploy removes it from the cluster. diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index a7172400d3..04029ba523 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -97,6 +97,8 @@ El tab **Preview** renderiza el template con las variables actuales del formular Los badges sobre la salida confirman cuántas variables `<< form >>` se resolvieron, si quedan expresiones `{{ .Values }}` para el deploy, y que los invariantes protegidos están presentes. Si el template no renderiza, los errores se listan con su número de línea y un acceso **Fix in YAML** — un manifiesto que no renderiza no se despliega. +Si el template falla al renderizar por completo, el tab Preview reemplaza su salida con una card "Template failed to render — nothing will deploy" y un acceso **Fix in YAML** — esto es distinto de los badges que solo marcan expresiones `{{ .Values }}` sin resolver, que sí renderizan bien. + ## Agregar un manifiesto Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project bucket) para desplegar recursos más allá de los generados (requiere rol Admin — ver [¿Quién puede editar manifiestos?](#quién-puede-editar-manifiestos)): @@ -156,6 +158,8 @@ Cuando personalizas un manifiesto, tu copia queda fijada: SleakOps **nunca la so Desde el diff puedes elegir **Keep my version** o **Reset to v<nueva>**. **Reset to base** (también disponible en el header del editor) descarta tus ediciones estructurales, restaura el template base de SleakOps y vuelve el manifiesto a `managed`. Los valores del formulario no se ven afectados — solo rellenan variables. +No necesitas esperar a que aparezca el banner de actualización disponible para compararte contra la base — todo manifiesto con un template base (managed o customized) tiene un botón **Compare with base** en la toolbar del tab YAML. Los manifiestos customized también tienen ahí un acceso directo a **Reset to base**, además del que está en el header del editor. + ## Deshabilitar y borrar - **Deshabilitar** (el switch Enabled): el manifiesto se saltea en el próximo deploy pero conserva su configuración. Si el recurso ya estaba desplegado, el próximo deploy lo quita del cluster. From e31069e63c253d05aa184da9c49bf82b4fb8a66a Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 10:00:58 -0300 Subject: [PATCH 11/16] =?UTF-8?q?docs(project):=20polish=20pass=20?= =?UTF-8?q?=E2=80=94=20graph,=20explorer,=20add-modal=20and=20confirmation?= =?UTF-8?q?=20details?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/docs/en/project/workload/manifests.mdx | 16 +++++++++++++--- content/docs/es/project/workload/manifests.mdx | 16 +++++++++++++--- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 7100797efe..8a31abca2f 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -43,9 +43,11 @@ Each node shows the manifest's name, its Kind (or resolved host, for Ingress man | **Customized** | `Customized` | You edited its YAML. SleakOps never overwrites your copy — see [template updates](#base-template-updates). | | **Custom** | `Custom` | A manifest you added yourself. It has no SleakOps base template. | -Disabled manifests show a `Disabled` badge and their edges render dashed. +The **Custom** origin is also labeled "user added" in the editor header and workload toolbar — same thing, worded differently depending on where you're looking. -You can drag nodes to arrange the graph — positions are saved per Workload, and **Reset layout** restores the automatic arrangement. +Disabled manifests show a `Disabled` badge and their edges render dashed. A summary line above the graph counts manifests by origin (`N manifests · X customized · Y user-added · Z disabled`), matched to a color-dot legend. + +You can drag nodes to arrange the graph — positions are saved per Workload, and **Reset layout** restores the automatic arrangement. Dragging nodes, re-linking dependencies or renaming a manifest's metadata are layout actions — they update instantly but never register a pending change or trigger a deployment, regardless of the **Deploy?** switch. Below the graph, the **Project-shared manifests** strip shows the manifests in the [project bucket](#the-project-bucket) that deploy alongside every Workload, with a **Manage →** shortcut to the Project's Chart Configuration. @@ -73,7 +75,7 @@ The **YAML** tab is where you edit the template. Two kinds of placeholders can a - `<< form >>` variables resolve **before Helm**, from the values of your Workload form (name, namespace, command, healthcheck, etc.). - `{{ .Values }}` expressions are left for **Helm at deploy time** (replicas, resources, image tag — everything that comes from [Values](/docs/project/workload/values)). -The **Variables** panel on the right lists everything available: click an entry to insert it at the cursor, or drag it into the editor. +The **Variables** panel on the right lists everything available: click an entry to insert it at the cursor, or drag it into the editor. Dragging a variable onto the editor shows a live cursor preview of where it'll land before you drop it. The editor validates as you type. Errors block saving, and include: @@ -118,6 +120,10 @@ Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) t | **Depends on** | Optional. Draws the graph edges from this manifest to the selected ones. | | **Template** | The manifest YAML. A starting stub is generated for the selected Kind. | +**Create** stays disabled until Scope, Kind, Name and Template are all filled. While you haven't hand-edited the stub, typing a Name mirrors it live into the template's `metadata.name`; switching Kind regenerates the stub from scratch. + +Use the toolbar's **Add manifest** for a Workload-scoped manifest, or **Add to project** in the shared strip for the Project bucket — both open the same modal, pre-scoped. + Keep in mind: - **Cluster-scoped kinds are rejected** — in practice, a manifest without a `namespace` in its metadata is rejected as "cluster-scoped"; set it explicitly, equal to the Project environment. SleakOps only checks whether the field is present, not whether the kind is genuinely cluster-scoped in Kubernetes. @@ -138,6 +144,8 @@ Manifests added with the **Project bucket** scope are not tied to any Workload: The **Explorer** at the top of the section lists every Workload of the Project with its manifests, and the project bucket at the end. Use the filter to search by name or kind; clicking a Workload opens its Advanced view, and clicking a manifest opens the editor in place. +The filter searches both name and kind. A Workload with no matches collapses out of the list instead of showing an empty lane; if nothing matches anywhere (including the bucket), you'll see a "No manifests match" message. Workload types without a dedicated Advanced view yet show as disabled rows. + >` se resuelven **antes de Helm**, con los valores del formulario de tu Workload (nombre, namespace, command, healthcheck, etc.). - Las expresiones `{{ .Values }}` quedan para **Helm en el momento del deploy** (replicas, resources, tag de imagen — todo lo que viene de [Values](/docs/project/workload/values)). -El panel **Variables** de la derecha lista todo lo disponible: haz clic en una entrada para insertarla en el cursor, o arrástrala al editor. +El panel **Variables** de la derecha lista todo lo disponible: haz clic en una entrada para insertarla en el cursor, o arrástrala al editor. Arrastrar una variable sobre el editor muestra una vista previa del cursor en vivo, indicando dónde va a caer antes de soltarla. El editor valida mientras escribes. Los errores bloquean el guardado, e incluyen: @@ -118,6 +120,10 @@ Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project buck | **Depends on** | Opcional. Dibuja las aristas del grafo desde este manifiesto hacia los seleccionados. | | **Template** | El YAML del manifiesto. Se genera un stub inicial según el Kind elegido. | +**Create** permanece deshabilitado hasta completar Scope, Kind, Name y Template. Mientras no hayas editado el stub a mano, escribir un Name lo refleja en vivo en el `metadata.name` del template; cambiar el Kind regenera el stub desde cero. + +Usa **Add manifest** en la toolbar para un manifiesto con scope de Workload, o **Add to project** en la franja compartida para el project bucket — ambos abren el mismo modal, pre-configurado con el scope correspondiente. + Ten en cuenta: - **Los kinds cluster-scoped se rechazan** — en la práctica, un manifiesto sin `namespace` en su metadata se rechaza como "cluster-scoped"; defínelo explícitamente, igual al del entorno del Project. SleakOps solo verifica si el campo está presente, no si el kind es realmente cluster-scoped en Kubernetes. @@ -138,6 +144,8 @@ Los manifiestos agregados con scope **Project bucket** no están atados a ningú El **Explorer** al inicio de la sección lista cada Workload del Project con sus manifiestos, y el project bucket al final. Usa el filtro para buscar por nombre o kind; hacer clic en un Workload abre su vista Advanced, y hacer clic en un manifiesto abre el editor ahí mismo. +El filtro busca tanto por nombre como por kind. Un Workload sin coincidencias se colapsa de la lista en vez de mostrar una lane vacía; si no hay coincidencias en ningún lado (incluido el bucket), vas a ver un mensaje "No manifests match". Los tipos de Workload que todavía no tienen una vista Advanced dedicada se muestran como filas deshabilitadas. + Date: Fri, 14 Aug 2026 10:01:12 -0300 Subject: [PATCH 12/16] docs(project): document platform value defaults not exposed on any form --- content/docs/en/project/workload/values.mdx | 10 ++++++++++ content/docs/es/project/workload/values.mdx | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/content/docs/en/project/workload/values.mdx b/content/docs/en/project/workload/values.mdx index 6723180941..83a24dc601 100644 --- a/content/docs/en/project/workload/values.mdx +++ b/content/docs/en/project/workload/values.mdx @@ -81,6 +81,16 @@ For values that belong to a single deployment — a canary replica bump, a one-o See [Injecting values on deploy](/docs/cli#injecting-values-on-deploy) for the full syntax and caveats. +## Platform defaults + +A few values are set by SleakOps and aren't exposed on any form today: + +- **PodDisruptionBudget** — `minAvailable` is `1` below 8 replicas, and `20%` at 8 or more. +- **CronJob** — `concurrencyPolicy` is always `Forbid`: overlapping runs never execute concurrently. +- **Termination grace period** — 120s on spot nodes, 300s on on-demand. + +Turning off autoscaling removes the HorizontalPodAutoscaler immediately, including from a release that's already published — no extra reset or republish step needed. + ## FAQs
diff --git a/content/docs/es/project/workload/values.mdx b/content/docs/es/project/workload/values.mdx index 3af6449996..782c724479 100644 --- a/content/docs/es/project/workload/values.mdx +++ b/content/docs/es/project/workload/values.mdx @@ -81,6 +81,16 @@ Para valores que pertenecen a un único deployment — subir réplicas para un c Ver [Inyectar values en el deploy](/docs/cli#inyectar-values-en-el-deploy) para la sintaxis completa y sus consideraciones. +## Configuraciones por defecto de la plataforma + +Hay algunos values que fija SleakOps y que hoy no están expuestos en ningún formulario: + +- **PodDisruptionBudget** — `minAvailable` es `1` por debajo de 8 réplicas, y `20%` a partir de 8. +- **CronJob** — `concurrencyPolicy` siempre es `Forbid`: las corridas que se superponen nunca se ejecutan en simultáneo. +- **Período de gracia de terminación** — 120s en nodos spot, 300s en on-demand. + +Desactivar el autoscaling quita el HorizontalPodAutoscaler de inmediato, incluso de un release ya publicado — sin necesidad de un reset ni de republicar. + ## FAQs
From 60622ea5eb8a364728aab88ee8cf71add69c1a37 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 10:30:48 -0300 Subject: [PATCH 13/16] =?UTF-8?q?docs(project):=20fix=20review=20findings?= =?UTF-8?q?=20=E2=80=94=20permission/preview=20claims,=20ingress=20collisi?= =?UTF-8?q?on,=20dedup,=20ES=20nits?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrects factual errors surfaced by an independent review pass on the Manifests/Values docs: no confirm-typing on delete/reset, ingress-name collision is checked on domain save (not manifest name), the service_manifests flag is a company+config-group gate (not role-based), Preview rendering requires Editor+ (not Viewer), and drops the stale "not documented yet" claim about Helm-release import. Also trims several duplicated passages, drops Scope from the Add-manifest blocker list, standardizes flag-name formatting to code-ticks, reorders the project bucket section, and fixes two ES-only wording nits. --- .../docs/en/project/workload/manifests.mdx | 32 ++++++++--------- content/docs/en/project/workload/values.mdx | 2 +- .../docs/es/project/workload/manifests.mdx | 34 +++++++++---------- content/docs/es/project/workload/values.mdx | 2 +- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 8a31abca2f..a2754217ca 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -10,10 +10,10 @@ import { FiExternalLink } from "react-icons/fi"; Every Workload you create in SleakOps is deployed to Kubernetes through a set of **manifests** — the Deployment, Service, Ingress, PodDisruptionBudget and HorizontalPodAutoscaler resources that SleakOps generates for it. The Manifests feature makes those resources first-class citizens: you can inspect each one, customize its YAML, disable it, or add your own extra manifests — per Workload or shared across the whole Project. :::info Availability -Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. Even with the flag on for your company, the Project-level Manifests section only shows for users whose role grants it — if it's missing from your Chart Configuration while the per-Workload Manifests tab is visible, check with your admin. +Manifests ships in **SleakOps 3.0.0** behind the `service_manifests` company feature flag, off by default while the rollout completes. If you don't see the **Advanced** toggle on your Workload forms or the **Manifests** section in your Project's Chart Configuration, ask your SleakOps contact to enable it for your company. The flag can also be scoped to a subset of users through a configuration group, so it may be on for your company and still off for your user — if the Manifests surfaces are missing, ask your SleakOps contact whether your user is in the rollout. ::: -Enabling **service_manifests** is also a prerequisite for importing a Project from an existing Helm release — that feature isn't documented yet. +Enabling `service_manifests` is also a prerequisite for importing a Project from an existing Helm release. ## Where to find them @@ -47,7 +47,7 @@ The **Custom** origin is also labeled "user added" in the editor header and work Disabled manifests show a `Disabled` badge and their edges render dashed. A summary line above the graph counts manifests by origin (`N manifests · X customized · Y user-added · Z disabled`), matched to a color-dot legend. -You can drag nodes to arrange the graph — positions are saved per Workload, and **Reset layout** restores the automatic arrangement. Dragging nodes, re-linking dependencies or renaming a manifest's metadata are layout actions — they update instantly but never register a pending change or trigger a deployment, regardless of the **Deploy?** switch. +You can drag nodes to arrange the graph — positions are saved per Workload, and **Reset layout** restores the automatic arrangement. Dragging nodes and re-linking dependencies are layout actions — they update instantly but never register a pending change or trigger a deployment, regardless of the **Deploy?** switch. Below the graph, the **Project-shared manifests** strip shows the manifests in the [project bucket](#the-project-bucket) that deploy alongside every Workload, with a **Manage →** shortcut to the Project's Chart Configuration. @@ -57,7 +57,7 @@ Every domain or alias you add to a WebService gets its own `ingress-` node Deleting a per-domain ingress manifest only removes routing for that host: SleakOps does not re-create it automatically. Add a new manifest (or re-add the domain) if you need that host back. -Two aliases that would collapse to the same manifest name are rejected — rename one of them before saving. +Adding a domain whose host maps to the same Kubernetes Ingress name as an existing host of the Workload is rejected when you save the domain — `api.acme.com` and `api-acme.com` collapse to one name; pick one that differs in more than dots or dashes. Manifest node names never clash: a repeated slug simply gets the domain's id appended. ## Editing a manifest @@ -97,9 +97,9 @@ The **Preview** tab renders the template with the current form variables and sho /> -The badges above the output confirm how many `<< form >>` variables were resolved, whether `{{ .Values }}` expressions remain for deploy time, and that the protected invariants are present. If the template fails to render, the errors are listed with their line numbers and a **Fix in YAML** shortcut — a manifest that doesn't render will not deploy. +The badges above the output confirm how many `<< form >>` variables were resolved, whether `{{ .Values }}` expressions remain for deploy time, and that the protected invariants are present. -If the template fails to render at all, the Preview tab replaces its output with a "Template failed to render — nothing will deploy" card and a **Fix in YAML** shortcut — this is different from the badges that just flag unresolved `{{ .Values }}` expressions, which still render fine. +If the template fails to render, the Preview tab replaces its output with a "Template failed to render — nothing will deploy" card, listing the errors with their line numbers and a **Fix in YAML** shortcut — this is different from the badges that just flag unresolved `{{ .Values }}` expressions, which still render fine. ## Adding a manifest @@ -120,9 +120,7 @@ Use **Add manifest** (on the Workload graph toolbar, or in the project bucket) t | **Depends on** | Optional. Draws the graph edges from this manifest to the selected ones. | | **Template** | The manifest YAML. A starting stub is generated for the selected Kind. | -**Create** stays disabled until Scope, Kind, Name and Template are all filled. While you haven't hand-edited the stub, typing a Name mirrors it live into the template's `metadata.name`; switching Kind regenerates the stub from scratch. - -Use the toolbar's **Add manifest** for a Workload-scoped manifest, or **Add to project** in the shared strip for the Project bucket — both open the same modal, pre-scoped. +**Create** stays disabled until Kind, Name and Template are all filled. While you haven't hand-edited the stub, typing a Name mirrors it live into the template's `metadata.name`; switching Kind regenerates the stub from scratch. Keep in mind: @@ -131,10 +129,12 @@ Keep in mind: ## The project bucket -Requires both the **service_manifests** and **project_chart** company flags — if the shared bucket doesn't appear in your Chart Configuration even though per-Workload Manifests do, ask your SleakOps contact to check `project_chart`. - Manifests added with the **Project bucket** scope are not tied to any Workload: they deploy with **every release** of the Project. Typical residents are NetworkPolicies, shared ConfigMaps and ServiceAccounts. Manage them from **Project → Settings → Chart Configuration → Manifests**: +:::info Requires two flags +The project bucket requires both the `service_manifests` and `project_chart` company flags — if the shared bucket doesn't appear in your Chart Configuration even though per-Workload Manifests do, ask your SleakOps contact to check `project_chart`. +::: + -The **Explorer** at the top of the section lists every Workload of the Project with its manifests, and the project bucket at the end. Use the filter to search by name or kind; clicking a Workload opens its Advanced view, and clicking a manifest opens the editor in place. +The **Explorer** at the top of the section lists every Workload of the Project with its manifests, and the project bucket at the end. Clicking a Workload opens its Advanced view, and clicking a manifest opens the editor in place. The filter searches both name and kind. A Workload with no matches collapses out of the list instead of showing an empty lane; if nothing matches anywhere (including the bucket), you'll see a "No manifests match" message. Workload types without a dedicated Advanced view yet show as disabled rows. @@ -177,7 +177,7 @@ You don't have to wait for an update-available banner to diff against the base Switching a WebService's networking schema to **Internal** automatically disables every ingress manifest for it — you'll see the `Disabled` badge appear without touching anything yourself. Switching back to **Public** or **Private** only re-enables the ingress manifests that this automatic switch disabled; if you had manually disabled one before switching to Internal, it stays disabled and you need to re-enable it yourself. ::: -Deleting or resetting a manifest asks you to type the action's name ("Delete manifest" / "Reset to base") to confirm — a safeguard against accidental clicks, not just a plain confirmation dialog. +Deleting or resetting asks for confirmation first: the dialog spells out the consequence (the manifest won't be re-created on future seeds; a reset discards your structural edits) and its confirm button is labeled with the action — **Delete manifest** / **Reset to base**. ## Deploying your changes @@ -186,7 +186,7 @@ Every content change in the Manifests view respects the **Deploy?** switch on th - **On** — a deployment is triggered right after each save. - **Off** — changes accumulate as [pending changes](/docs/project/deployment/pending_changes) and are deployed when you publish them. -Layout-only actions — dragging nodes or **Reset layout** — are cosmetic: they never create a pending change or a deployment, regardless of the switch. +Layout actions on the graph — see [The manifest graph](#the-manifest-graph) — are the exception: they never go through this switch. ## FAQs @@ -208,7 +208,7 @@ They keep deploying exactly as before. The Extends Template & Values section is ### Can I deploy resources from a CRD? -Yes — choose **Custom…** as the Kind when adding a manifest and set the CRD's apiVersion/kind. The CRD must be installed in the cluster (for example, Keda's ScaledObject requires the Keda Addon), otherwise the deploy fails with the corresponding Helm error. +Yes — choose **Custom…** as the Kind when adding a manifest and set the CRD's apiVersion/kind. The manifest saves regardless; the CRD must be installed in the cluster (for example, Keda's ScaledObject requires the Keda Addon), otherwise the deploy fails with the corresponding Helm error.
@@ -229,5 +229,5 @@ Disabling keeps the manifest and its configuration but skips it at deploy time ### Who can edit manifests? -Viewers see the graph, the YAML and the Previews in read-only mode. Editors can additionally drag nodes to rearrange the graph and open the Preview tab, but cannot create, edit, disable, delete or reset a manifest — those actions require the Admin role. Only Admins can write to manifests. +Viewers see the graph and the YAML in read-only mode; rendering a Preview needs at least the Editor role. Editors can also drag nodes to rearrange the graph, but cannot create, edit, disable, delete or reset a manifest — those actions require the Admin role.
diff --git a/content/docs/en/project/workload/values.mdx b/content/docs/en/project/workload/values.mdx index 83a24dc601..70c3b0a243 100644 --- a/content/docs/en/project/workload/values.mdx +++ b/content/docs/en/project/workload/values.mdx @@ -89,7 +89,7 @@ A few values are set by SleakOps and aren't exposed on any form today: - **CronJob** — `concurrencyPolicy` is always `Forbid`: overlapping runs never execute concurrently. - **Termination grace period** — 120s on spot nodes, 300s on on-demand. -Turning off autoscaling removes the HorizontalPodAutoscaler immediately, including from a release that's already published — no extra reset or republish step needed. +Turning off autoscaling removes the HorizontalPodAutoscaler on the next deploy — no extra reset or republish needed. ## FAQs diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 57a1beb4ba..d4560e13d6 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -10,10 +10,10 @@ import { FiExternalLink } from "react-icons/fi"; Cada Workload que creas en SleakOps se despliega en Kubernetes a través de un conjunto de **manifiestos** — los recursos Deployment, Service, Ingress, PodDisruptionBudget y HorizontalPodAutoscaler que SleakOps genera para él. La funcionalidad de Manifests convierte esos recursos en ciudadanos de primera clase: puedes inspeccionar cada uno, personalizar su YAML, deshabilitarlo o agregar tus propios manifiestos extra — por Workload o compartidos a nivel del Project. :::info Disponibilidad -Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. Incluso con el flag habilitado para tu compañía, la sección de Manifests a nivel Project solo se muestra para los usuarios cuyo rol lo permite — si falta en tu Chart Configuration mientras el tab de Manifests por Workload sí se ve, consúltalo con tu admin. +Manifests se lanza en **SleakOps 3.0.0** detrás del feature flag de compañía `service_manifests`, apagado por defecto mientras se completa el rollout. Si no ves el toggle **Advanced** en los formularios de tus Workloads ni la sección **Manifests** en la Chart Configuration de tu Project, pide a tu contacto de SleakOps que lo habilite para tu compañía. El flag también puede estar acotado a un subconjunto de usuarios mediante un grupo de configuración, así que puede estar habilitado para tu compañía y seguir apagado para tu usuario — si las superficies de Manifests no aparecen, consulta con tu contacto de SleakOps si tu usuario está incluido en el rollout. ::: -Habilitar **service_manifests** también es un prerequisito para importar un Project desde un release de Helm existente — esa funcionalidad todavía no está documentada. +Habilitar `service_manifests` también es un prerrequisito para importar un Project desde un release de Helm existente. ## Dónde encontrarlos @@ -43,11 +43,11 @@ Cada nodo muestra el nombre del manifiesto, su Kind (o el host resuelto, en los | **Customized** | `Customized` | Editaste su YAML. SleakOps nunca sobreescribe tu copia — ver [actualizaciones del template base](#actualizaciones-del-template-base). | | **Custom** | `Custom` | Un manifiesto que agregaste tú. No tiene template base de SleakOps. | -El origen **Custom** también se muestra como "user added" en el header del editor y en la toolbar del workload — es lo mismo, con distinta etiqueta según dónde lo mires. +El origen **Custom** también se muestra como "user added" en el header del editor y en la toolbar del Workload — es lo mismo, con distinta etiqueta según dónde lo mires. Los manifiestos deshabilitados muestran un badge `Disabled` y sus aristas se dibujan punteadas. Una línea de resumen arriba del grafo cuenta los manifiestos por origen (`N manifests · X customized · Y user-added · Z disabled`), junto con una leyenda de puntos de color. -Puedes arrastrar los nodos para acomodar el grafo — las posiciones se guardan por Workload, y **Reset layout** restaura el orden automático. Arrastrar nodos, re-vincular dependencias o renombrar la metadata de un manifiesto son acciones de layout — se actualizan al instante pero nunca registran un cambio pendiente ni disparan un deployment, sin importar el switch **Deploy?**. +Puedes arrastrar los nodos para acomodar el grafo — las posiciones se guardan por Workload, y **Reset layout** restaura el orden automático. Arrastrar nodos y re-vincular dependencias son acciones de layout — se actualizan al instante pero nunca registran un cambio pendiente ni disparan un deployment, sin importar el switch **Deploy?**. Debajo del grafo, la franja **Project-shared manifests** muestra los manifiestos del [project bucket](#el-project-bucket) que se despliegan junto a todos los Workloads, con un acceso **Manage →** a la Chart Configuration del Project. @@ -57,7 +57,7 @@ Cada dominio o alias que agregas a un WebService obtiene su propio nodo `ingress Borrar un manifiesto de ingress de un dominio puntual solo quita el ruteo de ese host: SleakOps no lo vuelve a crear automáticamente. Agrega un manifiesto nuevo (o vuelve a agregar el dominio) si necesitas ese host de nuevo. -Dos alias que colapsarían al mismo nombre de manifiesto se rechazan — renombra uno de los dos antes de guardar. +Agregar un dominio cuyo host mapea al mismo nombre de Ingress de Kubernetes que otro host existente del Workload se rechaza al guardar el dominio — `api.acme.com` y `api-acme.com` colapsan al mismo nombre; elige uno que difiera en algo más que puntos o guiones. Los nombres de los nodos de manifiesto nunca chocan: un slug repetido simplemente recibe el id del dominio como sufijo. ## Editar un manifiesto @@ -97,9 +97,9 @@ El tab **Preview** renderiza el template con las variables actuales del formular /> -Los badges sobre la salida confirman cuántas variables `<< form >>` se resolvieron, si quedan expresiones `{{ .Values }}` para el deploy, y que los invariantes protegidos están presentes. Si el template no renderiza, los errores se listan con su número de línea y un acceso **Fix in YAML** — un manifiesto que no renderiza no se despliega. +Los badges sobre la salida confirman cuántas variables `<< form >>` se resolvieron, si quedan expresiones `{{ .Values }}` para el deploy, y que los invariantes protegidos están presentes. -Si el template falla al renderizar por completo, el tab Preview reemplaza su salida con una card "Template failed to render — nothing will deploy" y un acceso **Fix in YAML** — esto es distinto de los badges que solo marcan expresiones `{{ .Values }}` sin resolver, que sí renderizan bien. +Si el template no renderiza, el tab Preview reemplaza su salida con una card "Template failed to render — nothing will deploy", listando los errores con su número de línea y un acceso **Fix in YAML** — esto es distinto de los badges que solo marcan expresiones `{{ .Values }}` sin resolver, que sí renderizan bien. ## Agregar un manifiesto @@ -120,9 +120,7 @@ Usa **Add manifest** (en la toolbar del grafo del Workload, o en el project buck | **Depends on** | Opcional. Dibuja las aristas del grafo desde este manifiesto hacia los seleccionados. | | **Template** | El YAML del manifiesto. Se genera un stub inicial según el Kind elegido. | -**Create** permanece deshabilitado hasta completar Scope, Kind, Name y Template. Mientras no hayas editado el stub a mano, escribir un Name lo refleja en vivo en el `metadata.name` del template; cambiar el Kind regenera el stub desde cero. - -Usa **Add manifest** en la toolbar para un manifiesto con scope de Workload, o **Add to project** en la franja compartida para el project bucket — ambos abren el mismo modal, pre-configurado con el scope correspondiente. +**Create** permanece deshabilitado hasta completar Kind, Name y Template. Mientras no hayas editado el stub a mano, escribir un Name lo refleja en vivo en el `metadata.name` del template; cambiar el Kind regenera el stub desde cero. Ten en cuenta: @@ -131,10 +129,12 @@ Ten en cuenta: ## El project bucket -Requiere que estén habilitados los flags de compañía **service_manifests** y **project_chart** — si el bucket compartido no aparece en tu Chart Configuration aunque los Manifests por Workload sí, pide a tu contacto de SleakOps que revise `project_chart`. - Los manifiestos agregados con scope **Project bucket** no están atados a ningún Workload: se despliegan con **cada release** del Project. Los habitantes típicos son NetworkPolicies, ConfigMaps compartidos y ServiceAccounts. Se administran desde **Project → Settings → Chart Configuration → Manifests**: +:::info Requiere dos flags +El project bucket requiere que estén habilitados los flags de compañía `service_manifests` y `project_chart` — si el bucket compartido no aparece en tu Chart Configuration aunque los Manifests por Workload sí, pide a tu contacto de SleakOps que revise `project_chart`. +::: + -El **Explorer** al inicio de la sección lista cada Workload del Project con sus manifiestos, y el project bucket al final. Usa el filtro para buscar por nombre o kind; hacer clic en un Workload abre su vista Advanced, y hacer clic en un manifiesto abre el editor ahí mismo. +El **Explorer** al inicio de la sección lista cada Workload del Project con sus manifiestos, y el project bucket al final. Hacer clic en un Workload abre su vista Advanced, y hacer clic en un manifiesto abre el editor ahí mismo. El filtro busca tanto por nombre como por kind. Un Workload sin coincidencias se colapsa de la lista en vez de mostrar una lane vacía; si no hay coincidencias en ningún lado (incluido el bucket), vas a ver un mensaje "No manifests match". Los tipos de Workload que todavía no tienen una vista Advanced dedicada se muestran como filas deshabilitadas. @@ -177,7 +177,7 @@ No necesitas esperar a que aparezca el banner de actualización disponible para Cambiar el schema de networking de un WebService a **Internal** deshabilita automáticamente todos sus manifiestos de ingress — vas a ver aparecer el badge `Disabled` sin tocar nada. Volver a **Public** o **Private** solo reactiva los manifiestos de ingress que este cambio automático deshabilitó; si habías deshabilitado uno a mano antes de pasar a Internal, sigue deshabilitado y tienes que reactivarlo tú mismo. ::: -Borrar o resetear un manifiesto te pide escribir el nombre de la acción ("Delete manifest" / "Reset to base") para confirmar — un resguardo contra clics accidentales, no un simple diálogo de confirmación. +Borrar o resetear pide confirmación primero: el diálogo detalla la consecuencia (el manifiesto no se vuelve a crear en futuros seeds; un reset descarta tus ediciones estructurales) y su botón de confirmación queda etiquetado con la acción — **Delete manifest** / **Reset to base**. ## Desplegar tus cambios @@ -186,7 +186,7 @@ Todos los cambios de contenido de la vista Manifests respetan el switch **Deploy - **Prendido** — se dispara un deployment después de cada guardado. - **Apagado** — los cambios se acumulan como [cambios pendientes](/docs/project/deployment/pending_changes) y se despliegan cuando los publicas. -Las acciones de solo layout — arrastrar nodos o **Reset layout** — son cosméticas: nunca crean un cambio pendiente ni un deployment, esté como esté el switch. +Las acciones de layout del grafo — ver [El grafo de manifiestos](#el-grafo-de-manifiestos) — son la excepción: nunca pasan por este switch. ## FAQs @@ -208,7 +208,7 @@ Se siguen desplegando exactamente igual que antes. La sección Extends Template ### ¿Puedo desplegar recursos de un CRD? -Sí — elige **Custom…** como Kind al agregar un manifiesto y define el apiVersion/kind del CRD. El CRD debe estar instalado en el cluster (por ejemplo, el ScaledObject de Keda requiere el Addon de Keda); si no, el deploy falla con el error correspondiente de Helm. +Sí — elige **Custom…** como Kind al agregar un manifiesto y define el apiVersion/kind del CRD. El manifiesto se guarda igual; el CRD debe estar instalado en el cluster (por ejemplo, el ScaledObject de Keda requiere el Addon de Keda); si no, el deploy falla con el error correspondiente de Helm.
@@ -229,5 +229,5 @@ Deshabilitar conserva el manifiesto y su configuración pero lo saltea al desple ### ¿Quién puede editar manifiestos? -Los viewers ven el grafo, el YAML y los Previews en modo solo lectura. Los editors además pueden arrastrar nodos para reorganizar el grafo y abrir el tab Preview, pero no pueden crear, editar, deshabilitar, borrar ni resetear un manifiesto — esas acciones requieren el rol Admin. Solo los Admins pueden escribir en los manifiestos. +Los viewers ven el grafo y el YAML en modo solo lectura; renderizar un Preview requiere al menos el rol Editor. Los editors además pueden arrastrar nodos para reorganizar el grafo, pero no pueden crear, editar, deshabilitar, borrar ni resetear un manifiesto — esas acciones requieren el rol Admin.
diff --git a/content/docs/es/project/workload/values.mdx b/content/docs/es/project/workload/values.mdx index 782c724479..3f250d542e 100644 --- a/content/docs/es/project/workload/values.mdx +++ b/content/docs/es/project/workload/values.mdx @@ -89,7 +89,7 @@ Hay algunos values que fija SleakOps y que hoy no están expuestos en ningún fo - **CronJob** — `concurrencyPolicy` siempre es `Forbid`: las corridas que se superponen nunca se ejecutan en simultáneo. - **Período de gracia de terminación** — 120s en nodos spot, 300s en on-demand. -Desactivar el autoscaling quita el HorizontalPodAutoscaler de inmediato, incluso de un release ya publicado — sin necesidad de un reset ni de republicar. +Desactivar el autoscaling quita el HorizontalPodAutoscaler en el próximo deploy — sin necesidad de un reset ni de republicar. ## FAQs From 2952616e6b61f135651e0fbec113b7c38fae4c74 Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 11:57:32 -0300 Subject: [PATCH 14/16] docs(project): document the manifest editor's Form tab ahead of launch --- .../docs/en/project/workload/manifests.mdx | 20 +++++++++++++++++++ .../docs/es/project/workload/manifests.mdx | 20 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index a2754217ca..0714edfb07 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -63,6 +63,26 @@ Adding a domain whose host maps to the same Kubernetes Ingress name as an existi Click any node to open the manifest editor. The header shows the manifest's kind, origin, base template version, an **Enabled** switch, a copy button and **Delete** (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)). +### Form tab + +:::info Not generally available yet +The Form tab isn't rolled out yet — this section documents it ahead of launch, not something you can currently turn on. +::: + +The Form tab edits **values**, not the template: it fills the same `<< form >>` variables the YAML tab shows, through plain fields instead of YAML, and never touches the manifest's structure — even on a `customized` manifest. Saving posts straight to the Workload's own service record, the same values the Workload form edits. + +What you see depends on the manifest's role: + +| Role | What the form shows | +| --- | --- | +| `deployment` | **Command**, plus **Healthcheck path/port** for WebServices. Replicas, resources and autoscaling stay on the [Values](/docs/project/workload/values) tab — those are release values, not form values. | +| `ingress` | The Workload's **Domain** (read-only — domains are managed from the Workload form) and its **Schema** (public/private/internal). One Ingress renders per domain; switching to internal disables the Ingress manifests. | +| `service` | Read-only **Service port** and **Target port**, following the container port from the Workload form. | +| `pdb` / `hpa` | A switch for **High availability** / **Autoscaling** — the same Enabled toggle the graph shows for that manifest — plus read-only fields sourced from the Workload's Resource Set (min available for PDB; min, max and CPU target for HPA). | +| `custom` (user-added) | No form — a "No generated form for this manifest" placeholder with an **Edit YAML** shortcut, since custom manifests only exist as YAML. | + +### YAML tab + >` que muestra el tab YAML, pero con campos en vez de YAML, y nunca toca la estructura del manifiesto — incluso en uno `customized`. Guardar escribe directo sobre el registro del Service del Workload, los mismos valores que edita el formulario del Workload. + +Lo que ves depende del role del manifiesto: + +| Role | Qué muestra el formulario | +| --- | --- | +| `deployment` | **Command**, y **Healthcheck path/port** para WebServices. Replicas, resources y autoscaling quedan en el tab [Values](/docs/project/workload/values) — son values del release, no del formulario. | +| `ingress` | El **Domain** del Workload (solo lectura — los dominios se gestionan desde el formulario del Workload) y su **Schema** (public/private/internal). Se renderiza un Ingress por dominio; pasar a internal desactiva los manifiestos de Ingress. | +| `service` | **Service port** y **Target port**, solo lectura, siguiendo el puerto del container del formulario del Workload. | +| `pdb` / `hpa` | Un switch de **High availability** / **Autoscaling** — el mismo Enabled que muestra el grafo para ese manifiesto — más campos de solo lectura tomados del Resource Set del Workload (min available para PDB; min, max y CPU target para HPA). | +| `custom` (agregado por el usuario) | Sin formulario — un placeholder "No generated form for this manifest" con un acceso **Edit YAML**, porque los manifiestos custom solo existen como YAML. | + +### Tab YAML + Date: Fri, 14 Aug 2026 12:03:21 -0300 Subject: [PATCH 15/16] docs(project): cover CronJob/Hook in the Form tab table, tighten service-port wording --- content/docs/en/project/workload/manifests.mdx | 3 ++- content/docs/es/project/workload/manifests.mdx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index 0714edfb07..a520a2bd35 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -77,9 +77,10 @@ What you see depends on the manifest's role: | --- | --- | | `deployment` | **Command**, plus **Healthcheck path/port** for WebServices. Replicas, resources and autoscaling stay on the [Values](/docs/project/workload/values) tab — those are release values, not form values. | | `ingress` | The Workload's **Domain** (read-only — domains are managed from the Workload form) and its **Schema** (public/private/internal). One Ingress renders per domain; switching to internal disables the Ingress manifests. | -| `service` | Read-only **Service port** and **Target port**, following the container port from the Workload form. | +| `service` | Read-only **Service port** and **Target port** — Target port follows the container port from the Workload form. | | `pdb` / `hpa` | A switch for **High availability** / **Autoscaling** — the same Enabled toggle the graph shows for that manifest — plus read-only fields sourced from the Workload's Resource Set (min available for PDB; min, max and CPU target for HPA). | | `custom` (user-added) | No form — a "No generated form for this manifest" placeholder with an **Edit YAML** shortcut, since custom manifests only exist as YAML. | +| CronJob / Hook workloads | The Form tab has no fields yet for these workload types — it shows only the values-vs-template info banner. Edit these manifests from the YAML tab, which is also where they open by default. | ### YAML tab diff --git a/content/docs/es/project/workload/manifests.mdx b/content/docs/es/project/workload/manifests.mdx index 555a0f7521..99bc3c3822 100644 --- a/content/docs/es/project/workload/manifests.mdx +++ b/content/docs/es/project/workload/manifests.mdx @@ -77,9 +77,10 @@ Lo que ves depende del role del manifiesto: | --- | --- | | `deployment` | **Command**, y **Healthcheck path/port** para WebServices. Replicas, resources y autoscaling quedan en el tab [Values](/docs/project/workload/values) — son values del release, no del formulario. | | `ingress` | El **Domain** del Workload (solo lectura — los dominios se gestionan desde el formulario del Workload) y su **Schema** (public/private/internal). Se renderiza un Ingress por dominio; pasar a internal desactiva los manifiestos de Ingress. | -| `service` | **Service port** y **Target port**, solo lectura, siguiendo el puerto del container del formulario del Workload. | +| `service` | **Service port** y **Target port**, solo lectura — Target port sigue el puerto del container del formulario del Workload. | | `pdb` / `hpa` | Un switch de **High availability** / **Autoscaling** — el mismo Enabled que muestra el grafo para ese manifiesto — más campos de solo lectura tomados del Resource Set del Workload (min available para PDB; min, max y CPU target para HPA). | | `custom` (agregado por el usuario) | Sin formulario — un placeholder "No generated form for this manifest" con un acceso **Edit YAML**, porque los manifiestos custom solo existen como YAML. | +| Workloads CronJob / Hook | El tab Form todavía no tiene campos para estos tipos de workload — solo muestra el banner informativo de values-vs-template. Editalos desde el tab YAML, que además es donde abren por defecto. | ### Tab YAML From bf32196ccc2ea89905e1f783a128b64816cd31dc Mon Sep 17 00:00:00 2001 From: Gonzalo Ferreyra Date: Fri, 14 Aug 2026 12:25:53 -0300 Subject: [PATCH 16/16] =?UTF-8?q?docs(project):=20revert=20Form=20tab=20se?= =?UTF-8?q?ction=20=E2=80=94=20not=20shipping=20in=20the=20near=20term?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docs/en/project/workload/manifests.mdx | 21 ------------------- .../docs/es/project/workload/manifests.mdx | 21 ------------------- 2 files changed, 42 deletions(-) diff --git a/content/docs/en/project/workload/manifests.mdx b/content/docs/en/project/workload/manifests.mdx index a520a2bd35..a2754217ca 100644 --- a/content/docs/en/project/workload/manifests.mdx +++ b/content/docs/en/project/workload/manifests.mdx @@ -63,27 +63,6 @@ Adding a domain whose host maps to the same Kubernetes Ingress name as an existi Click any node to open the manifest editor. The header shows the manifest's kind, origin, base template version, an **Enabled** switch, a copy button and **Delete** (Admin role required — see [Who can edit manifests?](#who-can-edit-manifests)). -### Form tab - -:::info Not generally available yet -The Form tab isn't rolled out yet — this section documents it ahead of launch, not something you can currently turn on. -::: - -The Form tab edits **values**, not the template: it fills the same `<< form >>` variables the YAML tab shows, through plain fields instead of YAML, and never touches the manifest's structure — even on a `customized` manifest. Saving posts straight to the Workload's own service record, the same values the Workload form edits. - -What you see depends on the manifest's role: - -| Role | What the form shows | -| --- | --- | -| `deployment` | **Command**, plus **Healthcheck path/port** for WebServices. Replicas, resources and autoscaling stay on the [Values](/docs/project/workload/values) tab — those are release values, not form values. | -| `ingress` | The Workload's **Domain** (read-only — domains are managed from the Workload form) and its **Schema** (public/private/internal). One Ingress renders per domain; switching to internal disables the Ingress manifests. | -| `service` | Read-only **Service port** and **Target port** — Target port follows the container port from the Workload form. | -| `pdb` / `hpa` | A switch for **High availability** / **Autoscaling** — the same Enabled toggle the graph shows for that manifest — plus read-only fields sourced from the Workload's Resource Set (min available for PDB; min, max and CPU target for HPA). | -| `custom` (user-added) | No form — a "No generated form for this manifest" placeholder with an **Edit YAML** shortcut, since custom manifests only exist as YAML. | -| CronJob / Hook workloads | The Form tab has no fields yet for these workload types — it shows only the values-vs-template info banner. Edit these manifests from the YAML tab, which is also where they open by default. | - -### YAML tab - >` que muestra el tab YAML, pero con campos en vez de YAML, y nunca toca la estructura del manifiesto — incluso en uno `customized`. Guardar escribe directo sobre el registro del Service del Workload, los mismos valores que edita el formulario del Workload. - -Lo que ves depende del role del manifiesto: - -| Role | Qué muestra el formulario | -| --- | --- | -| `deployment` | **Command**, y **Healthcheck path/port** para WebServices. Replicas, resources y autoscaling quedan en el tab [Values](/docs/project/workload/values) — son values del release, no del formulario. | -| `ingress` | El **Domain** del Workload (solo lectura — los dominios se gestionan desde el formulario del Workload) y su **Schema** (public/private/internal). Se renderiza un Ingress por dominio; pasar a internal desactiva los manifiestos de Ingress. | -| `service` | **Service port** y **Target port**, solo lectura — Target port sigue el puerto del container del formulario del Workload. | -| `pdb` / `hpa` | Un switch de **High availability** / **Autoscaling** — el mismo Enabled que muestra el grafo para ese manifiesto — más campos de solo lectura tomados del Resource Set del Workload (min available para PDB; min, max y CPU target para HPA). | -| `custom` (agregado por el usuario) | Sin formulario — un placeholder "No generated form for this manifest" con un acceso **Edit YAML**, porque los manifiestos custom solo existen como YAML. | -| Workloads CronJob / Hook | El tab Form todavía no tiene campos para estos tipos de workload — solo muestra el banner informativo de values-vs-template. Editalos desde el tab YAML, que además es donde abren por defecto. | - -### Tab YAML -