feat: all tutorials from notion#181
Conversation
…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
|
Caution Review failedFailed to post review comments WalkthroughSe 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 ChangesDocumentación y wiring del sitio
Estimated code review effort🎯 4 (Complejo) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
|
There was a problem hiding this comment.
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 liftEste 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:
- Remover el archivo de este PR y agregarlo en un PR futuro cuando esté completo
- Completar el contenido antes del merge
- Agregar
draft: trueal 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 winOtro 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:
- Completarlo antes del merge
- Sacarlo del PR y agregarlo cuando esté terminado
- 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 winEste tutorial está incompleto y solo tiene placeholders.
El contenido entero son bloques de comentario
{/* TODO: ... */}sin implementar. Si esto va adevelop, los usuarios van a ver un tutorial vacío en producción.Opciones:
- Completar el contenido antes de mergear
- Remover este archivo del PR y agregarlo en un PR futuro cuando esté listo
- 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 winEl 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 itselfO 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 winFalta warning de seguridad sobre cookies inseguras.
Las líneas 59 y 64 configuran:
useInsecureCookies: true COOKIE_INSECURE: "true"Esto deshabilita el flag
Secureen 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 warningDespué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 winLos ejemplos de keys no coinciden con las instrucciones.
Las líneas 34-36 dicen explícitamente:
encryption-key: generate withopenssl rand -base64 36jwt-secret: generate withopenssl rand -base64 36Pero después en líneas 56-57 el ejemplo muestra:
encryption-key: privateprivateprivateprivateprivateprivate jwt-secret: privateprivateprivateprivateprivateprivateEso NO es output de
openssl rand -base64 36(que produce algo comoK7gNU3sdo+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 winTe 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 sugeridoAgregá 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 winLos metadatos están a medio completar.
El
titleparece un slug (kebab-case) y ladescriptiondice 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_LSNoLSN_VALUEpara 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 winEl trigger del workflow incluye la rama
stagingpero el deploy solo corre enmain.El workflow se dispara en push a
mainystaging(líneas 84-85), pero el job de deploy tiene una condiciónif: github.ref == 'refs/heads/main'(línea 96) que lo limita únicamente amain. Los commits astagingdisparará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 winHaz 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 winAclarar de dónde sale el
settings.xmlque usa el mvn.En la línea 144, el comando
mvn -s settings.xmlreferencia un archivosettings.xmllocal que debería estar en el repo, pero en los pasos anteriores solo mostrastecodeartifact_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 deployY clarificar que
codeartifact_settings.xmldebe 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 winConsiderá el riesgo de seguridad del flag
--publicly-accessible.La línea 59 usa
--publicly-accessiblepara 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 winCorregí la sintaxis de
transformToString():El método en la línea 121 debe ser
res.Body.transformToStringsin 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 winCorregir 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 winClarificá 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*-alpinedesde el inicio (línea 61 y tabla final). Si alguien copia ese código para Alpine, lo rompe directamente (necesitaapk 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 winTypo 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 valueAclaració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 winFalta 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 seguridadDespués de la línea 70, agregar:
region = us-east-1+:::warning
+Never commit your~/.aws/configor~/.aws/credentialsfiles to version control. Add them to.gitignoreif 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.mdxaround 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/configor
`~/.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.mdaround lines 14 - 141, En
TUTORIAL_IMAGE_PROMPTS.md hay varios bloques de comandos que usansin 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 -->
…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
Summary by CodeRabbit
Release Notes