diff --git a/content/docs/en/cli.mdx b/content/docs/en/cli.mdx index 712c01763..39267351a 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/domain/index.mdx b/content/docs/en/domain/index.mdx index 327eede72..253978afb 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/chart/extra_templates.mdx b/content/docs/en/project/chart/extra_templates.mdx index acfe64739..dffb3ee00 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 3dcd58202..7082bae6d 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 1d804f8cd..71e7c7114 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 63% rename from content/docs/en/project/manifests.mdx rename to content/docs/en/project/workload/manifests.mdx index 2ad9ab57e..a2754217c 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"; @@ -10,14 +10,16 @@ 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. 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. + ## Where to find them 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. @@ -41,15 +43,25 @@ 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. + +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. +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. +### 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. + +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 -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 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. +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: @@ -85,11 +97,13 @@ 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, 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 -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)): -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. ### 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.
@@ -199,5 +229,5 @@ Disabling keeps the manifest and its configuration but skips it at deploy time ### 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 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/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 86% rename from content/docs/en/project/values.mdx rename to content/docs/en/project/workload/values.mdx index a2f0ae0ca..70c3b0a24 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): diff --git a/content/docs/en/project/values/project-global-values.png b/content/docs/en/project/workload/values/project-global-values.png similarity index 100% rename from content/docs/en/project/values/project-global-values.png rename to content/docs/en/project/workload/values/project-global-values.png diff --git a/content/docs/en/project/values/workload-effective-values.png b/content/docs/en/project/workload/values/workload-effective-values.png similarity index 100% rename from content/docs/en/project/values/workload-effective-values.png rename to content/docs/en/project/workload/values/workload-effective-values.png diff --git a/content/docs/en/project/values/workload-values-tab.png b/content/docs/en/project/workload/values/workload-values-tab.png similarity index 100% rename from content/docs/en/project/values/workload-values-tab.png rename to content/docs/en/project/workload/values/workload-values-tab.png diff --git a/content/docs/es/cli.mdx b/content/docs/es/cli.mdx index d230f2d68..829edfe7d 100644 --- a/content/docs/es/cli.mdx +++ b/content/docs/es/cli.mdx @@ -90,7 +90,7 @@ Aquí, **project** y **environment** son los argumentos obligatorios. El usuario ### Inyectar values en el deploy -Puedes inyectar values de Helm en un deployment puntual, por encima de todo lo configurado en la plataforma (ver [Values](/docs/project/values) para los niveles de override): +Puedes inyectar values de Helm en un deployment puntual, por encima de todo lo configurado en la plataforma (ver [Values](/docs/project/workload/values) para los niveles de override): ```plain sleakops deploy -p myapp -e prod -f values.prod.yaml diff --git a/content/docs/es/domain/index.mdx b/content/docs/es/domain/index.mdx index d1e1e9a05..78fa0fef2 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/chart/extra_templates.mdx b/content/docs/es/project/chart/extra_templates.mdx index 439ed2906..5d6624427 100644 --- a/content/docs/es/project/chart/extra_templates.mdx +++ b/content/docs/es/project/chart/extra_templates.mdx @@ -8,7 +8,7 @@ import { FiExternalLink } from "react-icons/fi"; # Extra Templates :::warning Deprecado en favor de Manifests -Extender templates y values está deprecado. Para agregar o editar recursos personalizados, usa la sección **Manifests** del Project — cada recurso se vuelve su propio manifiesto, con validación, preview y scoping por Workload. Ver la [documentación de Manifests](/docs/project/manifests). Los Extra Templates existentes se siguen desplegando como siempre hasta que los migres. +Extender templates y values está deprecado. Para agregar o editar recursos personalizados, usa la sección **Manifests** del Project — cada recurso se vuelve su propio manifiesto, con validación, preview y scoping por Workload. Ver la [documentación de Manifests](/docs/project/workload/manifests). Los Extra Templates existentes se siguen desplegando como siempre hasta que los migres. ::: Los Extra Templates te permiten desplegar recursos personalizados de Kubernetes más allá de los componentes integrados de SleakOps. Esta poderosa funcionalidad te permite extender tu proyecto con recursos especializados como Ingresses personalizados, pods de prueba, u otros objetos de Kubernetes adaptados a tus requisitos específicos. diff --git a/content/docs/es/project/chart/index.mdx b/content/docs/es/project/chart/index.mdx index f201bce04..fd8e3d060 100644 --- a/content/docs/es/project/chart/index.mdx +++ b/content/docs/es/project/chart/index.mdx @@ -83,8 +83,8 @@ Valores que se aplican a todo el Proyecto: 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 187ca2227..53c20e274 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 62% rename from content/docs/es/project/manifests.mdx rename to content/docs/es/project/workload/manifests.mdx index 553750517..d4560e13d 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"; @@ -10,14 +10,16 @@ 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. 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 prerrequisito para importar un Project desde un release de Helm existente. + ## Dónde encontrarlos 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. @@ -41,15 +43,25 @@ 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. | -Los manifiestos deshabilitados muestran un badge `Disabled` y sus aristas se dibujan punteadas. +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. +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. +### 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. + +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 -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 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. +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: @@ -85,11 +97,13 @@ 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 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 -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)): -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. ### ¿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.
@@ -199,5 +229,5 @@ Deshabilitar conserva el manifiesto y su configuración pero lo saltea al desple ### ¿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 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/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 86% rename from content/docs/es/project/values.mdx rename to content/docs/es/project/workload/values.mdx index 0bfd4822f..3f250d542 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): diff --git a/content/docs/es/project/values/project-global-values.png b/content/docs/es/project/workload/values/project-global-values.png similarity index 100% rename from content/docs/es/project/values/project-global-values.png rename to content/docs/es/project/workload/values/project-global-values.png diff --git a/content/docs/es/project/values/workload-effective-values.png b/content/docs/es/project/workload/values/workload-effective-values.png similarity index 100% rename from content/docs/es/project/values/workload-effective-values.png rename to content/docs/es/project/workload/values/workload-effective-values.png diff --git a/content/docs/es/project/values/workload-values-tab.png b/content/docs/es/project/workload/values/workload-values-tab.png similarity index 100% rename from content/docs/es/project/values/workload-values-tab.png rename to content/docs/es/project/workload/values/workload-values-tab.png diff --git a/content/tutorials/en/sticky-sessions.mdx b/content/tutorials/en/sticky-sessions.mdx index b626d9d4f..61aa08db0 100644 --- a/content/tutorials/en/sticky-sessions.mdx +++ b/content/tutorials/en/sticky-sessions.mdx @@ -142,5 +142,5 @@ If your application exposes its hostname anywhere — the `HOSTNAME` environment ## Next Steps - [Web Service configuration](/docs/project/workload/webservice) — the rest of the Workload settings, including replicas and autoscaling -- [Manifests](/docs/project/manifests) — edit the generated Ingress YAML directly when an annotation is not enough -- [Values](/docs/project/values) — override any generated Helm value, including per-host ingress settings +- [Manifests](/docs/project/workload/manifests) — edit the generated Ingress YAML directly when an annotation is not enough +- [Values](/docs/project/workload/values) — override any generated Helm value, including per-host ingress settings diff --git a/content/tutorials/es/sticky-sessions.mdx b/content/tutorials/es/sticky-sessions.mdx index 8eff1ae37..074a07b34 100644 --- a/content/tutorials/es/sticky-sessions.mdx +++ b/content/tutorials/es/sticky-sessions.mdx @@ -142,5 +142,5 @@ Si tu aplicación expone su hostname en algún lado —la variable de entorno `H ## Próximos pasos - [Configuración de Web Service](/docs/project/workload/webservice) — el resto de las opciones del Workload, incluidas réplicas y autoscaling -- [Manifests](/docs/project/manifests) — editá directamente el YAML del Ingress generado cuando una anotación no alcanza -- [Values](/docs/project/values) — sobrescribí cualquier value generado de Helm, incluidas las opciones de ingress por host +- [Manifests](/docs/project/workload/manifests) — editá directamente el YAML del Ingress generado cuando una anotación no alcanza +- [Values](/docs/project/workload/values) — sobrescribí cualquier value generado de Helm, incluidas las opciones de ingress por host diff --git a/docusaurus.config.js b/docusaurus.config.js index 97a1b2428..4666701d4 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -176,6 +176,17 @@ const config = { : undefined, }, ], + [ + "@docusaurus/plugin-client-redirects", + { + // Manifests + Values moved from project/ to project/workload/. + // console/src/utils/helplinks.js hardcodes the old URL, so it must keep resolving. + redirects: [ + { to: "/docs/project/workload/manifests", from: "/docs/project/manifests" }, + { to: "/docs/project/workload/values", from: "/docs/project/values" }, + ], + }, + ], ], themeConfig: { diff --git a/package.json b/package.json index b1acddf86..981f57430 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dependencies": { "@algolia/client-search": "^4.9.1", "@docusaurus/core": "^3.9.2", + "@docusaurus/plugin-client-redirects": "^3.9.2", "@docusaurus/plugin-google-analytics": "^3.9.2", "@docusaurus/plugin-sitemap": "^3.9.2", "@docusaurus/preset-classic": "^3.9.2", diff --git a/yarn.lock b/yarn.lock index b76157dde..81436dce4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1930,6 +1930,21 @@ react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" +"@docusaurus/plugin-client-redirects@3.9.2": + version "3.9.2" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-3.9.2.tgz#9c27025c72aeeedeb783a94720163911567da0e8" + integrity sha512-lUgMArI9vyOYMzLRBUILcg9vcPTCyyI2aiuXq/4npcMVqOr6GfmwtmBYWSbNMlIUM0147smm4WhpXD0KFboffw== + dependencies: + "@docusaurus/core" "3.9.2" + "@docusaurus/logger" "3.9.2" + "@docusaurus/utils" "3.9.2" + "@docusaurus/utils-common" "3.9.2" + "@docusaurus/utils-validation" "3.9.2" + eta "^2.2.0" + fs-extra "^11.1.1" + lodash "^4.17.21" + tslib "^2.6.0" + "@docusaurus/plugin-content-blog@3.9.2": version "3.9.2" resolved "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.9.2.tgz"