Skip to content

feat: all tutorials from notion#181

Open
agustinoli wants to merge 55 commits into
developfrom
feat/all-tutorials
Open

feat: all tutorials from notion#181
agustinoli wants to merge 55 commits into
developfrom
feat/all-tutorials

Conversation

@agustinoli
Copy link
Copy Markdown
Contributor

@agustinoli agustinoli commented May 19, 2026

Summary by CodeRabbit

Release Notes

  • Documentación
    • Se han añadido 40+ nuevos tutoriales en inglés y español cubriendo migraciones de bases de datos, despliegues en Kubernetes, optimización de costos en AWS, configuración de monitorización con Datadog y New Relic, y solución de problemas de conectividad.
    • Se mejoró la visualización de código en PowerShell, Bash, Docker y YAML.

Review Change Stack

agustinoli added 30 commits May 12, 2026 17:15
agustinoli added 18 commits May 13, 2026 08:59
…9mcontent�[38;2;187;187;187m �[39mimprovements�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mmigrated�[38;2;187;187;187m �[39mtutorials

�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mRemove�[38;2;187;187;187m �[39mall�[38;2;187;187;187m �[39m�[38;2;0;136;0;03m## Next Steps / ## Próximos pasos sections (7 EN + 6 ES files)�[39;00m
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mAdd�[38;2;187;187;187m �[39mKEDA�[38;2;187;187;187m �[39mtutorial�[38;2;187;187;187m �[39mlink�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mworkers�[38;2;102;102;102m-�[39muse�[38;2;102;102;102m-�[39mcases�[38;2;187;187;187m �[39msection�[38;2;187;187;187m �[39m�[38;2;102;102;102m3�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mtable�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mAdd�[38;2;187;187;187m �[39mEBS�[38;2;102;102;102m/�[39mEFS�[38;2;187;187;187m �[39mCSI�[38;2;187;187;187m �[39mDriver�[38;2;187;187;187m �[39mdoc�[38;2;187;187;187m �[39mlinks�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mdeploy�[38;2;102;102;102m-�[39mretool�[38;2;102;102;102m-�[39mhelm�[38;2;187;187;187m �[39mprerequisites�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mRemove�[38;2;187;187;187m �[39m�[38;2;187;68;68m"�[39m�[38;2;187;68;68mHelm configured�[39m�[38;2;187;68;68m"�[39m�[38;2;187;187;187m �[39mfrom�[38;2;187;187;187m �[39minstall�[38;2;102;102;102m-�[39mdatadog�[38;2;187;187;187m �[39mprerequisites;�[38;2;187;187;187m �[39mdrop�[38;2;187;187;187m �[39mhelm�[38;2;187;187;187m �[39mversion�[38;2;187;187;187m �[39mcheck�[38;2;187;187;187m �[39mfrom�[38;2;187;187;187m �[39mStep�[38;2;187;187;187m �[39m�[38;2;102;102;102m1�[39m�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mChange�[38;2;187;187;187m �[39mdeploy�[38;2;102;102;102m-�[39mdatadog�[38;2;102;102;102m-�[39moperator�[38;2;187;187;187m �[39mtip�[38;2;187;187;187m �[39mfrom�[38;2;187;187;187m �[39m�[38;2;187;68;68m"�[39m�[38;2;187;68;68mspecific client�[39m�[38;2;187;68;68m"�[39m�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39m�[38;2;187;68;68m"�[39m�[38;2;187;68;68mreference configuration�[39m�[38;2;187;68;68m"�[39m�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mAdd�[38;2;187;187;187m �[39mTODO�[38;2;187;187;187m �[39mscreenshot�[38;2;187;187;187m �[39mplaceholders�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mnetworking�[38;2;102;102;102m-�[39mvpc�[38;2;187;187;187m �[39msections�[38;2;187;187;187m �[39m�[38;2;102;102;102m2�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m4�[39m�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mAdd�[38;2;187;187;187m �[39mTODO�[38;2;187;187;187m �[39mscreenshot�[38;2;187;187;187m �[39mplaceholders�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mbitnami�[38;2;102;102;102m-�[39mimage�[38;2;102;102;102m-�[39mdeprecated�[38;2;187;187;187m �[39mfix�[38;2;187;187;187m �[39msteps�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mReplace�[38;2;187;187;187m �[39mS3�[38;2;187;187;187m �[39mIntelligent�[38;2;102;102;102m-�[39mTiering�[38;2;187;187;187m �[39mbash�[38;2;187;187;187m �[39mcommand�[38;2;187;187;187m �[39mwith�[38;2;187;187;187m �[39mSleakOps�[38;2;187;187;187m �[39mconsole�[38;2;187;187;187m �[39minstructions�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mAdd�[38;2;187;187;187m �[39mARM64�[38;2;187;187;187m �[39mcompatibility�[38;2;187;187;187m �[39mwarning�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39moptimize�[38;2;102;102;102m-�[39maws�[38;2;102;102;102m-�[39mcosts�[38;2;187;187;187m �[39mGraviton�[38;2;187;187;187m �[39msection�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mConvert�[38;2;187;187;187m �[39maws�[38;2;102;102;102m-�[39mcodeartifact�[38;2;102;102;102m-�[39mjava�[38;2;187;187;187m �[39mStep�[38;2;187;187;187m �[39m�[38;2;102;102;102m4�[39m�[38;2;187;187;187m �[39mCI�[38;2;102;102;102m/�[39mCD�[38;2;187;187;187m �[39mexamples�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mDocusaurus�[38;2;187;187;187m �[39mTabs�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mConvert�[38;2;187;187;187m �[39minstall�[38;2;102;102;102m-�[39mnew�[38;2;102;102;102m-�[39mrelic�[38;2;187;187;187m �[39mStep�[38;2;187;187;187m �[39m�[38;2;102;102;102m2�[39m�[38;2;187;187;187m �[39magent�[38;2;187;187;187m �[39minstallation�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mDocusaurus�[38;2;187;187;187m �[39mTabs�[38;2;187;187;187m �[39m(EN�[38;2;102;102;102m+�[39mES)
…tion

- postgresql-dump-restore: add job-creation-1.png and job-creation-2.png (Job form screenshots)
- networking-vpc: add network-architecture.png (traffic flow diagram) and vpc-peering.svg (VPC peering diagram)
- bitnami-image-deprecated: add chart-configuration.png and apply-changes.png (console screenshots)
- All images downloaded from Notion source pages and referenced via Zoom component in EN+ES
…;00m�[38;2;187;187;187m �[39m�[38;2;0;0;255mimage�[39m�[38;2;187;187;187m �[39mprompts,�[38;2;187;187;187m �[39mtutorial�[38;2;187;187;187m �[39mmetadata�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mminor�[38;2;187;187;187m �[39mfrontmatter�[38;2;187;187;187m �[39mfixes

�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mAdd�[39;00m�[38;2;187;187;187m �[39mTUTORIAL_IMAGE_PROMPTS.md�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mAI�[38;2;187;187;187m �[39m�[38;2;0;0;255mimage�[39m�[38;2;187;187;187m �[39mgeneration�[38;2;187;187;187m �[39mprompts�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mall�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m35�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mnew�[39;00m�[38;2;187;187;187m �[39mtutorials�[38;2;187;187;187m �[39m(SleakOps�[38;2;187;187;187m �[39mbrand�[38;2;187;187;187m �[39mcolors,�[38;2;187;187;187m �[39mself�[38;2;102;102;102m-�[39mcontained�[38;2;187;187;187m �[39mprompts�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mmkdir�[38;2;187;187;187m �[39mcommands)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mAdd�[39;00m�[38;2;187;187;187m �[39mhero�[38;2;187;187;187m �[39m�[38;2;0;0;255mimage�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mrds�[38;2;102;102;102m-�[39msnapshot�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mbetween�[39;00m�[38;2;102;102;102m-�[39maccounts
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mUpdate�[39;00m�[38;2;187;187;187m �[39mtutorials�[38;2;102;102;102m-�[39mgenerated.json�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mall�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m35�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mnew�[39;00m�[38;2;187;187;187m �[39mtutorials�[38;2;187;187;187m �[39m(en�[38;2;187;187;187m �[39m�[38;2;102;102;102m+�[39m�[38;2;187;187;187m �[39mes,�[38;2;187;187;187m �[39m�[38;2;102;102;102m46�[39m�[38;2;187;187;187m �[39mtotal�[38;2;187;187;187m �[39m�[38;2;170;34;255;01meach�[39;00m)
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mFix�[38;2;187;187;187m �[39msidebar_position�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mchangelog�[38;2;187;187;187m �[39mentries�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mclean�[38;2;187;187;187m �[39mempty�[38;2;187;187;187m �[39mfrontmatter�[38;2;187;187;187m �[39mfields

Co�[38;2;102;102;102m-�[39mAuthored�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mBy�[39;00m:�[38;2;187;187;187m �[39mClaude�[38;2;187;187;187m �[39mSonnet�[38;2;187;187;187m �[39m�[38;2;102;102;102m4.6�[39m�[38;2;187;187;187m �[39m�[38;2;102;102;102m<�[39mnoreply�[38;2;184;134;11m@anthropic�[39m.com�[38;2;102;102;102m>�[39m
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 19, 2026

Caution

Review failed

Failed to post review comments

Walkthrough

Se agregan múltiples tutoriales MDX en EN/ES, se añaden documentos auxiliares, se actualiza el índice JSON de tutoriales, se amplía Prism con lenguajes adicionales y se define .DEFAULT_GOAL := help en el Makefile.

Changes

Documentación y wiring del sitio

Layer / File(s) Summary
Contenido MDX y configuración unificados
content/tutorials/..., src/data/tutorials-generated.json, docusaurus.config.js, Makefile, TUTORIALS_*.md
Se incorporan numerosos tutoriales EN/ES, documentos de soporte, se actualiza el catálogo JSON, se amplía Prism y se ajusta el Makefile.

Estimated code review effort

🎯 4 (Complejo) | ⏱️ ~60 minutes

Possibly related PRs

  • sleakops/docs#140: También modifica el catálogo src/data/tutorials-generated.json y contenidos MDX.

Suggested reviewers

  • karim090

Poem

Entre pods, peering y buckets al sol,
los tutoriales desfilan en rock and roll.
Prism pinta bash, yaml y docker con sazón,
el Makefile dice “help”, manda razón.
SleakOps compila, sin miedo ni tropezón. 💥📚🚀

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/all-tutorials

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 20

Note

Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
content/tutorials/en/migrate-ecs-to-kubernetes.mdx (1)

1-58: ⚠️ Potential issue | 🔴 Critical | 🏗️ Heavy lift

Este tutorial es un esqueleto vacío — no debería mergearse sin contenido.

El archivo tiene únicamente TODOs y headers sin ningún contenido útil. Esto va a crear una experiencia rota para usuarios que lleguen a esta página. Si el tutorial no está terminado, no lo incluyas en este PR o marcalo como draft/wip en el frontmatter.

Opciones:

  1. Remover el archivo de este PR y agregarlo en un PR futuro cuando esté completo
  2. Completar el contenido antes del merge
  3. Agregar draft: true al frontmatter para ocultarlo de la navegación

¿Querés que te ayude a generar el contenido del tutorial basándome en la estructura de los otros tutoriales de migración?

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/migrate-ecs-to-kubernetes.mdx` around lines 1 - 58, The
file currently contains only headers and TODO placeholders (see frontmatter keys
title/sidebar_label/description and the multiple "/* TODO: ... */" blocks under
"## Step 1 — Audit Your ECS Workloads" through "## Step 6 — Cut Over and
Decommission ECS"), so fix by either (A) removing this file from the PR, (B)
fully replacing each TODO block with real tutorial content mirroring existing
migration guides (add a clear intro, step-by-step instructions for auditing ECS
task definitions, migrating env vars/secrets, configuring workloads, DNS
cutover, blue/green strategy, screenshots/examples, and verify/update
sidebar_label/title/description), or (C) mark the page as a draft by adding
draft: true to the frontmatter to hide it until complete; choose one of these
options and apply the change to the file's frontmatter and the TODO sections (or
delete the file) before merging.
content/tutorials/es/what-is-kubernetes-sleakops.mdx (1)

17-54: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Otro tutorial incompleto, puro TODO.

Al igual que tips-avoid-latency.mdx, este archivo es una estructura vacía con comentarios {/* TODO: ... */} sin contenido real.

Mismo diagnóstico:

  1. Completarlo antes del merge
  2. Sacarlo del PR y agregarlo cuando esté terminado
  3. Agregar un banner de "Work in Progress" si realmente lo querés publicar así

Dos tutoriales vacíos en el mismo PR es como ir al ring sin guantes — técnicamente se puede, pero no es la mejor idea.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/what-is-kubernetes-sleakops.mdx` around lines 17 - 54,
This file is a skeleton full of TODO comments under headings like "¿Qué es
Kubernetes?", "Conceptos Clave", "La Jerarquía de Kubernetes en SleakOps", "Qué
Gestiona SleakOps por Vos" and "Próximos Pasos"; either complete each section
with real Spanish content (clear explanation of Kubernetes, short practical
definitions for
Pod/Deployment/Service/Ingress/Namespace/ConfigMap/Secret/PersistentVolume,
mapping SleakOps concepts to Kubernetes objects, what SleakOps manages like
cluster provisioning/Karpenter/ALB ingress/storage/observability, and links to
Getting Started/docs) or remove this file from the PR and add it later when
finished; if you must keep it in the branch temporarily, add a prominent "Work
in Progress" banner at the top of this MDX so reviewers know it’s incomplete.
content/tutorials/es/tips-avoid-latency.mdx (1)

19-46: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Este tutorial está incompleto y solo tiene placeholders.

El contenido entero son bloques de comentario {/* TODO: ... */} sin implementar. Si esto va a develop, los usuarios van a ver un tutorial vacío en producción.

Opciones:

  1. Completar el contenido antes de mergear
  2. Remover este archivo del PR y agregarlo en un PR futuro cuando esté listo
  3. Agregar un banner visible arriba del todo indicando que el tutorial está en construcción (si realmente querés mergearlo incompleto)

En SleakOps arreglamos los conflictos a las piñas, pero mejor no mandar un tutorial vacío al ring.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/tips-avoid-latency.mdx` around lines 19 - 46, The file
contains only TODO comment blocks (placeholders) for all sections (e.g.,
headings "## 1. Evitar Llamadas Síncronas a Terceros..." through "## 5. Cachear
Datos Frecuentemente Leídos"), so do not merge as-is; either (A) replace each
TODO comment with finished Spanish content covering the anti-pattern, migration
to background workers, read-replica setup and routing, secondary service
pattern, connection pooling (PgBouncer) guidance, and Redis caching examples, or
(B) remove the file from the PR, or (C) if you must merge an incomplete draft,
add a prominent top-of-file banner/alert (visible to readers) that states "En
construcción — tutorial incompleto" and keep TODOs clearly marked; pick one
option and implement it consistently across the headings mentioned.
🟡 Minor comments (14)
content/tutorials/en/deploy-datadog-operator.mdx-127-130 (1)

127-130: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

El nombre del container hardcodeado es demasiado específico.

Las líneas 127-130 tienen:

- name: DD_CONTAINER_EXCLUDE
  value: "name:.*"
- name: DD_CONTAINER_INCLUDE
  value: "name:web-app-develop"

Esto excluye TODOS los containers excepto uno específico llamado "web-app-develop". Los usuarios van a copiar y pegar esto y después van a renegar porque Datadog no monitorea nada.

💡 Opción más clara para el tutorial
         - name: DD_CONTAINER_EXCLUDE
-          value: "name:.*"
+          value: "name:datadog.*"
         - name: DD_CONTAINER_INCLUDE
-          value: "name:web-app-develop"    # match spec.template.spec.containers.name
+          value: "name:.*"    # monitor all containers except datadog itself

O si realmente querés mostrar el patrón de incluir containers específicos, al menos agregar un comentario más claro:

         - name: DD_CONTAINER_EXCLUDE
           value: "name:.*"
         - name: DD_CONTAINER_INCLUDE
-          value: "name:web-app-develop"    # match spec.template.spec.containers.name
+          value: "name:web-app-develop|name:other-app"    # EXAMPLE: replace with your actual container names
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/deploy-datadog-operator.mdx` around lines 127 - 130,
Reemplaza el valor hardcodeado de DD_CONTAINER_INCLUDE que apunta a
"name:web-app-develop" y/o el par DD_CONTAINER_EXCLUDE/DD_CONTAINER_INCLUDE por
una opción más genérica y documentada: quitar la inclusión específica para no
excluir todos los containers por defecto (eliminar la variable
DD_CONTAINER_INCLUDE), o cambiar su value a un patrón genérico (ej.
"name:your-container-name" como ejemplo) y añadir un comentario claro explicando
que el usuario debe ajustar ese patrón a su propio nombre de container; apunta a
las variables DD_CONTAINER_EXCLUDE y DD_CONTAINER_INCLUDE para aplicar el cambio
y actualizar el comentario de ejemplo en la plantilla.
content/tutorials/en/deploy-retool-helm.mdx-59-64 (1)

59-64: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Falta warning de seguridad sobre cookies inseguras.

Las líneas 59 y 64 configuran:

useInsecureCookies: true
COOKIE_INSECURE: "true"

Esto deshabilita el flag Secure en las cookies, lo cual es un riesgo de seguridad (las cookies pueden ser interceptadas en HTTP). No hay ninguna advertencia sobre esto ni explicación de POR QUÉ está configurado así.

⚠️ Agregar contexto y warning

Después de la línea 64 o cerca de la línea 59, agregar:

   COOKIE_INSECURE: "true"
+
+  # Note: COOKIE_INSECURE is set to true because the ALB terminates TLS
+  # and forwards HTTP to the pods. Retool sees HTTP requests even though
+  # clients connect via HTTPS. In production, ensure your ALB is properly
+  # configured with HTTPS listeners (see ingress.annotations above).

O si preferís un warning más visible:

:::warning Security Note
`useInsecureCookies` and `COOKIE_INSECURE` are set to `true` because the ALB terminates TLS and forwards HTTP traffic to pods. Ensure your ALB ingress is properly configured with HTTPS listeners and that the `certificate-arn` annotation points to a valid ACM certificate. Never expose Retool directly via HTTP without TLS termination.
:::
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/deploy-retool-helm.mdx` around lines 59 - 64, Agrega una
advertencia de seguridad explicando por qué useInsecureCookies: true y
COOKIE_INSECURE: "true" son riesgos (deshabilitan la flag Secure en cookies) y
cuándo está permitido usarlos (p. ej. cuando el ALB termina TLS y reenvía HTTP a
pods), incluyendo instrucciones breves para asegurar el ALB (HTTPS listeners y
annotation certificate-arn apuntando a un certificado ACM válido); coloca este
warning inmediatamente después de la sección donde aparecen useInsecureCookies y
COOKIE_INSECURE (o cerca de la línea 59–64) y menciona también
ALLOW_SAME_ORIGIN_OPTION y BASE_DOMAIN como contexto para la configuración.
content/tutorials/en/deploy-retool-helm.mdx-56-57 (1)

56-57: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Los ejemplos de keys no coinciden con las instrucciones.

Las líneas 34-36 dicen explícitamente:

  • encryption-key: generate with openssl rand -base64 36
  • jwt-secret: generate with openssl rand -base64 36

Pero después en líneas 56-57 el ejemplo muestra:

encryption-key: privateprivateprivateprivateprivateprivate
jwt-secret: privateprivateprivateprivateprivateprivate

Eso NO es output de openssl rand -base64 36 (que produce algo como K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=). Esto puede confundir a usuarios que no sepan si usar el comando o copiar el ejemplo.

🔑 Opciones para arreglar

Opción 1: Usar ejemplos realistas

-  encryption-key: privateprivateprivateprivateprivateprivate
-  jwt-secret: privateprivateprivateprivateprivateprivate
+  encryption-key: K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=
+  jwt-secret: Xp9R2wT8vF6nM4kL3hS7aZ5qY1xW0uE9bC8dG2fJ6oI=

Opción 2: Usar placeholders más obvios

-  encryption-key: privateprivateprivateprivateprivateprivate
-  jwt-secret: privateprivateprivateprivateprivateprivate
+  encryption-key: <GENERATED_WITH_OPENSSL_RAND_BASE64_36>
+  jwt-secret: <GENERATED_WITH_OPENSSL_RAND_BASE64_36>
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/deploy-retool-helm.mdx` around lines 56 - 57, The sample
values for encryption-key and jwt-secret are misleading; replace the hardcoded
"privateprivate..." lines so they match the earlier instructions: either show a
realistic example output produced by openssl (e.g. a base64 string like
K7gNU3sdo+OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols=) or use explicit placeholders that
indicate the generation command (e.g. encryption-key: <generate with `openssl
rand -base64 36`>, jwt-secret: <generate with `openssl rand -base64 36`>);
update the lines referencing encryption-key and jwt-secret in the example block
accordingly so users aren’t confused about copying vs generating.
content/tutorials/en/install-new-relic.mdx-45-55 (1)

45-55: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Te falta el warning de seguridad sobre la license key.

Estás mostrando la license key en plaintext (línea 50) pero no advertís que NO se debe commitear a un repo. El tutorial de Datadog (install-datadog.mdx, líneas 56-58) SÍ tiene este warning. Mantené la consistencia entre tutoriales y agregá la misma advertencia acá.

⚠️ Warning sugerido

Agregá después del bloque de código del newrelic.js:

:::warning
Do not commit `newrelic.js` with the license key to a repository. Use environment variables or a secrets management solution.
:::
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/install-new-relic.mdx` around lines 45 - 55, Add the
same security warning shown in the Datadog tutorial after the newrelic.js code
block: warn that the license_key in newrelic.js must not be committed to a
repository and recommend using environment variables or a secrets manager;
reference the newrelic.js file and the license_key field so reviewers can locate
and insert the :::warning block immediately after the shown code block.
content/tutorials/en/environment-exhaustive-testing-guide.mdx-2-4 (1)

2-4: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Los metadatos están a medio completar.

El title parece un slug (kebab-case) y la description dice solo "test". Si este tutorial está "Coming soon", al menos ponele metadatos descriptivos o sacalo del sidebar hasta que esté listo.

📝 Ejemplo de metadatos apropiados
 ---
-title: environment-exhaustive-testing-guide
+title: Exhaustive Environment Testing Guide
 sidebar_position: 15
-description: test
+description: Comprehensive guide for testing environments on SleakOps (coming soon).
 ---
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/environment-exhaustive-testing-guide.mdx` around lines 2
- 4, El frontmatter está incompleto: cambia el campo title (actualmente
"environment-exhaustive-testing-guide") por un título legible (por ejemplo
"Environment Exhaustive Testing Guide" o su traducción) y reemplaza description
("test") por una descripción breve y útil del tutorial; si el contenido aún no
está listo, quita o desactiva la entrada del sidebar en vez de dejar metadatos
temporales (ajusta sidebar_position o marca como borrador), editando los valores
title y description en el encabezado del archivo para reflejar el estado real
del tutorial.
content/tutorials/en/migrate-postgres-heroku-to-rds.mdx-84-84 (1)

84-84: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

"LSN_OBTENIDO" está en español en un tutorial en inglés.

Deberías usar OBTAINED_LSN o LSN_VALUE para mantener consistencia con el idioma del documento.

   pgcopydb follow \
     --source "$PG_SOURCE_URL" \
     --target "$PG_TARGET_URL" \
     --dir /tmp/pgcopydb \
-    --endpos "LSN_OBTENIDO" \
+    --endpos "OBTAINED_LSN" \
     --jobs N
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/migrate-postgres-heroku-to-rds.mdx` at line 84, Replace
the Spanish identifier LSN_OBTENIDO with an English name (e.g., OBTAINED_LSN or
LSN_VALUE) to keep the tutorial consistent; update the token "--endpos
"LSN_OBTENIDO"" and any other occurrences of LSN_OBTENIDO in the document
(examples, code blocks, explanatory text) to the chosen English identifier
(OBTAINED_LSN or LSN_VALUE) so all references remain consistent.
content/tutorials/en/lambda-cicd-github-actions.mdx-84-96 (1)

84-96: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

El trigger del workflow incluye la rama staging pero el deploy solo corre en main.

El workflow se dispara en push a main y staging (líneas 84-85), pero el job de deploy tiene una condición if: github.ref == 'refs/heads/main' (línea 96) que lo limita únicamente a main. Los commits a staging dispararán el workflow pero no ejecutarán nada. Si esto es intencional, está bien; si querés deployar desde ambas ramas, necesitás ajustar la lógica para manejar diferentes funciones Lambda o entornos según la rama.

🔧 Ajuste propuesto si se desea deploy multi-ambiente
 env:
   AWS_REGION: us-east-1
-  LAMBDA_FUNCTION_NAME: example-lambda
 
 jobs:
   deploy:
     runs-on: ubuntu-latest
-    if: github.ref == 'refs/heads/main'
+    if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/staging'
     steps:
       - uses: actions/checkout@v4
+
+      - name: Set environment-specific variables
+        run: |
+          if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then
+            echo "LAMBDA_FUNCTION_NAME=example-lambda-prod" >> $GITHUB_ENV
+          else
+            echo "LAMBDA_FUNCTION_NAME=example-lambda-staging" >> $GITHUB_ENV
+          fi
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/lambda-cicd-github-actions.mdx` around lines 84 - 96, El
workflow dispara pushes a las ramas indicadas en la clave push (branches: [main,
staging]) pero el job deploy tiene la condición rígida if: github.ref ==
'refs/heads/main', por lo que los pushes a staging no ejecutan deploy; arreglalo
o alineando los triggers y la condición: o limitar push a solo main, o ampliar
la condición del job deploy (por ejemplo permitir refs/heads/staging) y añadir
lógica para seleccionar variables por rama (p. ej. cambiar
LAMBDA_FUNCTION_NAME/AWS_REGION según github.ref o usar un mapa de entornos
dentro del job deploy) para que deploye al entorno correcto cuando la rama sea
staging o main.
content/tutorials/en/test-site-to-site-vpn.mdx-57-64 (1)

57-64: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Haz consistente el ejemplo: defines variables pero el comando va hardcodeado.

Para que no se rompa “a las piñas” al copiar/pegar en otros entornos, usa las variables en el comando.

Propuesta de ajuste
+NAT_IP="10.100.0.10"
+REMOTE_IP="192.168.0.100"
+PORT="443"
-nmap -p 443 192.168.0.100
+nmap -p "$PORT" "$REMOTE_IP"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/test-site-to-site-vpn.mdx` around lines 57 - 64, El
ejemplo define las variables NAT_IP, REMOTE_IP y PORT pero el comando usa
valores hardcodeados; actualiza el ejemplo de comprobación (la línea con nmap)
para usar las variables definidas (NAT_IP/REMOTE_IP/PORT) en lugar de
192.168.0.100 y 443, de modo que los lectores puedan copiar/pegar y ejecutar en
sus entornos sin cambiar manualmente los valores; busca las referencias a
NAT_IP, REMOTE_IP y PORT en el bloque de ejemplo y sustituye el comando nmap
para que emplee esas variables.
content/tutorials/es/aws-codeartifact-java.mdx-109-145 (1)

109-145: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Aclarar de dónde sale el settings.xml que usa el mvn.

En la línea 144, el comando mvn -s settings.xml referencia un archivo settings.xml local que debería estar en el repo, pero en los pasos anteriores solo mostraste codeartifact_settings.xml.

Agregá una aclaración de que hay que crear/renombrar el archivo en el repo o ajustá el comando para que use el mismo approach del Dockerfile (inyectar el token via env var en el momento del build).

Opción sugerida: Usar el mismo patrón de variables de entorno que en el Dockerfile y eliminar la necesidad de un archivo settings.xml versionado:

- name: Build y Deploy
  env:
    CODEARTIFACT_AUTH_TOKEN: ${{ env.CODEARTIFACT_AUTH_TOKEN }}
    CODEARTIFACT_REPOSITORY: https://${{ secrets.CODEARTIFACT_DOMAIN }}-${{ secrets.CODEARTIFACT_ACCOUNT }}.d.codeartifact.${{ secrets.AWS_REGION }}.amazonaws.com/maven/${{ secrets.CODEARTIFACT_REPO }}/
  run: mvn -s codeartifact_settings.xml clean package deploy

Y clarificar que codeartifact_settings.xml debe estar en el repo.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/aws-codeartifact-java.mdx` around lines 109 - 145, The
workflow references mvn -s settings.xml but settings.xml is not provided; either
state that settings.xml must be added/renamed from codeartifact_settings.xml in
the repo or change the Build y Deploy step to use the same env-injection
approach as the Dockerfile: export CODEARTIFACT_AUTH_TOKEN into GITHUB_ENV
(already done) and set CODEARTIFACT_REPOSITORY via env using secrets, then run
mvn with -s codeartifact_settings.xml (or remove -s and rely on settings in the
build environment); update the docs to explicitly mention which file
(codeartifact_settings.xml) must exist in the repo and show the Build y Deploy
step using CODEARTIFACT_AUTH_TOKEN and CODEARTIFACT_REPOSITORY environment
variables.
content/tutorials/es/dms-rds-migration.mdx-52-60 (1)

52-60: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Considerá el riesgo de seguridad del flag --publicly-accessible.

La línea 59 usa --publicly-accessible para la Replication Instance de DMS, lo que la expone a internet. Aunque puede simplificar el setup inicial, en producción es mejor usar subnets privadas y confiar en el VPC peering que configurás más adelante. Aclaralo en el tutorial o removelo si el VPC peering ya cubre la conectividad.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/dms-rds-migration.mdx` around lines 52 - 60, La
instrucción que crea la réplica usa el flag --publicly-accessible en el comando
aws dms create-replication-instance, lo que expone la Replication Instance a
Internet; quita ese flag (o reemplázalo por un comentario/nota en el tutorial) y
aclara que en producción se deben usar subnets privadas y VPC peering para la
conectividad (o mostrar una opción condicional para entornos de prueba vs.
producción) para evitar crear instancias públicas innecesarias.
content/tutorials/es/connect-aws-resources.mdx-119-122 (1)

119-122: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Corregí la sintaxis de transformToString():

El método en la línea 121 debe ser res.Body.transformToString sin paréntesis. La documentación de AWS SDK v3 muestra que es una propiedad que retorna una promesa, no una función que se llama con (). El código debería ser:

return res.Body.transformToString;

O si prefieres ser explícito, podés también awaitar:

return await res.Body.transformToString;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/connect-aws-resources.mdx` around lines 119 - 122, La
función descargarArchivo usa res.Body.transformToString() incorrectamente porque
transformToString es una promesa-propiedad, no un método; en la función
descargarArchivo (donde se usa s3.send(new GetObjectCommand({ Bucket: bucket,
Key: key }))), reemplazá la llamada con la propiedad de promesa correcta —por
ejemplo retornando res.Body.transformToString o await
res.Body.transformToString— para resolver la sintaxis y asegurar que la cadena
se devuelva correctamente.
content/tutorials/es/environment-exhaustive-testing-guide.mdx-2-2 (1)

2-2: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Corregir error tipográfico en el título.

"exhaustivametne" debería ser "exhaustivamente".

📝 Corrección propuesta
-title: ¿Cómo probar exhaustivametne mi aplicación para validar un ambiente?
+title: ¿Cómo probar exhaustivamente mi aplicación para validar un ambiente?
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/environment-exhaustive-testing-guide.mdx` at line 2, Fix
the typo in the frontmatter title: replace "exhaustivametne" with
"exhaustivamente" in the title value (i.e., update the title line that currently
reads '¿Cómo probar exhaustivametne mi aplicación para validar un ambiente?' to
'¿Cómo probar exhaustivamente mi aplicación para validar un ambiente?').
content/tutorials/es/optimize-docker-image.mdx-106-109 (1)

106-109: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Clarificá los comandos según la imagen base (Alpine vs Debian/Ubuntu).

En líneas 106-109 mostrás apt-get, pero el tutorial promueve imágenes *-alpine desde el inicio (línea 61 y tabla final). Si alguien copia ese código para Alpine, lo rompe directamente (necesita apk add --no-cache). Conviene aclarar con ambos ejemplos.

Sugerencia de ajuste
+# Debian/Ubuntu base
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    algun-paquete \
+    && rm -rf /var/lib/apt/lists/*
+
+# Alpine base
+RUN apk add --no-cache algun-paquete
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/optimize-docker-image.mdx` around lines 106 - 109, The
Dockerfile snippet uses apt-get but the tutorial promotes `*-alpine` images
earlier; update the text around the RUN snippet to clearly state that package
manager commands depend on the base image and provide both examples: for
Debian/Ubuntu bases use `apt-get update && apt-get install -y
--no-install-recommends ... && rm -rf /var/lib/apt/lists/*` and for Alpine bases
use `apk add --no-cache ...`; reference the RUN instruction and the `*-alpine`
mention so readers know which command to use for each base.
src/data/tutorials-generated.json-829-829 (1)

829-829: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Typo en título público del tutorial en español.

En Line 829 aparece “exhaustivametne”; debería ser “exhaustivamente”.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/data/tutorials-generated.json` at line 829, Fix the typo in the Spanish
tutorial title: locate the JSON object where the "title" key currently reads
"¿Cómo probar exhaustivametne mi aplicación para validar un ambiente?" and
change "exhaustivametne" to "exhaustivamente" so the value becomes "¿Cómo probar
exhaustivamente mi aplicación para validar un ambiente?"; ensure the JSON string
remains valid (quotes/escaping unchanged) and run a quick JSON lint or unit
check to confirm no formatting errors.
🧹 Nitpick comments (15)
content/tutorials/en/bitnami-image-deprecated.mdx (1)

45-46: 💤 Low value

Aclaración sobre "already applied" puede confundir.

La línea 45 dice "SleakOps has already applied these changes to your charts" pero inmediatamente después dice "you only need to trigger the apply". Esto puede generar confusión - ¿ya están aplicados o no?

📝 Sugerencia de redacción más clara
-SleakOps has already applied these changes to your charts — you only need to trigger the apply from the chart configuration screen.
+SleakOps has already updated your chart values to use the correct repository. To apply them to your running workloads, you need to trigger a deployment from the chart configuration screen.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/bitnami-image-deprecated.mdx` around lines 45 - 46, La
frase "SleakOps has already applied these changes to your charts — you only need
to trigger the apply from the chart configuration screen." es ambigua; reemplaza
esa oración por una redacción clara que explique si los cambios ya están
aplicados o sólo preparados para aplicar, por ejemplo: "SleakOps has already
staged these changes in your charts; you only need to trigger Apply from the
chart configuration screen to publish them." Revisa y actualiza la línea que
contiene "SleakOps has already applied these changes to your charts" y la
cláusula "you only need to trigger the apply" para usar términos consistentes
como "staged" vs "applied" y un verbo de acción consistente ("Apply", "publish"
o "deploy") en el mismo fragmento.
content/tutorials/en/aws-local-authentication.mdx (1)

56-70: ⚡ Quick win

Falta advertencia de seguridad sobre credenciales en el archivo de config.

El ejemplo muestra credenciales hardcodeadas en el archivo ~/.aws/config (líneas 57-58), pero no hay ninguna advertencia explícita sobre no commitear este archivo o protegerlo.

⚠️ Agregar warning de seguridad

Después de la línea 70, agregar:

 region = us-east-1

+:::warning
+Never commit your ~/.aws/config or ~/.aws/credentials files to version control. Add them to .gitignore if working in a project directory. Keep your access keys secure and rotate them regularly.
+:::
+

  • security-account — your base user with access keys
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @content/tutorials/en/aws-local-authentication.mdx around lines 56 - 70,
Insert a clear security warning immediately after the shown AWS profile code
block (the block starting with "[profile security-account]" and ending with the
closing ``` fence) explaining never to commit ~/.aws/config or
`~/.aws/credentials` to version control, advising adding them to `.gitignore`,
keeping access keys secure and rotating them regularly; format it as the
suggested MDX warning block (:::warning ... :::) so it appears prominently in
the rendered tutorial.


</details>

</blockquote></details>
<details>
<summary>content/tutorials/en/migrate-postgres-heroku-to-rds.mdx (1)</summary><blockquote>

`57-69`: _⚡ Quick win_

**Clarificá de dónde vienen las variables de entorno para la target URL.**

El tutorial menciona `${USERNAME}`, `${PASSWORD}`, etc. pero no explica que estos valores están disponibles automáticamente en Pods del namespace donde está el RDS Dependency de SleakOps. Un usuario podría confundirse pensando que debe definirlas manualmente.




Agregá una nota antes del comando:

```markdown
:::info
The Pod's environment automatically includes `${USERNAME}`, `${PASSWORD}`, `${ADDRESS}`, and `${NAME}` variables injected by the SleakOps RDS Dependency. You only need to define `PG_SOURCE_URL` manually with your Heroku credentials.
:::
```

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/migrate-postgres-heroku-to-rds.mdx` around lines 57 -
69, Add an informational note immediately before the block that sets
PG_TARGET_URL/PG_SOURCE_URL (the code block that defines PG_SOURCE_URL and
PG_TARGET_URL and runs pgcopydb clone) clarifying that the environment variables
${USERNAME}, ${PASSWORD}, ${ADDRESS}, and ${NAME} used in PG_TARGET_URL are
injected automatically into the Pod by the SleakOps RDS Dependency, and that the
user only needs to manually define PG_SOURCE_URL with their Heroku credentials;
insert this note as an info-styled callout so readers understand they do not
need to set those four variables themselves.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/en/migrate-ebs-volumes.mdx (1)</summary><blockquote>

`133-138`: _⚡ Quick win_

**Buscar snapshots por descripción es frágil ante modificaciones del texto.**

Si el formato de la descripción cambia (espacios extra, caracteres especiales, etc.), el filtro `Name=description,Values=$description` fallará silenciosamente. Mejor usar tags con `Key=OriginalVolumeId,Value=$volume_id`.




<details>
<summary>♻️ Búsqueda por tag en lugar de descripción</summary>

```diff
   snapshot_id=$(aws ec2 describe-snapshots \
     --restorable-by-user-ids self \
-    --filters "Name=description,Values=$description" \
+    --filters "Name=tag:OriginalVolumeId,Values=$volume_id" \
     --query "Snapshots[0].SnapshotId" \
     --output text \
     --region "$source_region")
```

Asegurate de que el script del Step 2 incluya el tag `OriginalVolumeId` al crear el snapshot.
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/migrate-ebs-volumes.mdx` around lines 133 - 138, La
búsqueda por descripción es frágil: en lugar de filtrar por
"Name=description,Values=$description" en la invocación que establece
snapshot_id (la llamada a aws ec2 describe-snapshots), cambia el filtro para
buscar por tag usando "Name=tag:OriginalVolumeId,Values=$volume_id" y actualiza
el Step 2 para que al crear el snapshot incluya el tag OriginalVolumeId con el
ID del volumen; así modifica la llamada que asigna snapshot_id para usar el
filtro por tag y verifica que el código que crea snapshots añada el tag
OriginalVolumeId.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/en/lambda-cicd-github-actions.mdx (2)</summary><blockquote>

`141-151`: _⚡ Quick win_

**El health check con `grep` es frágil ante cambios de formato JSON.**

Si la respuesta JSON tiene espacios extra, saltos de línea o formato diferente, el `grep -q '"statusCode": 200'` puede fallar. Mejor usar `jq` para parseo robusto.




<details>
<summary>♻️ Health check con jq</summary>

```diff
       - name: Health check
         run: |
           aws lambda invoke \
             --function-name ${{ env.LAMBDA_FUNCTION_NAME }} \
             --payload '{"id": "health-check"}' \
             response.json
-          if ! grep -q '"statusCode": 200' response.json; then
+          STATUS_CODE=$(jq -r '.statusCode // 0' response.json)
+          if [ "$STATUS_CODE" -ne 200 ]; then
             echo "Health check failed"
             exit 1
           fi
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/lambda-cicd-github-actions.mdx` around lines 141 - 151,
El health check usa grep sobre response.json (bloque "Health check" que llama
aws lambda invoke) y es frágil ante formato JSON; reemplaza la verificación con
una llamada a jq que parsee response.json y verifique que .statusCode == 200
(por ejemplo usando jq -e '.statusCode==200' o jq '.statusCode' | grep -q
'^200$'), y asegúrate de que el step deje claro que jq debe estar disponible en
el runner antes de ejecutar el check.
```

</details>

---

`133-139`: _💤 Low value_

**Las variables de entorno se exponen en los logs de GitHub Actions.**

El comando `update-function-configuration` con `--environment Variables="{...}"` deja las variables visibles en los logs del workflow. Si bien `${{ secrets.DYNAMODB_TABLE }}` está enmascarado en la UI, la estructura del comando completo aparece en los logs.




<details>
<summary>📝 Alternativa con archivo de configuración temporal</summary>

```diff
       - name: Update Lambda configuration
         run: |
+          cat > /tmp/env.json <<EOF
+          {
+            "Variables": {
+              "TABLE_NAME": "${{ secrets.DYNAMODB_TABLE }}"
+            }
+          }
+          EOF
           aws lambda update-function-configuration \
             --function-name ${{ env.LAMBDA_FUNCTION_NAME }} \
-            --environment Variables="{TABLE_NAME=${{ secrets.DYNAMODB_TABLE }}}" \
+            --environment file:///tmp/env.json \
             --timeout 30 \
             --memory-size 256
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/lambda-cicd-github-actions.mdx` around lines 133 - 139,
El comando `aws lambda update-function-configuration` deja el contenido de
`--environment Variables="{...}"` expuesto en los logs; en la sección donde usas
`Update Lambda configuration` cambia para crear un archivo JSON temporal con la
estructura {"Variables":{"TABLE_NAME":"${{ secrets.DYNAMODB_TABLE }}"}} y
pasarlo al CLI con `--environment file://env.json` (por ejemplo: write env JSON
to a temp file, run `aws lambda update-function-configuration --function-name
${{ env.LAMBDA_FUNCTION_NAME }} --environment file://env.json --timeout 30
--memory-size 256`, then securely delete the temp file), garantizando que
`--environment Variables` ya no aparece inline en los logs.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/en/migrate-files-volumes-copy.mdx (1)</summary><blockquote>

`48-94`: _⚡ Quick win_

**El script no valida que los contextos de kubectl existan antes de usarlos.**

Si `SOURCE_CONTEXT` o `TARGET_CONTEXT` no están configurados, el script va a fallar con mensajes crípticos. Agregá validación al principio del script.




<details>
<summary>✅ Validación de contextos</summary>

```diff
 #!/bin/bash
 
 SOURCE_CONTEXT="source-context"      # kubectl context for the source cluster
 TARGET_CONTEXT="target-context"      # kubectl context for the target cluster
+
+# Validate contexts exist
+if ! kubectl config get-contexts "$SOURCE_CONTEXT" &>/dev/null; then
+  echo "Error: context '$SOURCE_CONTEXT' not found."
+  echo "Available contexts:"
+  kubectl config get-contexts -o name
+  exit 1
+fi
+
+if ! kubectl config get-contexts "$TARGET_CONTEXT" &>/dev/null; then
+  echo "Error: context '$TARGET_CONTEXT' not found."
+  exit 1
+fi
+
 SOURCE_POD="source-pod-name"
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/en/migrate-files-volumes-copy.mdx` around lines 48 - 94,
Agregá validación al inicio del script para asegurarte de que los contextos
definidos en SOURCE_CONTEXT y TARGET_CONTEXT existen antes de llamar a kubectl
config use-context: usar un comando como kubectl config get-contexts -o name y
comprobar que cada variable esté no vacía y presente en la lista; si falta
cualquiera, imprimir un mensaje claro que incluya el nombre del contexto
(SOURCE_CONTEXT o TARGET_CONTEXT) y terminar con exit 1. Inserta estas
comprobaciones justo antes de las primeras llamadas a kubectl config use-context
en el flujo principal (antes de usar SOURCE_CONTEXT para copiar y antes de usar
TARGET_CONTEXT para pegar). Asegurate también de que las variables
SOURCE_CONTEXT y TARGET_CONTEXT no estén vacías y proporcionar instrucciones de
uso en el mensaje de error.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/es/docker-desktop-alternative.mdx (1)</summary><blockquote>

`18-54`: **Pendiente: contenido completo del tutorial.**

El tutorial tiene la estructura lista pero falta el contenido en todas las secciones principales (comparativa, instalación de cada alternativa, recomendaciones). Ya tenés la referencia de Qovery para guiarte.


¿Querés que te ayude a generar el contenido faltante o abro un issue para trackear esta tarea?

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/docker-desktop-alternative.mdx` around lines 18 - 54,
The tutorial file currently contains only headings and TODO comments; replace
each TODO with full Spanish content: (1) under "¿Por Qué Considerar una
Alternativa?" add a brief paragraph about Docker Desktop license changes,
corporate restrictions, resource usage and local development impact; (2) replace
the "Comparativa de Alternativas" TODO with a rendered Markdown table as
sketched (tool, platform, gratis, k8s support, notas) and include a short
summary paragraph comparing trade-offs; (3) for each tool section ("## Rancher
Desktop", "## Podman Desktop", "## OrbStack (macOS)", "## Colima (macOS/Linux)")
add installation steps (CLI/homebrew/installer), key features, kube/kubectl
integration notes, example commands to start/stop and set container engine, and
any caveats (rootless, containerd vs dockerd, macOS-only); (4) in
"Recomendación" provide concise guidance mapping common workflows (desktop dev,
CI, lightweight macOS) to the recommended tool; and (5) cite the Qovery blog
reference and add links to official project pages and license notes for Docker
Desktop; ensure all content is in Spanish and replace the TODO comments with
finished prose and command examples.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/es/e2e-testing.mdx (1)</summary><blockquote>

`19-40`: **Pendiente: contenido completo del tutorial.**

El esqueleto está armado con los 4 pasos clave (setup, pipeline, tests, cleanup) pero falta toda la implementación. Tenés la guía de Qovery Hub como referencia.


¿Te genero el contenido o abrimos un issue para darle seguimiento?

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/e2e-testing.mdx` around lines 19 - 40, Replace the TODO
placeholders in content/tutorials/es/e2e-testing.mdx by writing the full
tutorial sections referenced by the headings (Prerrequisitos, Paso 1 —
Configurar el Entorno Efímero, Paso 2 — Configurar el Pipeline CI/CD, Paso 3 —
Ejecutar la Suite de Tests E2E, Paso 4 — Eliminar el Entorno) using the Qovery
Hub guide as source: list explicit prerequisites (SleakOps account, cluster,
example E2E frameworks like Playwright/Cypress), provide step-by-step
instructions to create a short-lived environment in SleakOps under "Paso 1"
(include required commands/CLI flow), add a complete CI/CD pipeline example for
GitHub Actions and/or GitLab CI in "Paso 2" that creates the environment,
polls/waits for readiness, runs tests and tears down, show how to configure
Playwright/Cypress to point to the ephemeral environment URL in "Paso 3",
include the teardown/cleanup step with exact pipeline commands in "Paso 4", and
remove all TODO comments; reference the headings above to locate the sections to
update.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/es/lambda-cicd-github-actions.mdx (1)</summary><blockquote>

`141-150`: _⚡ Quick win_

**Considerar usar `jq` en lugar de `grep` para parsear JSON.**

El uso de `grep` para verificar el `statusCode` en el JSON es frágil y puede fallar si hay variaciones de formato o whitespace. `jq` es más robusto y preciso para este caso.



<details>
<summary>♻️ Alternativa recomendada con jq</summary>

```diff
       - name: Health check
         run: |
           aws lambda invoke \
             --function-name ${{ env.LAMBDA_FUNCTION_NAME }} \
             --payload '{"id": "health-check"}' \
             response.json
-          if ! grep -q '"statusCode": 200' response.json; then
+          STATUS_CODE=$(jq -r '.statusCode' response.json)
+          if [ "$STATUS_CODE" != "200" ]; then
             echo "Health check falló"
             exit 1
           fi
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/lambda-cicd-github-actions.mdx` around lines 141 - 150,
Replace the fragile grep-based JSON check in the "Health check" GitHub Actions
step with a jq-based assertion: after running aws lambda invoke (targeting
env.LAMBDA_FUNCTION_NAME and writing to response.json), use jq to extract
.statusCode from response.json and fail if it is not 200; update the step that
currently references response.json and the check with grep to instead parse
response.json with jq and return a non-zero exit when the statusCode is not 200.
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/es/write-dockerfile.mdx (2)</summary><blockquote>

`47-47`: _💤 Low value_

**Falta newline al final del archivo.**

Mismo issue que en `workers-use-cases.mdx` — agregá una línea en blanco al final.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/write-dockerfile.mdx` at line 47, Agregá un newline
final al archivo write-dockerfile.mdx para corregir el EOF (mismo cambio
aplicado en workers-use-cases.mdx); simplemente abrir write-dockerfile.mdx y
añadir una línea en blanco al final del archivo y luego commitear.
```

</details>

---

`18-46`: _⚡ Quick win_

**Tutorial skeleton con contenido pendiente.**

Este tutorial tiene 7 secciones marcadas con TODO que necesitan completarse. Aunque según `TUTORIALS_REVIEW.md` esto está planificado, asegurate de que haya un issue o tarea trackeando la escritura del contenido completo para que no quede en el olvido.




¿Querés que te ayude a generar el contenido de alguna de estas secciones o a abrir un issue para trackear el trabajo pendiente?

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/write-dockerfile.mdx` around lines 18 - 46, This MDX
tutorial skeleton contains seven TODO sections (headings: "¿Qué es un
Dockerfile?", "Paso 1 — Un Dockerfile Básico", "Paso 2 — Builds Multi-Stage",
"Paso 3 — Usar un Archivo `.dockerignore`", "Paso 4 — Elegir la Imagen Base
Correcta", "Paso 5 — Cache de Capas", and "Errores Comunes a Evitar") that must
be completed; either open a tracked issue referencing this file and listing each
missing section (so work isn't forgotten) or replace each TODO with the live
content: a short definition for "¿Qué es un Dockerfile?", a minimal example
under "Paso 1 — Un Dockerfile Básico" (Node/Python or language-agnostic), a
multi-stage build example and explanation in "Paso 2 — Builds Multi-Stage", a
`.dockerignore` rationale and sample in "Paso 3 — Usar un Archivo
`.dockerignore`", a tradeoff comparison (Alpine vs Debian-slim vs distroless) in
"Paso 4 — Elegir la Imagen Base Correcta", caching and layer-order optimization
guidance in "Paso 5 — Cache de Capas", and a concise "Errores Comunes a Evitar"
list (running as root, copying .env, missing .dockerignore); ensure the issue or
PR references this file name (write-dockerfile.mdx) and each heading so
reviewers can locate the changes.
```

</details>

</blockquote></details>
<details>
<summary>TUTORIAL_IMAGE_PROMPTS.md (2)</summary><blockquote>

`14-141`: _💤 Low value_

**Los bloques de código deberían especificar el lenguaje.**

Los bloques con comandos `mkdir -p` deberían usar ````bash` en lugar de solo ``` para habilitar syntax highlighting. Mejora la legibilidad aunque sea un documento interno.




<details>
<summary>💡 Ejemplo de fix</summary>

```diff
-```
+```bash
 mkdir -p /home/agustinoli/Documents/SleakOps/...
 ```
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @TUTORIAL_IMAGE_PROMPTS.md around lines 14 - 141, En
TUTORIAL_IMAGE_PROMPTS.md hay varios bloques de comandos que usan sin especificar lenguaje; busca todas las ocurrencias de las líneas que contienen mkdir -p (por ejemplo las entradas que crean directorios como static/img/tutorials/install-new-relic, optimize-aws-costs, etc.) y cambia los fence code blocks que contienen esos mkdir -p para usarbash en lugar de ```
para habilitar resaltado de sintaxis; verifica cada sección (p. ej. los bloques
en las secciones que contienen "mkdir -p
/home/agustinoli/Documents/SleakOps/...") y actualiza todos los bloques de
comandos consistentes.


</details>

---

`150-150`: _💤 Low value_

**Falta newline al final del archivo.**

Agregá una línea en blanco al final del archivo por convención.

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@TUTORIAL_IMAGE_PROMPTS.md` at line 150, Agregá una línea en blanco al final
del archivo TUTORIAL_IMAGE_PROMPTS.md para cumplir la convención de newline al
final de archivo; simplemente abre TUTORIAL_IMAGE_PROMPTS.md, mueve el cursor al
final del archivo y añade un salto de línea vacío (guardar el archivo para que
el repositorio registre el cambio).
```

</details>

</blockquote></details>
<details>
<summary>content/tutorials/es/workers-use-cases.mdx (1)</summary><blockquote>

`99-99`: _💤 Low value_

**Falta newline al final del archivo.**

El archivo debería terminar con una línea en blanco. Algunos parsers y herramientas de diff lo esperan por convención POSIX.




<details>
<summary>📝 Fix sugerido</summary>

```diff
 | **Worker disparado por cron** | Tareas recurrentes programadas |
+
```
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

```
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/tutorials/es/workers-use-cases.mdx` at line 99, El archivo carece de
una nueva línea al final; abre el archivo y añade una línea en blanco al final
(un carácter de nueva línea finalizando el archivo) para asegurar cumplimiento
con la convención POSIX y evitar avisos de los parsers/herramientas de diff.
```

</details>

</blockquote></details>

</blockquote></details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `0225f9cf-47b2-49db-a984-024a22dd279c`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between bbaf043fae8fe228992b7b6e9325b82d2088e08c and 5afd4d950097f9656a48c3acde47f8ec3fe8bac8.

</details>

<details>
<summary>⛔ Files ignored due to path filters (30)</summary>

* `static/img/tutorials/amazon-ses/amazon-ses.png` is excluded by `!**/*.png`
* `static/img/tutorials/aws-codeartifact-java/aws-codeartifact-java.png` is excluded by `!**/*.png`
* `static/img/tutorials/aws-local-authentication/aws-local-authentication.png` is excluded by `!**/*.png`
* `static/img/tutorials/bitnami-image-deprecated/apply-changes.png` is excluded by `!**/*.png`
* `static/img/tutorials/bitnami-image-deprecated/chart-configuration.png` is excluded by `!**/*.png`
* `static/img/tutorials/connect-aws-resources/connect-aws-resources.png` is excluded by `!**/*.png`
* `static/img/tutorials/deploy-datadog-operator/deploy-datadog-operator.png` is excluded by `!**/*.png`
* `static/img/tutorials/deploy-retool-helm/deploy-retool-helm.png` is excluded by `!**/*.png`
* `static/img/tutorials/dms-rds-migration/dms-rds-migration.png` is excluded by `!**/*.png`
* `static/img/tutorials/install-datadog/install-datadog.png` is excluded by `!**/*.png`
* `static/img/tutorials/install-new-relic/install-new-relic.png` is excluded by `!**/*.png`
* `static/img/tutorials/lambda-cicd-github-actions/lambda-cicd-github-actions.png` is excluded by `!**/*.png`
* `static/img/tutorials/lens-cluster-connectivity/lens-cluster-connectivity.png` is excluded by `!**/*.png`
* `static/img/tutorials/migrate-ebs-volumes/migrate-ebs-volumes.png` is excluded by `!**/*.png`
* `static/img/tutorials/migrate-external-s3/migrate-external-s3.png` is excluded by `!**/*.png`
* `static/img/tutorials/migrate-files-volumes-copy/migrate-files-volumes-copy.png` is excluded by `!**/*.png`
* `static/img/tutorials/migrate-postgres-heroku-to-rds/migrate-postgres-heroku-to-rds.png` is excluded by `!**/*.png`
* `static/img/tutorials/migrate-rds-snapshot-between-accounts/migrate-rds-snapshot-between-accounts.png` is excluded by `!**/*.png`
* `static/img/tutorials/networking-vpc/network-architecture.png` is excluded by `!**/*.png`
* `static/img/tutorials/networking-vpc/networking-vpc.png` is excluded by `!**/*.png`
* `static/img/tutorials/networking-vpc/vpc-peering.svg` is excluded by `!**/*.svg`
* `static/img/tutorials/postgres-helm-existing-volume/postgres-helm-existing-volume.png` is excluded by `!**/*.png`
* `static/img/tutorials/postgresql-dump-restore/job-creation-1.png` is excluded by `!**/*.png`
* `static/img/tutorials/postgresql-dump-restore/job-creation-2.png` is excluded by `!**/*.png`
* `static/img/tutorials/postgresql-dump-restore/postgresql-dump-restore.png` is excluded by `!**/*.png`
* `static/img/tutorials/pritunl-dns-universal/pritunl-dns-universal.png` is excluded by `!**/*.png`
* `static/img/tutorials/rds-external-access/rds-external-access.png` is excluded by `!**/*.png`
* `static/img/tutorials/test-site-to-site-vpn/test-site-to-site-vpn.png` is excluded by `!**/*.png`
* `static/img/tutorials/transfer-domain-route53/transfer-domain-route53.png` is excluded by `!**/*.png`
* `static/img/tutorials/workers-use-cases/workers-use-cases.png` is excluded by `!**/*.png`

</details>

<details>
<summary>📒 Files selected for processing (83)</summary>

* `Makefile`
* `TUTORIALS_REVIEW.md`
* `TUTORIAL_IMAGE_PROMPTS.md`
* `content/changelog/en/2026-04-28-version-2.9.0.md`
* `content/changelog/en/2026-05-13-version-2.10.0.md`
* `content/changelog/es/2026-04-28-version-2.9.0.md`
* `content/changelog/es/2026-05-13-version-2.10.0.md`
* `content/tutorials/en/amazon-ses.mdx`
* `content/tutorials/en/api-gateway-webservices.mdx`
* `content/tutorials/en/aws-codeartifact-java.mdx`
* `content/tutorials/en/aws-local-authentication.mdx`
* `content/tutorials/en/bitnami-image-deprecated.mdx`
* `content/tutorials/en/connect-aws-resources.mdx`
* `content/tutorials/en/deploy-datadog-operator.mdx`
* `content/tutorials/en/deploy-retool-helm.mdx`
* `content/tutorials/en/dms-rds-migration.mdx`
* `content/tutorials/en/docker-desktop-alternative.mdx`
* `content/tutorials/en/e2e-testing.mdx`
* `content/tutorials/en/environment-exhaustive-testing-guide.mdx`
* `content/tutorials/en/how-to-set-up-vpc-peering-between-aws-and-mongodb-atlas.mdx`
* `content/tutorials/en/install-datadog.mdx`
* `content/tutorials/en/install-new-relic.mdx`
* `content/tutorials/en/kubernetes-migration-tips.mdx`
* `content/tutorials/en/lambda-cicd-github-actions.mdx`
* `content/tutorials/en/lens-cluster-connectivity.mdx`
* `content/tutorials/en/migrate-ebs-volumes.mdx`
* `content/tutorials/en/migrate-ecs-to-kubernetes.mdx`
* `content/tutorials/en/migrate-external-s3.mdx`
* `content/tutorials/en/migrate-files-volumes-copy.mdx`
* `content/tutorials/en/migrate-postgres-heroku-to-rds.mdx`
* `content/tutorials/en/migrate-rds-snapshot-between-accounts.mdx`
* `content/tutorials/en/networking-vpc.mdx`
* `content/tutorials/en/optimize-aws-costs.mdx`
* `content/tutorials/en/optimize-docker-image.mdx`
* `content/tutorials/en/postgres-helm-existing-volume.mdx`
* `content/tutorials/en/postgresql-dump-restore.mdx`
* `content/tutorials/en/pritunl-dns-universal.mdx`
* `content/tutorials/en/rds-external-access.mdx`
* `content/tutorials/en/test-site-to-site-vpn.mdx`
* `content/tutorials/en/tips-avoid-latency.mdx`
* `content/tutorials/en/transfer-domain-route53.mdx`
* `content/tutorials/en/what-is-kubernetes-sleakops.mdx`
* `content/tutorials/en/workers-use-cases.mdx`
* `content/tutorials/en/write-dockerfile.mdx`
* `content/tutorials/es/amazon-ses.mdx`
* `content/tutorials/es/api-gateway-webservices.mdx`
* `content/tutorials/es/aws-codeartifact-java.mdx`
* `content/tutorials/es/aws-local-authentication.mdx`
* `content/tutorials/es/bitnami-image-deprecated.mdx`
* `content/tutorials/es/connect-aws-resources.mdx`
* `content/tutorials/es/deploy-datadog-operator.mdx`
* `content/tutorials/es/deploy-retool-helm.mdx`
* `content/tutorials/es/dms-rds-migration.mdx`
* `content/tutorials/es/docker-desktop-alternative.mdx`
* `content/tutorials/es/e2e-testing.mdx`
* `content/tutorials/es/environment-exhaustive-testing-guide.mdx`
* `content/tutorials/es/how-to-set-up-vpc-peering-between-aws-and-mongodb-atlas.mdx`
* `content/tutorials/es/install-datadog.mdx`
* `content/tutorials/es/install-new-relic.mdx`
* `content/tutorials/es/kubernetes-migration-tips.mdx`
* `content/tutorials/es/lambda-cicd-github-actions.mdx`
* `content/tutorials/es/lens-cluster-connectivity.mdx`
* `content/tutorials/es/migrate-ebs-volumes.mdx`
* `content/tutorials/es/migrate-ecs-to-kubernetes.mdx`
* `content/tutorials/es/migrate-external-s3.mdx`
* `content/tutorials/es/migrate-files-volumes-copy.mdx`
* `content/tutorials/es/migrate-postgres-heroku-to-rds.mdx`
* `content/tutorials/es/migrate-rds-snapshot-between-accounts.mdx`
* `content/tutorials/es/networking-vpc.mdx`
* `content/tutorials/es/optimize-aws-costs.mdx`
* `content/tutorials/es/optimize-docker-image.mdx`
* `content/tutorials/es/postgres-helm-existing-volume.mdx`
* `content/tutorials/es/postgresql-dump-restore.mdx`
* `content/tutorials/es/pritunl-dns-universal.mdx`
* `content/tutorials/es/rds-external-access.mdx`
* `content/tutorials/es/test-site-to-site-vpn.mdx`
* `content/tutorials/es/tips-avoid-latency.mdx`
* `content/tutorials/es/transfer-domain-route53.mdx`
* `content/tutorials/es/what-is-kubernetes-sleakops.mdx`
* `content/tutorials/es/workers-use-cases.mdx`
* `content/tutorials/es/write-dockerfile.mdx`
* `docusaurus.config.js`
* `src/data/tutorials-generated.json`

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment thread content/tutorials/en/api-gateway-webservices.mdx Outdated
Comment thread content/tutorials/en/aws-codeartifact-java.mdx
Comment thread content/tutorials/en/dms-rds-migration.mdx Outdated
Comment thread content/tutorials/en/install-new-relic.mdx
Comment thread content/tutorials/en/lambda-cicd-github-actions.mdx
Comment thread content/tutorials/es/migrate-rds-snapshot-between-accounts.mdx
Comment thread content/tutorials/es/migrate-rds-snapshot-between-accounts.mdx
Comment thread content/tutorials/es/postgres-helm-existing-volume.mdx Outdated
Comment thread src/data/tutorials-generated.json Outdated
Comment thread src/data/tutorials-generated.json Outdated
@lucaiz lucaiz marked this pull request as draft May 22, 2026 13:31
…87;187;187m �[39mincomplete�[38;2;187;187;187m �[39mplaceholder�[38;2;187;187;187m �[39mtutorials�[38;2;187;187;187m �[39mfrom�[38;2;187;187;187m �[39mPR

Moves�[38;2;187;187;187m �[39m�[38;2;102;102;102m8�[39m�[38;2;187;187;187m �[39mtutorials�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mskeleton�[38;2;102;102;102m-�[39monly�[38;2;187;187;187m �[39mcontent�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39mEstado�[38;2;102;102;102m:�[39m�[38;2;187;187;187m �[39mNuevo�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mNotion�[38;2;102;102;102m,�[39m
no�[38;2;187;187;187m �[39mbody�[38;2;187;187;187m �[39mwritten�[38;2;187;187;187m �[39myet�[38;2;102;102;102m)�[39m�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39ma�[38;2;187;187;187m �[39mseparate�[38;2;187;187;187m �[39mbranch�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mfuture�[38;2;187;187;187m �[39mwork�[38;2;102;102;102m.�[39m

Tutorials�[38;2;187;187;187m �[39mremoved�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39mEN�[38;2;187;187;187m �[39m�[38;2;102;102;102m+�[39m�[38;2;187;187;187m �[39mES�[38;2;102;102;102m):�[39m
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mapi�[38;2;102;102;102m-�[39mgateway�[38;2;102;102;102m-�[39mwebservices
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mdocker�[38;2;102;102;102m-�[39mdesktop�[38;2;102;102;102m-�[39malternative
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39me2e�[38;2;102;102;102m-�[39mtesting
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mkubernetes�[38;2;102;102;102m-�[39mmigration�[38;2;102;102;102m-�[39mtips
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mecs�[38;2;102;102;102m-�[39mto�[38;2;102;102;102m-�[39mkubernetes
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mtips�[38;2;102;102;102m-�[39mavoid�[38;2;102;102;102m-�[39mlatency
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mwhat�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mis�[39;00m�[38;2;102;102;102m-�[39mkubernetes�[38;2;102;102;102m-�[39msleakops
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mwrite�[38;2;102;102;102m-�[39mdockerfile

Co�[38;2;102;102;102m-�[39mAuthored�[38;2;102;102;102m-�[39mBy�[38;2;102;102;102m:�[39m�[38;2;187;187;187m �[39mClaude�[38;2;187;187;187m �[39mSonnet�[38;2;187;187;187m �[39m�[38;2;102;102;102m4.6�[39m�[38;2;187;187;187m �[39m�[38;2;102;102;102m<�[39mnoreply@anthropic�[38;2;102;102;102m.�[39m�[38;2;187;68;68mcom�[39m�[38;2;102;102;102m>�[39m
…9;00m�[38;2;102;102;102m-�[39ms3):�[38;2;187;187;187m �[39m�[38;2;170;34;255;01madd�[39;00m�[38;2;187;187;187m �[39mpod�[38;2;187;187;187m �[39mshell�[38;2;187;187;187m �[39mscreenshot�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfrom�[39;00m�[38;2;187;187;187m �[39mNotion

Replaces�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mTODO�[38;2;187;187;187m �[39mplaceholder�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mactual�[38;2;187;187;187m �[39mscreenshot�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mof�[39;00m�[38;2;187;187;187m �[39mopening
a�[38;2;187;187;187m �[39mPod�[38;2;187;187;187m �[39mshell�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfrom�[39;00m�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mSleakOps�[38;2;187;187;187m �[39mconsole�[38;2;187;187;187m �[39m(sourced�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfrom�[39;00m�[38;2;187;187;187m �[39mNotion�[38;2;187;187;187m �[39mpage,
�[38;2;160;160;0mEstado�[39m:�[38;2;187;187;187m �[39mDone).

Co�[38;2;102;102;102m-�[39mAuthored�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mBy�[39;00m:�[38;2;187;187;187m �[39mClaude�[38;2;187;187;187m �[39mSonnet�[38;2;187;187;187m �[39m�[38;2;102;102;102m4.6�[39m�[38;2;187;187;187m �[39m�[38;2;102;102;102m<�[39mnoreply�[38;2;184;134;11m@anthropic�[39m.com�[38;2;102;102;102m>�[39m
…39m�[38;2;102;102;102m5�[39m�[38;2;187;187;187m �[39mtechnical�[38;2;187;187;187m �[39merrors�[38;2;187;187;187m �[39mflagged�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mPR�[38;2;187;187;187m �[39mreview

�[38;2;102;102;102m1.�[39m�[38;2;187;187;187m �[39mpostgresql�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mdump�[39;00m�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mrestore�[39;00m:�[38;2;187;187;187m �[39mswitch�[38;2;187;187;187m �[39mpg_dump�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mto�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m-�[39mFc�[38;2;187;187;187m �[39m�[38;2;0;160;0mformat�[39m�[38;2;187;187;187m �[39mso�[38;2;187;187;187m �[39mpg_restore
�[38;2;187;187;187m   �[39mcan�[38;2;187;187;187m �[39mprocess�[38;2;187;187;187m �[39mit�[38;2;187;187;187m �[39m(plain�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mSQL�[39;00m�[38;2;187;187;187m �[39m�[38;2;0;160;0mformat�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mis�[39;00m�[38;2;187;187;187m �[39mincompatible�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mpg_restore)

�[38;2;102;102;102m2.�[39m�[38;2;187;187;187m �[39maws�[38;2;102;102;102m-�[39mcodeartifact�[38;2;102;102;102m-�[39m�[38;2;160;160;0mjava�[39m:�[38;2;187;187;187m �[39m�[38;2;170;34;255;01madd�[39;00m�[38;2;187;187;187m �[39mWORKDIR�[38;2;187;187;187m �[39m�[38;2;102;102;102m/�[39mapp�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mCOPY�[38;2;187;187;187m �[39m.�[38;2;187;187;187m �[39m.�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mbefore�[39;00m�[38;2;187;187;187m �[39mmvn�[38;2;187;187;187m �[39mbuild
�[38;2;187;187;187m   �[39mstage�[38;2;187;187;187m �[39mso�[38;2;187;187;187m �[39mMaven�[38;2;187;187;187m �[39mfinds�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39msource�[38;2;187;187;187m �[39mcode�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mjar�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mpath�[39;00m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mis�[39;00m�[38;2;187;187;187m �[39mcorrect

�[38;2;102;102;102m3.�[39m�[38;2;187;187;187m �[39mpostgres�[38;2;102;102;102m-�[39mhelm�[38;2;102;102;102m-�[39mexisting�[38;2;102;102;102m-�[39m�[38;2;160;160;0mvolume�[39m:�[38;2;187;187;187m �[39m�[38;2;0;160;0mreplace�[39m�[38;2;187;187;187m �[39mdeprecated�[38;2;187;187;187m �[39mawsElasticBlockStore
�[38;2;187;187;187m   �[39m(removed�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mK8s�[38;2;187;187;187m �[39m�[38;2;102;102;102m1.27�[39m)�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39mCSI�[38;2;187;187;187m �[39mdriver�[38;2;187;187;187m �[39m(ebs.csi.aws.com)

�[38;2;102;102;102m4.�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mpostgres�[38;2;102;102;102m-�[39mheroku�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mto�[39;00m�[38;2;102;102;102m-�[39m�[38;2;160;160;0mrds�[39m:�[38;2;187;187;187m �[39mswitch�[38;2;187;187;187m �[39m�[38;2;0;0;255mimage�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfrom�[39;00m�[38;2;187;187;187m �[39m�[38;2;160;160;0mpostgres�[39m:�[38;2;102;102;102m17�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mto�[39;00m
�[38;2;187;187;187m   �[39mdimitri�[38;2;102;102;102m/�[39mpgcopydb�[38;2;187;187;187m �[39mwhich�[38;2;187;187;187m �[39mactually�[38;2;187;187;187m �[39mincludes�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mpgcopydb�[38;2;187;187;187m �[39m�[38;2;0;0;255mbinary�[39m

�[38;2;102;102;102m5.�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mfiles�[38;2;102;102;102m-�[39mvolumes�[38;2;102;102;102m-�[39m�[38;2;160;160;0mcopy�[39m:�[38;2;187;187;187m �[39m�[38;2;0;160;0mreplace�[39m�[38;2;187;187;187m �[39mkubectl�[38;2;187;187;187m �[39mconfig�[38;2;187;187;187m �[39m�[38;2;170;34;255;01muse�[39;00m�[38;2;102;102;102m-�[39mcontext�[38;2;187;187;187m �[39m(mutates
�[38;2;187;187;187m   �[39m�[38;2;170;34;255;01mglobal�[39;00m�[38;2;187;187;187m �[39mkubeconfig)�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mwith�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m-�[39m�[38;2;102;102;102m-�[39mcontext�[38;2;187;187;187m �[39mflag�[38;2;187;187;187m �[39mper�[38;2;187;187;187m �[39mcommand;�[38;2;187;187;187m �[39m�[38;2;170;34;255;01madd�[39;00m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mset�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m-�[39meuo�[38;2;187;187;187m �[39mpipefail

�[38;2;170;34;255;01mAll�[39;00m�[38;2;187;187;187m �[39mfixes�[38;2;187;187;187m �[39mapplied�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mto�[39;00m�[38;2;187;187;187m �[39mEN�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mES�[38;2;187;187;187m �[39mversions.

Co�[38;2;102;102;102m-�[39mAuthored�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mBy�[39;00m:�[38;2;187;187;187m �[39mClaude�[38;2;187;187;187m �[39mSonnet�[38;2;187;187;187m �[39m�[38;2;102;102;102m4.6�[39m�[38;2;187;187;187m �[39m�[38;2;102;102;102m<�[39mnoreply�[38;2;184;134;11m@anthropic�[39m.com�[38;2;102;102;102m>�[39m
…heroku�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mto�[39;00m�[38;2;102;102;102m-�[39mrds):�[38;2;187;187;187m �[39m�[38;2;170;34;255;01muse�[39;00m�[38;2;187;187;187m �[39mghcr.io�[38;2;187;187;187m �[39m�[38;2;0;0;255mimage�[39m�[38;2;187;187;187m �[39minstead�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mof�[39;00m�[38;2;187;187;187m �[39mDocker�[38;2;187;187;187m �[39mHub

dimitri�[38;2;102;102;102m/�[39mpgcopydb�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mon�[39;00m�[38;2;187;187;187m �[39mDocker�[38;2;187;187;187m �[39mHub�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mis�[39;00m�[38;2;187;187;187m �[39m�[38;2;102;102;102m2�[39m�[38;2;187;187;187m �[39myears�[38;2;187;187;187m �[39moutdated�[38;2;187;187;187m �[39m(CI�[38;2;102;102;102m/�[39mCD�[38;2;187;187;187m �[39m�[38;2;170;34;255;01monly�[39;00m�[38;2;187;187;187m �[39mpublishes
�[38;2;170;34;255;01mto�[39;00m�[38;2;187;187;187m �[39mghcr.io�[38;2;102;102;102m/�[39mdimitri�[38;2;102;102;102m/�[39mpgcopydb).�[38;2;187;187;187m �[39mSwitch�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mto�[39;00m�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mofficial�[38;2;187;187;187m �[39mregistry�[38;2;187;187;187m �[39msource.

Co�[38;2;102;102;102m-�[39mAuthored�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mBy�[39;00m:�[38;2;187;187;187m �[39mClaude�[38;2;187;187;187m �[39mSonnet�[38;2;187;187;187m �[39m�[38;2;102;102;102m4.6�[39m�[38;2;187;187;187m �[39m�[38;2;102;102;102m<�[39mnoreply�[38;2;184;134;11m@anthropic�[39m.com�[38;2;102;102;102m>�[39m
…msecurity�[38;2;187;187;187m �[39mfixes�[38;2;187;187;187m �[39macross�[38;2;187;187;187m �[39m�[38;2;102;102;102m5�[39m�[38;2;187;187;187m �[39mtutorials

�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mdms�[38;2;102;102;102m-�[39mrds�[38;2;102;102;102m-�[39mmigration:�[38;2;187;187;187m �[39muse�[38;2;187;187;187m �[39m�[38;2;102;102;102m-�[39m�[38;2;102;102;102m-�[39mno�[38;2;102;102;102m-�[39mpublicly�[38;2;102;102;102m-�[39maccessible�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mreplication�[38;2;187;187;187m �[39minstance
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mlambda�[38;2;102;102;102m-�[39mcicd�[38;2;102;102;102m-�[39mgithub�[38;2;102;102;102m-�[39mactions:�[38;2;187;187;187m �[39mscope�[38;2;187;187;187m �[39mIAM�[38;2;187;187;187m �[39mResource�[38;2;187;187;187m �[39mARN�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mspecific�[38;2;187;187;187m �[39mfunction�[38;2;102;102;102m/�[39mregion
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mrds�[38;2;102;102;102m-�[39msnapshot�[38;2;102;102;102m-�[39mbetween�[38;2;102;102;102m-�[39maccounts:�[38;2;187;187;187m �[39mreplace�[38;2;187;187;187m �[39mmisleading�[38;2;187;187;187m �[39munencrypted�[38;2;102;102;102m-�[39msnapshot�[38;2;187;187;187m �[39mnote�[38;2;187;187;187m �[39mwith�[38;2;187;187;187m �[39mcorrect�[38;2;187;187;187m �[39mguidance
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mrds�[38;2;102;102;102m-�[39mexternal�[38;2;102;102;102m-�[39maccess:�[38;2;187;187;187m �[39muse�[38;2;187;187;187m �[39menv�[38;2;187;187;187m �[39mvars�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mOracle�[38;2;187;187;187m �[39mSQL�[38;2;102;102;102m*�[39mPlus�[38;2;187;187;187m �[39mcredentials
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39minstall�[38;2;102;102;102m-�[39mnew�[38;2;102;102;102m-�[39mrelic:�[38;2;187;187;187m �[39muse�[38;2;187;187;187m �[39mprocess�[38;2;102;102;102m.�[39menv�[38;2;102;102;102m/�[39m�[38;2;170;34;255;01mexport�[39;00m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mlicense�[38;2;187;187;187m �[39mkey�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mNode�[38;2;102;102;102m.�[39mjs�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mand�[39;00m�[38;2;187;187;187m �[39mPython
…39mremaining�[38;2;187;187;187m �[39mCodeRabbit�[38;2;187;187;187m �[39mreview�[38;2;187;187;187m �[39mcomments

�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mpostgres�[38;2;102;102;102m-�[39mheroku�[38;2;102;102;102m-�[39mto�[38;2;102;102;102m-�[39mrds:�[38;2;187;187;187m �[39mrename�[38;2;187;187;187m �[39mLSN_OBTENIDO�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mOBTAINED_LSN�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mEN�[38;2;187;187;187m �[39mtutorial
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mlambda�[38;2;102;102;102m-�[39mcicd�[38;2;102;102;102m-�[39mgithub�[38;2;102;102;102m-�[39mactions:�[38;2;187;187;187m �[39mremove�[38;2;187;187;187m �[39mdead�[38;2;187;187;187m �[39mstaging�[38;2;187;187;187m �[39mtrigger;�[38;2;187;187;187m �[39mreplace�[38;2;187;187;187m �[39mfragile�[38;2;187;187;187m �[39mgrep�[38;2;187;187;187m �[39mwith�[38;2;187;187;187m �[39mjq�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39mhealth�[38;2;187;187;187m �[39mcheck
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mtest�[38;2;102;102;102m-�[39msite�[38;2;102;102;102m-�[39mto�[38;2;102;102;102m-�[39msite�[38;2;102;102;102m-�[39mvpn:�[38;2;187;187;187m �[39muse�[38;2;187;187;187m �[39mshell�[38;2;187;187;187m �[39mvariables�[38;2;187;187;187m �[39minstead�[38;2;187;187;187m �[39mof�[38;2;187;187;187m �[39mhardcoded�[38;2;187;187;187m �[39mIPs�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mnmap�[38;2;187;187;187m �[39mcommand
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39maws�[38;2;102;102;102m-�[39mcodeartifact�[38;2;102;102;102m-�[39mjava:�[38;2;187;187;187m �[39mreference�[38;2;187;187;187m �[39mcodeartifact_settings�[38;2;102;102;102m.�[39mxml�[38;2;187;187;187m �[39m(�[38;2;170;34;255;01mnot�[39;00m�[38;2;187;187;187m �[39msettings�[38;2;102;102;102m.�[39mxml)�[38;2;187;187;187m �[39m�[38;2;170;34;255;01min�[39;00m�[38;2;187;187;187m �[39mCI�[38;2;187;187;187m �[39mpipeline
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39moptimize�[38;2;102;102;102m-�[39mdocker�[38;2;102;102;102m-�[39mimage:�[38;2;187;187;187m �[39mreplace�[38;2;187;187;187m �[39mapt�[38;2;102;102;102m-�[39mget�[38;2;187;187;187m �[39mexample�[38;2;187;187;187m �[39mwith�[38;2;187;187;187m �[39mapk�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mmatch�[39;00m�[38;2;187;187;187m �[39mAlpine�[38;2;187;187;187m �[39mfocus
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mdeploy�[38;2;102;102;102m-�[39mdatadog�[38;2;102;102;102m-�[39moperator:�[38;2;187;187;187m �[39mreplace�[38;2;187;187;187m �[39mhardcoded�[38;2;187;187;187m �[39mcontainer�[38;2;187;187;187m �[39mname�[38;2;187;187;187m �[39mwith�[38;2;187;187;187m �[39mgeneric�[38;2;187;187;187m �[39mplaceholder
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mdeploy�[38;2;102;102;102m-�[39mretool�[38;2;102;102;102m-�[39mhelm:�[38;2;187;187;187m �[39mshow�[38;2;187;187;187m �[39mopenssl�[38;2;187;187;187m �[39mgeneration�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mfor�[39;00m�[38;2;187;187;187m �[39msecrets;�[38;2;187;187;187m �[39madd�[38;2;187;187;187m �[39mcomment�[38;2;187;187;187m �[39mon�[38;2;187;187;187m �[39minsecure�[38;2;187;187;187m �[39mcookie�[38;2;187;187;187m �[39mflag
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mbitnami�[38;2;102;102;102m-�[39mimage�[38;2;102;102;102m-�[39mdeprecated:�[38;2;187;187;187m �[39mclarify�[38;2;187;187;187m �[39mwhat�[38;2;187;187;187m �[39mchanges�[38;2;187;187;187m �[39mSleakOps�[38;2;187;187;187m �[39mpre�[38;2;102;102;102m-�[39mapplied�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mchart�[38;2;187;187;187m �[39mvalues
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39maws�[38;2;102;102;102m-�[39mlocal�[38;2;102;102;102m-�[39mauthentication:�[38;2;187;187;187m �[39madd�[38;2;187;187;187m �[39mwarning�[38;2;187;187;187m �[39mabout�[38;2;187;187;187m �[39mplain�[38;2;102;102;102m-�[39mtext�[38;2;187;187;187m �[39mcredentials�[38;2;187;187;187m �[39mfile�[38;2;187;187;187m �[39mpermissions
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mebs�[38;2;102;102;102m-�[39mvolumes:�[38;2;187;187;187m �[39mfilter�[38;2;187;187;187m �[39msnapshots�[38;2;187;187;187m �[39mby�[38;2;187;187;187m �[39mtags�[38;2;187;187;187m �[39minstead�[38;2;187;187;187m �[39mof�[38;2;187;187;187m �[39mdescription�[38;2;187;187;187m �[39mto�[38;2;187;187;187m �[39mavoid�[38;2;187;187;187m �[39mcollisions
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mmigrate�[38;2;102;102;102m-�[39mfiles�[38;2;102;102;102m-�[39mvolumes�[38;2;102;102;102m-�[39mcopy:�[38;2;187;187;187m �[39mvalidate�[38;2;187;187;187m �[39mkubectl�[38;2;187;187;187m �[39mcontexts�[38;2;187;187;187m �[39mexist�[38;2;187;187;187m �[39mbefore�[38;2;187;187;187m �[39mexecuting�[38;2;187;187;187m �[39mcopy
…7;187;187m �[39mdevelop�[38;2;187;187;187m �[39minto�[38;2;187;187;187m �[39mfeat�[38;2;102;102;102m/�[39mall�[38;2;102;102;102m-�[39mtutorials�[38;2;102;102;102m,�[39m�[38;2;187;187;187m �[39mresolve�[38;2;187;187;187m �[39mconflicts

Conflicts�[38;2;187;187;187m �[39mresolved�[38;2;102;102;102m:�[39m
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39menvironment�[38;2;102;102;102m-�[39mexhaustive�[38;2;102;102;102m-�[39mtesting�[38;2;102;102;102m-�[39mguide�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39mEN�[38;2;102;102;102m+�[39mES�[38;2;102;102;102m):�[39m�[38;2;187;187;187m �[39mused�[38;2;187;187;187m �[39mdevelop�[38;2;187;187;187m �[39mfrontmatter�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39msidebar_position�[38;2;187;187;187m �[39m�[38;2;102;102;102m4�[39m�[38;2;102;102;102m,�[39m�[38;2;187;187;187m �[39mproper�[38;2;187;187;187m �[39mdescription�[38;2;102;102;102m)�[39m
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mhow�[38;2;102;102;102m-�[39mto�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mset�[39;00m�[38;2;102;102;102m-�[39mup�[38;2;102;102;102m-�[39mvpc�[38;2;102;102;102m-�[39mpeering�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39mEN�[38;2;102;102;102m+�[39mES�[38;2;102;102;102m):�[39m�[38;2;187;187;187m �[39mused�[38;2;187;187;187m �[39mdevelop�[38;2;187;187;187m �[39msidebar_position�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39m�[38;2;102;102;102m5�[39m�[38;2;102;102;102m)�[39m
�[38;2;102;102;102m-�[39m�[38;2;187;187;187m �[39mtutorials�[38;2;102;102;102m-�[39mgenerated�[38;2;102;102;102m.�[39m�[38;2;187;68;68mjson�[39m�[38;2;102;102;102m:�[39m�[38;2;187;187;187m �[39mkept�[38;2;187;187;187m �[39mall�[38;2;187;187;187m �[39m�[38;2;102;102;102m39�[39m�[38;2;187;187;187m �[39m�[38;2;170;34;255;01mnew�[39;00m�[38;2;187;187;187m �[39mtutorial�[38;2;187;187;187m �[39mentries�[38;2;187;187;187m �[39mfrom�[38;2;187;187;187m �[39mour�[38;2;187;187;187m �[39mbranch�[38;2;102;102;102m;�[39m�[38;2;187;187;187m �[39mremoved�[38;2;187;187;187m �[39m�[38;2;102;102;102m2�[39m�[38;2;187;187;187m �[39mduplicate�[38;2;187;187;187m �[39mentries�[38;2;187;187;187m �[39m�[38;2;102;102;102m(�[39menvironment�[38;2;102;102;102m-�[39mexhaustive�[38;2;102;102;102m-�[39mtesting�[38;2;102;102;102m-�[39mguide�[38;2;102;102;102m,�[39m�[38;2;187;187;187m �[39mhow�[38;2;102;102;102m-�[39mto�[38;2;102;102;102m-�[39m�[38;2;170;34;255;01mset�[39;00m�[38;2;102;102;102m-�[39mup�[38;2;102;102;102m-�[39mvpc�[38;2;102;102;102m-�[39mpeering�[38;2;102;102;102m)�[39m�[38;2;187;187;187m �[39mthat�[38;2;187;187;187m �[39mdevelop�[38;2;187;187;187m �[39mhad�[38;2;187;187;187m �[39mre�[38;2;102;102;102m-�[39madded�[38;2;187;187;187m �[39mat�[38;2;187;187;187m �[39mthe�[38;2;187;187;187m �[39mtop
@agustinoli agustinoli marked this pull request as ready for review May 22, 2026 20:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant