<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Enrique Aguilar Martinez</title>
    <description>The latest articles on DEV Community by Enrique Aguilar Martinez (@enriqueaguila).</description>
    <link>https://dev.to/enriqueaguila</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1223850%2F0fddcca5-1556-4896-8b7a-16643f38fe63.jpeg</url>
      <title>DEV Community: Enrique Aguilar Martinez</title>
      <link>https://dev.to/enriqueaguila</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enriqueaguila"/>
    <language>en</language>
    <item>
      <title>Arquitectura y procesos EAM</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Thu, 26 Jun 2025 19:20:43 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/arquitectura-y-procesos-eam-1i13</link>
      <guid>https://dev.to/enriqueaguila/arquitectura-y-procesos-eam-1i13</guid>
      <description>&lt;p&gt;Estrategias de etiquetado de recursos en la nube&lt;br&gt;
Introducción&lt;br&gt;
El etiquetado en la nube es un proceso que implica adjuntar metadatos descriptivos o etiquetas a los recursos en la nube que se utilizan para definir los tipos de recursos utilizados dentro del entorno de nube de una empresa. Por cada recurso en la nube que una empresa utiliza durante un mes, hay una gran cantidad de datos de uso y costos relacionados con los recursos que se generan. Las etiquetas le permiten asignar contexto y analizar recursos específicos para facilitar las mejoras operativas y reducir los costos.&lt;br&gt;
Tener datos de etiquetas integrados en la factura de la nube de una empresa permite a los equipos de Cloud Ops y FinOps administrar, agrupar, organizar y filtrar los costos por múltiples dimensiones de etiquetas. En esencia, puedes cortar la pizza de varias maneras. Organizar y filtrar los costes por cada una de las unidades de negocio de una empresa, por diferentes recursos o por entornos le permitirá asignar los costes a departamentos o centros de coste. Las etiquetas se pueden usar para clasificar los recursos por propósito, propietario, entorno u otros criterios. &lt;/p&gt;

&lt;p&gt;Beneficios e importancia de etiquetar recursos en la nube&lt;br&gt;
Un buen etiquetado puede servir como remedio para las empresas con prácticas de nomenclatura de recursos en la nube débiles o incoherentes. El etiquetado es importante, ya que le permite agregar atributos e información relevante a los recursos en la nube, que aún no forman parte del nombre del recurso. Si no se implementan y aplican estrategias de etiquetado coherentes, se pueden producir ineficiencias operativas y gastar más mensualmente de lo necesario. El etiquetado de recursos y activos en la nube en todo el ecosistema de la nube de una empresa tiene las siguientes ventajas (1):&lt;br&gt;
• Gestión de recursos: Las etiquetas ayudan a estructurar, organizar y agrupar los recursos en la nube para facilitar su administración y operación. Al etiquetar los recursos con estos atributos compartidos, las empresas pueden gestionarlos como una unidad en lugar de individualmente. Facilita las operaciones por lotes, como las actualizaciones o el escalado.&lt;br&gt;
• Flexibilidad &amp;amp; Escalabilidad: Las etiquetas permiten a los equipos de operaciones en la nube escalar e implementar activos de manera flexible y facilitar la administración y el control generales de los recursos.&lt;br&gt;
• Tareas automatizadas: El etiquetado proporciona datos valiosos que las herramientas de automatización utilizan para realizar charlas como la programación de copias de seguridad o el aprovisionamiento de recursos, lo que agiliza los flujos de trabajo operativos.&lt;br&gt;
• Análisis Operacional: El etiquetado permite a las empresas estratificar, agrupar, filtrar, clasificar, segmentar y trocear los datos de uso de los recursos en la nube en función de criterios importantes.&lt;br&gt;
• Optimización del rendimiento: Las etiquetas ayudan a supervisar el rendimiento de la infraestructura en la nube, optimizar la utilización, identificar y rectificar los cuellos de botella.&lt;br&gt;
• Solución de problemas y supervisión: El etiquetado facilita a los equipos de operaciones en la nube la supervisión continua de los recursos en busca de problemas, la detección de anomalías y la solución de problemas.&lt;br&gt;
• Control de acceso y gestión de seguridad: Las empresas pueden automatizar los controles de acceso asignando etiquetas específicas a los recursos en función de los niveles de sensibilidad, los departamentos o los roles. Esto garantiza que los usuarios tengan los permisos adecuados y ayuda a evitar el acceso no autorizado a datos y recursos confidenciales.&lt;br&gt;
• Cumplimiento y gobernanza: Las etiquetas se utilizan para facilitar el cumplimiento de las iniciativas normativas, de gobernanza, administrativas, de auditoría y otras iniciativas políticas.&lt;br&gt;
• Gestión de costos: Las etiquetas permiten a las organizaciones categorizar los recursos, lo que facilita la gestión precisa de los costos, las variaciones y la optimización mediante la identificación de áreas de gasto excesivo o infrautilización. Las anomalías en los costos de la nube pueden costar a las empresas con grandes perfiles de nube millones de dólares en gastos imprevistos.&lt;br&gt;
• Asignaciones de costos y contracargos: Las etiquetas permiten la asignación precisa de los costos de la nube a departamentos, centros de costos, equipos o proyectos específicos, lo que facilita el análisis de costos, las iniciativas de ROI y los procesos de gestión de presupuestos. Las estrategias de etiquetado precisas permiten a las empresas implementar modelos de contracargos que atribuyen los costos de la nube directamente a los departamentos responsables de ellos.&lt;br&gt;
• Informes de costos y paneles de control: El etiquetado bien diseñado permite a las empresas generar informes de costos completos y análisis del uso de recursos en la nube y métricas de rendimiento operativo mediante paneles automatizados.&lt;br&gt;
• Presupuesto y previsión: Las etiquetas en la nube ayudan en la previsión de costes y en los ejercicios de elaboración de presupuestos. Al analizar los datos de costos históricos asociados con los recursos etiquetados, las organizaciones pueden proyectar los costos futuros con mayor precisión, planificar presupuestos de manera efectiva y tomar decisiones financieras informadas para mejorar la organización.&lt;br&gt;
• Fomenta la colaboración y la responsabilidad operativa: Las etiquetas facilitan y fomentan la colaboración entre equipos al identificar la propiedad de los recursos y las respectivas responsabilidades operativas de los propietarios de los recursos.&lt;br&gt;
• Conciencia de costos: El etiquetado ayuda a fomentar una conciencia de los costos en toda la empresa. Ayuda a que los empleados entiendan los costos de los recursos que la empresa está desplegando para ellos.&lt;br&gt;
• Mitiga los efectos de la rotación: El etiquetado ayuda a retener los activos en la nube y el conocimiento de los recursos que se pueden perder debido a la rotación de empleados.&lt;br&gt;
Etiquetado deficiente e inconsistente&lt;br&gt;
Las etiquetas deben ser lo más correctas y precisas posible. Las etiquetas faltantes o las etiquetas con errores pueden provocar un uso de recursos subóptimo, recursos no utilizados que se ejecutan las 24 horas del día, los 7 días de la semana, problemas para identificar a los propietarios de los recursos y mayores costos. El etiquetado incoherente ha dado lugar a recursos mal configurados, lo que ha permitido algunas violaciones de datos corporativas y gubernamentales muy conocidas, así como fallos de seguridad e infraestructura. Si no conoce el propósito de un recurso específico o quién es su propietario, no puede estar seguro de que esté configurado correctamente o si tiene alguna vulnerabilidad de seguridad.&lt;br&gt;
Documento de política de etiquetado&lt;br&gt;
Las empresas deben tener un documento de política de etiquetado, que describa las estrategias clave de etiquetado, incluido el propósito de cada etiqueta, los formatos de etiqueta, las convenciones de nomenclatura y las responsabilidades de propiedad. Esto sirve como referencia para los esfuerzos de etiquetado actuales y futuros, lo que garantiza la coherencia y la claridad en toda la organización. Este documento no debe ser solo un enlace web a la nomenclatura de etiquetado recomendada por cada proveedor de alojamiento en la nube. El documento debe estar altamente personalizado para proporcionar una estructura de etiquetado detallada que esté diseñada para funcionar en varios proveedores de nube de la mejor manera posible. El establecimiento de políticas de etiquetado implica la definición de directrices y estándares para asignar etiquetas de metadatos a diversos tipos de recursos en la nube. Una política de etiquetado bien mantenida ayuda a evitar la proliferación de etiquetas y garantiza que las etiquetas sigan siendo significativas y útiles para las prácticas de optimización de recursos, previsión y reducción de costos. &lt;br&gt;
Una vez que las empresas han creado una política de etiquetado, debe compartirla con las partes interesadas relevantes. Las sesiones de formación son una forma sencilla de educar y garantizar que los equipos que trabajan en su entorno en la nube comprendan la importancia de seguir correctamente el plan de etiquetado en la nube de su organización.&lt;br&gt;
Revisiones de estándares de etiquetado&lt;br&gt;
La auditoría periódica de las prácticas de etiquetado es esencial para abordar las incoherencias, las etiquetas no utilizadas o los recursos en la nube que no cumplen con las normas. Las revisiones trimestrales periódicas de las etiquetas pueden identificar áreas de mejora, como la actualización de la política de etiquetado para adaptarse a nuevos casos de uso o el ajuste de las etiquetas para una mayor claridad. Las revisiones también pueden descubrir problemas como el etiquetado no autorizado o el incumplimiento de las políticas. Las herramientas y los scripts de Cloud Tag Monitoring pueden automatizar la detección de problemas de etiquetado, garantizar que los recursos cumplan con los criterios de cumplimiento predefinidos y marcar automáticamente los recursos que no cumplen con los requisitos. Esto permite a los equipos de operaciones en la nube identificar rápidamente los problemas y tomar medidas correctivas. Este mantenimiento continuo garantiza que las prácticas de etiquetado continúen satisfaciendo las necesidades cambiantes de la organización.&lt;br&gt;
Aplicación de la estrategia de etiquetado&lt;br&gt;
Las empresas deben exigir que las etiquetas se apliquen a todos los recursos, utilizando varios niveles de aplicación proactiva. Las herramientas y los mecanismos de administración de etiquetas se utilizan para aplicar políticas de etiquetado en los recursos en la nube. Las herramientas de automatización, las plataformas de administración en la nube y las API se pueden aprovechar para garantizar que los nuevos recursos se etiqueten correctamente y que los recursos existentes cumplan con los estándares de etiquetado.&lt;br&gt;
Los tres grandes proveedores de la nube han incorporado herramientas para hacer cumplir condiciones específicas en los recursos de la nube, incluidas las siguientes:&lt;br&gt;
• AWS Config, políticas de etiquetas y política de control de servicios de AWS&lt;br&gt;
• Directiva de Azure&lt;br&gt;
• Políticas de la organización y los recursos de GCP Cloud&lt;br&gt;
Además de estas políticas y herramientas, muchas empresas utilizan herramientas de software de terceros, como Cloud Zero, IBM Turbonomic, CloudHealth y Apptio Cloudability, que ofrecen herramientas amplias y altamente personalizadas para mejorar y estandarizar aún más las estrategias de etiquetado en la nube de la empresa en múltiples proveedores de nube.&lt;br&gt;
Categorías de etiquetas:&lt;br&gt;
Hay varias categorías o tipos distintos de etiquetas en la nube que se pueden aplicar a los recursos en la nube, entre las que se incluyen (1):&lt;br&gt;
1) Etiqueta del proveedor de la nube: Esta etiqueta indica el nombre del proveedor de alojamiento en la nube. Permite diferenciar los recursos de diferentes proveedores al incorporarlos a herramientas Finops de terceros.&lt;br&gt;
2) Etiquetas de niveles de recursos: se aplican a recursos en la nube, como unidades de almacenamiento, máquinas virtuales, bases de datos o componentes de red.&lt;br&gt;
3) Etiquetas de pares clave-valor: El tipo más común de etiqueta, que consta de una clave (atributo) y su valor correspondiente. Un ejemplo sería "Entorno: Desarrollo" o "Departamento: Gestión de productos". Estas etiquetas proporcionan información específica sobre los recursos y son altamente personalizables.&lt;br&gt;
4) Etiquetas de política de gobernanza y cumplimiento: se utilizan para marcar los recursos que están sujetos a requisitos de cumplimiento, reglamentarios y de gobernanza.&lt;br&gt;
5) Etiquetas permanentes o inmutables. Son etiquetas que, una vez aplicadas a un recurso en la nube, no se pueden eliminar ni modificar.&lt;br&gt;
6) Etiquetas de gestión de costos: estas etiquetas se utilizan para asignar costos a departamentos, proyectos o centros de costos específicos.&lt;br&gt;
7) Etiquetas de ciclo de vida: estas etiquetas se utilizan para administrar los ciclos de vida de los recursos en la nube y potencialmente desmantelar recursos no utilizados.&lt;br&gt;
8) Etiquetas de propiedad: estas etiquetas se utilizan para identificar a las personas que son los propietarios técnicos y administrativos de recursos específicos.&lt;br&gt;
9) Etiquetas dinámicas: estas etiquetas se generan o actualizan dinámicamente según reglas automatizadas predefinidas.&lt;br&gt;
10) Etiquetas heredadas: estas etiquetas son heredadas de los recursos principales por los recursos secundarios según estructuras jerárquicas y ayudan a mantener la coherencia.&lt;br&gt;
11) Etiquetas jerárquicas: estas etiquetas están organizadas en una estructura jerárquica para representar y ayudar a mantener las relaciones entre los recursos de la nube.&lt;br&gt;
Al utilizar diferentes clases de etiquetas de manera efectiva, las empresas pueden administrar y optimizar de manera efectiva su infraestructura en la nube desde una variedad de perspectivas.&lt;/p&gt;

&lt;p&gt;Etiquetas obligatorias&lt;br&gt;
Las etiquetas de nube obligatorias son esenciales para garantizar que los metadatos clave se apliquen de forma coherente a los recursos en la nube para mejorar la administración de recursos, la seguridad, el control de costos y el cumplimiento. Las etiquetas obligatorias deben aplicarse en todos los recursos de la empresa y en los proveedores de alojamiento en la nube. Las siguientes dieciséis etiquetas son las que se consideran las mejores prácticas para el etiquetado obligatorio (2):&lt;br&gt;
1) Nombre del proyecto o aplicación: es el proyecto al que pertenece el activo y suele ser un texto simple o un código alfanumérico de 6 a 8 caracteres.&lt;br&gt;
2) Número de centro de costo/departamento: El centro de costo o departamento vincula el recurso a un código de centro de costo, departamento o presupuesto específico para que se puedan asignar costos a un recurso específico. Este valor de etiqueta puede ser un número o un identificador de texto.&lt;br&gt;
3) Unidad/Grupo de Negocio: En algunas empresas las unidades o grupos de negocio son diferentes a los departamentos o centros de costos.&lt;br&gt;
4) Propietario técnico: esta etiqueta identifica al propietario técnico que es responsable de mantener o solucionar problemas del recurso y generalmente tiene formato de correo electrónico.&lt;br&gt;
5) Propietario de la empresa: esta etiqueta se refiere al propietario del producto o al personal responsable del activo y generalmente tiene formato de correo electrónico.&lt;br&gt;
6) ID de activo: este campo se utiliza para asignar recursos en la nube a los activos de la base de datos de gestión de configuración (CMDB), que es una base de datos de TI interna de la empresa que enumera todos los activos de TI.&lt;br&gt;
7) Nombre del cliente: Este es el nombre del cliente al que se le ha asignado el entorno de nube creado para. Esto es importante para asignar los costos de los recursos a sus clientes. Incluso si el nombre del cliente está integrado en el nombre del recurso, es recomendable incluirlo como etiqueta.&lt;br&gt;
8) ID de cliente o número de usuario final: este es el número de ID de cliente o número de usuario final que identifica a un cliente para el que ha configurado o administra recursos en la nube y es numérico o alfanumérico y tiene una longitud de 6 a 10 dígitos.&lt;br&gt;
9) Entorno: Esta etiqueta representa el entorno al que pertenece un recurso, como producción, desarrollo y staging. A diferencia de la nomenclatura, es mejor usar el nombre del entorno sin abreviar.&lt;br&gt;
10) Sistema operativo: es importante documentar los sistemas operativos subyacentes en uso para poder calcular el costo total de las licencias en uso en toda la infraestructura de la empresa.&lt;br&gt;
11) Motor de base de datos: Al igual que con los sistemas operativos, esta etiqueta es invaluable para la arquitectura y la asignación de costos.&lt;br&gt;
12) Nivel de gestión: esta etiqueta permite que un equipo de operaciones en la nube cuente fácilmente la cantidad total de recursos para diferentes niveles de gestión, incluidos SaaS, CaaS, PaaS, LAAS o FAAS.&lt;br&gt;
13) Clasificación de datos: Los recursos en la nube albergan datos con diferentes niveles de sensibilidad, incluidos:&lt;br&gt;
a. No comercial&lt;br&gt;
b. Público&lt;br&gt;
c. General&lt;br&gt;
d. Confidencial&lt;br&gt;
e. Altamente confidencial&lt;br&gt;
Los recursos que son más confidenciales deben bloquearse y protegerse.&lt;br&gt;
14) Estándares de seguridad, reglamentación y cumplimiento: estas etiquetas identifican los recursos que necesitan para cumplir con políticas específicas de seguridad, regulatorias, de auditoría o cumplimiento.&lt;br&gt;
15) Nivel crítico de negocio: Esta etiqueta puede ser útil para que los equipos de seguridad conozcan la criticidad del entorno y el impacto empresarial del recurso o la carga de trabajo soportada. Un sistema común es uno para misiones críticas de hasta cinco, que es de baja prioridad:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Misión crítica&lt;/li&gt;
&lt;li&gt;Unidad de negocio crítica&lt;/li&gt;
&lt;li&gt;Alto
IV. Medio
V. Bajo
16) Encendido/Apagado (Apagado): Esta etiqueta se debe utilizar para cargas de trabajo que no sean de producción, donde los recursos se pueden apagar durante horas no laborales y fines de semana, y volver a encenderlos cuando sean necesarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Etiquetas no obligatorias&lt;br&gt;
Las etiquetas no obligatorias pueden agregar otra información valiosa a los recursos en la nube, especialmente desde una perspectiva operativa. Las siguientes son siete de las etiquetas no obligatorias más comunes:&lt;br&gt;
1) Fecha de vencimiento del ciclo de vida o desmantelamiento: esta etiqueta muestra la fecha de vencimiento prevista. Fecha de un recurso en la nube para rastrear su ciclo de vida y cuándo necesita ser reemplazado o su fecha de desmantelamiento programada.&lt;br&gt;
2) Eliminar después de la fecha: si hay recursos adicionales creados en respuesta a un incidente o para fines de prueba, esta etiqueta ayuda a eliminar recursos en la nube después del tiempo especificado cuando ya no son necesarios.&lt;br&gt;
3) Ventana de mantenimiento: esta etiqueta es útil para administrar recursos cuando es necesario desconectarlos para mantenimiento, actualización o reemplazo.&lt;br&gt;
4) Programa de uso: esta etiqueta indica cuándo se utiliza normalmente un recurso.&lt;br&gt;
5) Propósito del recurso: para algunos activos en la nube, el nombre del recurso no es suficiente para explicar el rol que desempeña un servicio, por lo que es valioso contar con detalles adicionales.&lt;br&gt;
6) Etiqueta de solicitante: el nombre del equipo que solicita inicialmente el recurso.&lt;/p&gt;

&lt;p&gt;Etiquetado de herencia&lt;br&gt;
El etiquetado manual de los activos en la nube puede ser un proceso que requiere mucho tiempo, especialmente para las empresas con grandes huellas en la nube y entornos de proveedores de múltiples nubes. La herencia de etiquetas implica la asignación de etiquetas a los recursos primarios, que luego se propagan automáticamente a sus recursos secundarios. Este enfoque simplifica los esfuerzos de etiquetado, reduce los errores manuales y garantiza un etiquetado coherente en todos los recursos relacionados dentro de estructuras jerárquicas. Cuando los recursos en la nube se ponen en marcha inicialmente, es importante agregar tanta información de etiquetado como sea posible en el momento, ya que hacerlo más tarde a menudo nunca sucede. &lt;br&gt;
Los tres grandes proveedores de nube tienen la capacidad de implementar la herencia al etiquetar recursos. La herencia de etiquetas significa que un recurso en la nube principal puede pasar sus valores y claves de etiqueta a los recursos secundarios. Cada proveedor de nube tiene un enfoque diferente sobre cómo se pueden heredar las etiquetas y eso funciona de una manera única.&lt;br&gt;
Amazon Web Services (AWS)&lt;br&gt;
Para AWS, hay dos formas de implementar la herencia de etiquetas de AWS Organizations en los recursos secundarios (2):&lt;br&gt;
Una empresa puede utilizar una política de etiquetas de AWS, en la que define una regla de etiquetado que se heredará de arriba hacia abajo, desde AWS Organizations hasta las unidades organizativas (OU) de AWS subyacentes y en las cuentas de AWS. Mediante el uso de políticas de etiquetas, una empresa puede fusionar las políticas principales procedentes de los recursos principales (política principal) con las políticas definidas en el nivel de recurso (política secundaria), para crear políticas que serán heredadas por los recursos secundarios.&lt;br&gt;
Mediante el uso de políticas de control de servicios (SCP), una empresa puede crear políticas para administrar los permisos en las diferentes cuentas de AWS que tiene una empresa. Con el uso de SCP, una empresa puede requerir etiquetas específicas que deben estar presentes en todos los recursos. Para garantizar la coherencia, también se puede usar para evitar que las etiquetas existentes se modifiquen después de la creación en las entidades de servicio.&lt;br&gt;
AWS ofrece dos tipos de etiquetas:&lt;br&gt;
1) Etiquetas creadas por AWS: Estas etiquetas tienen el prefijo awn: antes del nombre de la etiqueta y no se pueden cambiar ni modificar una vez creadas.&lt;br&gt;
2) Etiquetas creadas por el usuario: Estas etiquetas tienen el prefijo user: antes del nombre de la etiqueta y estas son completamente administradas por el usuario.&lt;br&gt;
Microsoft Azure&lt;br&gt;
En Azure, se puede configurar una directiva de herencia de etiquetado mediante directivas específicas que transfieren etiquetas del grupo de recursos o la suscripción a todos los recursos que contiene. Esto simplifica las prácticas de administración de etiquetado, ya que las etiquetas suelen compartirse dentro de un grupo de recursos. A continuación se muestran las directivas de etiquetado de claves en Azure:&lt;br&gt;
• Heredar una etiqueta de una suscripción.&lt;br&gt;
• Heredar una etiqueta del grupo de recursos.&lt;br&gt;
• Herede una etiqueta del grupo de recursos si falta.&lt;br&gt;
• Anexe una etiqueta y su valor del grupo de recursos.&lt;br&gt;
Plataforma en la nube de Google (GCP)&lt;br&gt;
Con Google Cloud Platform, las etiquetas se heredan automáticamente a través de la jerarquía de recursos (empresa), carpetas, proyectos y, a continuación, recursos) por parte de los recursos secundarios. Una empresa puede anular cualquier etiqueta heredada de un recurso secundario si es necesario. En GCP, es importante etiquetar la información clave en el nivel más alto posible de la jerarquía. Esto facilitará el proceso de etiquetado y evitará el proceso lento y repetitivo de tener que hacerlo manualmente activo por activo.&lt;br&gt;
Estilo y formatos de etiquetado&lt;br&gt;
A continuación se muestran el estilo y los formatos de etiquetado para cada uno de los tres principales proveedores de nube (2):&lt;/p&gt;

&lt;p&gt;Etiquetado de datos exportados&lt;br&gt;
Algunos proveedores de alojamiento en la nube requieren que una empresa preseleccione las claves de etiqueta que se exportarán con sus datos de facturación. Otros proveedores de alojamiento exportan todas las etiquetas asociadas con sus recursos. Para las plataformas en la nube que le permiten seleccionar sus etiquetas, como AWS, debe tener cuidado de no agregar demasiadas, ya que esto puede aumentar exponencialmente el tamaño de sus archivos de facturación mensual, lo que dificultará su análisis.&lt;br&gt;
Esfuerzos de etiquetado nativo frente a esfuerzos de etiquetado externo&lt;br&gt;
Es posible que las empresas no puedan utilizar completamente las capacidades y funcionalidades básicas de etiquetado en sus proveedores nativos de alojamiento en la nube. Algunas empresas optan por realizar la mayor parte del etiquetado externamente en soluciones de software FinOps de proveedores externos como Cloud Zero, IBM Turbonomic, CloudHealth y Apptio Cloudability. El peligro de esta práctica es que si decide que la plataforma FinOps no funciona para su empresa, perderá todo el trabajo de configuración de etiquetado si deja de usar la plataforma si se puede exportar externamente. Una mejor práctica es aprovechar al máximo la capacidad de etiquetado nativo de sus proveedores de alojamiento en la nube existentes e importar estas etiquetas a cualquier plataforma FinOps de terceros que esté utilizando. Esto garantiza que siempre tendrá sus datos de etiquetado lo más cerca posible de la fuente original.&lt;br&gt;
Automatice los procesos de etiquetado&lt;br&gt;
El etiquetado manual puede dar lugar a incoherencias y errores. Estas incoherencias pueden dar lugar a recursos mal etiquetados o sin etiquetar, lo que dificulta la administración y el seguimiento de estos recursos de forma eficaz. Es importante automatizar el etiquetado de los activos de recursos en la nube siempre que sea posible, ya que gestionarlo de forma manual es una tarea que requiere mucho tiempo. Las herramientas de automatización de etiquetado de recursos pueden analizar continuamente los recursos en la nube para encontrar aquellos que no están etiquetados en absoluto o que tienen etiquetas que no son válidas y no cumplen con las políticas corporativas. El etiquetado se puede automatizar con scripts o herramientas de infraestructura como código (IaC) como Terraform o AWS CloudFormation (2). Otras opciones de automatización incluyen el uso de API de proveedores de nube, SDK o herramientas de automatización de terceros para administrar etiquetas mediante programación en servicios y recursos en la nube.&lt;br&gt;
La automatización del etiquetado desencadena flujos de trabajo&lt;br&gt;
Las etiquetas se pueden utilizar para programar y activar flujos de trabajo de automatización, lo que ayuda a optimizar los procesos de aprovisionamiento, escalado y desmantelamiento, lo que mejora la eficiencia operativa y reduce la intervención manual. La mayoría de los proveedores de servicios en la nube han hecho que la automatización de la construcción en el proceso de etiquetado sea fluida, ya que los usuarios pueden aprovechar sus herramientas propietarias o integrar herramientas de nube pública de terceros aplicables, como CloudCheckr. Por ejemplo, en AWS, puede utilizar las API de etiquetado de AWS, AWS CloudFormation o herramientas de infraestructura como código como AWS Cloud Development Kit (CDK) para la automatización. Microsoft Azure también ofrece Azure Automation y Logic Apps que se pueden aprovechar para automatizar el proceso de etiquetado.&lt;/p&gt;

&lt;p&gt;Conclusión&lt;br&gt;
Tener los datos de las etiquetas incrustadas en la factura de la nube permite a las empresas agrupar los costos por varias dimensiones de etiquetas. Organizar los costes por cada una de sus unidades de negocio o por entorno le permitirá asignar los costes a los departamentos. Una estrategia de etiquetado bien implementada le permite mejorar la administración de recursos, la seguridad, la asignación de costos y la eficiencia operativa en entornos de nube. Las estrategias clave de etiquetado incluyen la definición de una estrategia clara alineada con los objetivos empresariales y el establecimiento de prácticas estandarizadas para las convenciones de nomenclatura, las categorías y los valores. En general, la adopción del refinamiento y la adaptación continuos en las estrategias de etiquetado respaldan la agilidad, la optimización de costos, la seguridad, el cumplimiento y la toma de decisiones informadas en entornos de nube.&lt;/p&gt;

&lt;p&gt;Estrategias de nomenclatura de recursos en la nube&lt;/p&gt;

&lt;p&gt;Algunas empresas que están en transición a la nube a menudo cometen el error crítico de no establecer reglas y estándares de nomenclatura coherentes para los recursos, cuentas, servidores, instancias y otros activos de la nube. La nomenclatura de los recursos en la nube es crucial para administrar, escalar y mantener la claridad dentro de los entornos en la nube. Las cuentas individuales se pueden usar para aislar los costos de un entorno o aplicación de otro.  Los equipos de Cloud FinOps deben trabajar en estrecha colaboración con sus homólogos de Cloud Ops para establecer convenciones y procesos de nomenclatura bien pensados para garantizar que se sigan estos estándares de nomenclatura. Cualquier nueva solicitud para poner en marcha nuevos recursos en la nube debe fluir a través de un equipo central que apruebe o deniegue los nuevos nombres de recursos antes de que se creen las instancias. Los siguientes son los métodos que se pueden crear en los tres grandes proveedores de nube (1): &lt;/p&gt;

&lt;p&gt;Microsoft Azure → Suscripciones o grupos de recursos&lt;br&gt;
Amazon Web Services (AWS) → Cuentas vinculadas o categorías de costos&lt;br&gt;
Google Cloud Platform (GCP) → Proyectos o carpetas&lt;br&gt;
La forma en que los ingenieros de operaciones en la nube de una empresa colocan su infraestructura en cuentas de AWS, suscripciones de Azure y proyectos de Google Cloud forman la primera capa de la estrategia de asignación de costos de una empresa. &lt;br&gt;
Beneficios de una estrategia de nomenclatura&lt;br&gt;
Una buena estrategia de nomenclatura garantiza la coherencia, ayuda a la identificación de recursos, simplifica la administración y mejora la colaboración, especialmente en entornos complejos de múltiples nubes. Contar con una convención de nomenclatura adecuada puede marcar una enorme diferencia desde el punto de vista de la gestión de costes y las operaciones. Al tener y aplicar reglas de nomenclatura de recursos, se puede identificar información valiosa de un activo en la nube con solo leer su nombre. Puede identificar el entorno, el rol, el proyecto y la unidad de negocio a la que pertenece el activo. &lt;br&gt;
Las principales ventajas de contar con una convención de nomenclatura estándar son:&lt;br&gt;
-Indica el rol y la propiedad de un recurso en la nube.&lt;br&gt;
-Reduce el esfuerzo para comprender el código y permite a los desarrolladores centrarse en aspectos de desarrollo más importantes en lugar de discutir sobre estándares de nombres.&lt;br&gt;
-Es un requisito previo para establecer y aplicar cualquier gobernanza de la nube exitosa y la evaluación o aplicación automatizada de políticas.&lt;br&gt;
-Seguimiento más sencillo de activos en distintas regiones geográficas, departamentos comerciales y proveedores de nube pública&lt;br&gt;
-Ayuda a formalizar las expectativas y promover la coherencia dentro de la infraestructura de la nube.&lt;br&gt;
-Evita conflictos e inconsistencias cuando los nombres de recursos deben ser únicos.&lt;br&gt;
-Facilita la clasificación y filtrado de recursos rápidamente.&lt;br&gt;
-Descripción fácil de leer de los recursos en la nube que incluye toda la información clave. Facilita la localización e identificación de los recursos.&lt;br&gt;
No tener reglas de nomenclatura estandarizadas en múltiples plataformas en la nube puede dar lugar a diferentes abreviaturas y convenciones. Esto puede causar diferentes interpretaciones y opiniones, lo que puede conducir a errores operativos y a una toma de decisiones subóptima.&lt;br&gt;
Consideraciones específicas del proveedor de nube&lt;br&gt;
En AWS, el proceso de asignación de nombres a los recursos es ligeramente diferente al de Google Cloud Platform (GCP) y Microsoft Azure. En GCP y Azure, parte del proceso de creación de un recurso o activo en la nube es asignarle un nombre. En Amazon Web Services (AWS), cuando se crea un recurso o activo, no se requiere un nombre y es opcional, ya que se les asigna un ID de cuenta #. Las convenciones de nomenclatura para AWS son más bien una estrategia de etiquetado. Independientemente del proveedor de nube que utilice su empresa, es fundamental contar con convenciones y reglas de nomenclatura bien pensadas que se hagan cumplir. &lt;br&gt;
Cada proveedor de nube tiene sus propias peculiaridades y mejores prácticas para la nomenclatura. Tenga en cuenta estas diferencias al crear una estrategia para una plataforma específica:&lt;br&gt;
• AWS (Estados Unidos): Se recomienda encarecidamente el etiquetado para agregar metadatos a los recursos. Los nombres de bucket para S3 deben ser únicos globalmente.&lt;br&gt;
• Celeste: Los recursos de Azure tienen reglas de nomenclatura específicas para cada servicio (por ejemplo, máquinas virtuales, cuentas de almacenamiento). Los grupos de recursos de Azure suelen ser un buen límite lógico para la nomenclatura.&lt;br&gt;
• Nube de Google: Los recursos de GCP tienen restricciones similares a las de AWS, pero permiten el etiquetado para mejorar la organización. Los nombres de los recursos deben ser únicos globalmente para el almacenamiento y las redes.&lt;br&gt;
Como referencia, estos son los recursos clave relacionados con las convenciones de nomenclatura de cada uno de los tres grandes proveedores de nube (2):&lt;br&gt;
• Servicios web de Amazon: &lt;a href="https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html&lt;/a&gt;&lt;br&gt;
• Microsoft Azure: &lt;a href="https://learn.microsoftcom/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging" rel="noopener noreferrer"&gt;https://learn.microsoftcom/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/naming-and-tagging&lt;/a&gt;&lt;br&gt;
• Plataforma de Google Cloud: &lt;a href="https://cloud.googlecom/compute/docs/naming-resources" rel="noopener noreferrer"&gt;https://cloud.googlecom/compute/docs/naming-resources&lt;/a&gt;&lt;br&gt;
Estándares de nomenclatura vs. etiquetado&lt;br&gt;
Muchas empresas no entienden las diferencias entre las convenciones de nomenclatura y las estrategias de etiquetado. Las convenciones de nomenclatura son necesarias (excepto para AWS) para crear nuevos recursos, como servidores, CPU, almacenamiento, bases de datos y redes. Las estrategias de etiquetado permiten clasificar aún más un activo o recurso cuando no forman parte del nombre o si no se siguieron las convenciones de nomenclatura. Una vez que creas un nombre de recurso en GCP o Azure, no puedes cambiarlo más tarde porque la mayoría de los recursos en la nube no admiten cambios de nombre. Los activos etiquetados se pueden cambiar y corregir en cualquier momento durante el ciclo de vida de los activos en la nube. Las estrategias de etiquetado pueden evolucionar con el tiempo a medida que cambia la empresa, pero las convenciones de nomenclatura permanecen sin cambios.&lt;br&gt;
Prácticas recomendadas y estrategias para asignar nombres a los recursos en la nube&lt;br&gt;
A continuación se muestran varias prácticas recomendadas y estrategias para nombrar los recursos en la nube que las empresas deben seguir:&lt;br&gt;
1) Orden de significación&lt;br&gt;
De izquierda a derecha, los elementos del nombre deben tener una importancia decreciente, lo que mejora la clasificación y la legibilidad. Si necesita una convención de nomenclatura que sea multinube, considere la posibilidad de agregar elementos adicionales en orden de importancia. Tenga en cuenta que los criterios para lo que se consideran los elementos más importantes o esenciales pueden variar significativamente de una empresa a otra, por lo que existe una amplia variación en la secuencia de elementos para los recursos en la nube a nivel mundial.&lt;br&gt;
2) Unicidad de las convenciones de nomenclatura.&lt;br&gt;
Una convención de nomenclatura de recursos en la nube debe permitirle asignar un nombre único tanto a los recursos con nombre global como a los recursos con nombre local, de modo que no tenga un conflicto de nomenclatura que impida su implementación.&lt;br&gt;
3) Sintaxis y estilo&lt;br&gt;
Tenga en cuenta que cada proveedor de nube tiene diferentes reglas, limitaciones y restricciones con respecto a la nomenclatura de los activos en la nube, por lo que es importante ser lo más coherente posible entre varios proveedores de nube. La mejor regla general es usar solo letras minúsculas y números para los componentes individuales y utilizar guiones (-) como separadores entre elementos. Trate de evitar el uso de caracteres especiales, guiones bajos y sin espacios. En las tablas siguientes se muestran las principales convenciones o reglas de nomenclatura y limitaciones de los tres grandes proveedores de nube (2):&lt;/p&gt;

&lt;p&gt;4) Separadores de nombres&lt;br&gt;
Algunas empresas que solo tienen un único proveedor de nube tienen convenciones de nomenclatura que utilizan un número fijo de caracteres para cada componente de un nombre de recurso. Esto significa que tienen una longitud y un formato fijos. Sin embargo, cuando se trabaja con varios proveedores de nube, es importante utilizar un separador que permita separar los distintos campos mediante programación. A muchas empresas les gusta utilizar un guión como separador común, ya que es fácil de ver y tiene una sintaxis aceptable para la mayoría de los proveedores de nube universalmente.&lt;br&gt;
5) Estructura y componentes para las convenciones de nomenclatura&lt;br&gt;
El número de componentes o elementos de una estrategia y estructura de nomenclatura puede variar de simple a complejo en función de lo sofisticada que sea la huella en la nube de una empresa, el número de proveedores de alojamiento en la nube y si gestiona los recursos en la nube de los clientes. &lt;br&gt;
Una empresa con un solo proveedor de nube puede utilizar una convención de nomenclatura simple con 4 a 5 elementos, tales como:&lt;/p&gt;

&lt;p&gt;Nombre del recurso - Tipo de servicio - Entorno - ID único&lt;br&gt;
O  Nombre del cliente-ID del cliente-Tipo de servicio-Entorno-ID único&lt;br&gt;
Una empresa con múltiples proveedores de nube con cientos de recursos puede utilizar 6 o 7 elementos para transmitir más información, tales como:&lt;/p&gt;

&lt;p&gt;Proveedor de la nube - Nombre del recurso - Tipo de servicio - Entorno - Región - ID único&lt;br&gt;
O  Proveedor de la nube - Nombre del cliente - ID del cliente - Tipo de servicio - Entorno - Región - ID único&lt;br&gt;
Sin embargo, una empresa que tiene múltiples proveedores de alojamiento en la nube y miles de recursos, necesita convenciones de nomenclatura más sofisticadas que puedan tener hasta 10 a 12 elementos, como se muestra a continuación:&lt;/p&gt;

&lt;p&gt;Proveedor de la nube - Nombre del proyecto - Tipo de servicio - Tipo de recurso - Nombre del recurso - Entorno - Región - Unidad de negocio/Centro de costes - Versión - ID único&lt;br&gt;
O   Proveedor de la nube - Nombre del cliente - ID del cliente - Tipo de servicio - Tipo de recurso - Nombre del recurso - Entorno - Región - Unidad de negocio/Centro de costes - Versión - ID único&lt;br&gt;
Es posible que las empresas que utilizan convenciones de nomenclatura más complejas no tengan que aprovechar el etiquetado tanto como sus nombres ya transmiten tanta información. Cada componente de un nombre agrega un contexto valioso, lo que garantiza que los recursos se identifiquen fácil y correctamente, especialmente para infraestructuras en la nube grandes y complejas. A continuación se muestra un breve desglose de cada uno de estos elementos que se encuentran en las convenciones de nomenclatura que se muestran arriba:&lt;br&gt;
a) Proveedor de alojamiento en la nube: Este campo es especialmente importante para las organizaciones multinube para permitir el filtrado y el análisis de la manera más sencilla. Este campo se estructura mejor como un campo de longitud fija con 2 o 3 caracteres para los tres principales proveedores de nubes como tal:&lt;/p&gt;

&lt;p&gt;b) Nombre del cliente: Este es el nombre del cliente para el que su empresa está administrando los recursos en la nube. El nombre debe ser lo más corto posible pero identificable.&lt;br&gt;
c) ID de cliente: Este es el número de identificación del cliente o el número de usuario final y debe tener una longitud de 6 a 10 números.&lt;br&gt;
d) Nombre del proyecto: Este es el nombre del proyecto al que pertenece el recurso. Los nombres de los proyectos deben tener entre 4 y 6 caracteres alfanuméricos como máximo. &lt;br&gt;
e) Tipo de servicio: El tipo de servicio en la nube, por ejemplo, computación, almacenamiento, red, bases de datos. La mejor práctica es utilizar las abreviaturas preferidas del proveedor de la nube, que suelen oscilar entre 2 y 5 letras.&lt;br&gt;
f) Tipo de recurso: Esta es una especificación adicional del recurso dentro de la. Use abreviaturas para el tipo de recurso, como vm para máquina virtual, vnet para red virtual, db para base de datos.&lt;br&gt;
g) Nombre del recurso: Nombre descriptivo del recurso en función de su función, como aplicación web o base de datos, pero manténgalo por debajo de 8 letras si es posible.&lt;br&gt;
h) Medio ambiente: El entorno en el que se despliega el recurso es importante, ya que los recursos de los diferentes entornos se gestionan operativamente de diversas maneras. Por ejemplo, una máquina virtual en desarrollo puede estar sujeta a un apagado automático durante las horas de inactividad por las tardes o los fines de semana, mientras que una máquina de producción no lo está. Un enfoque de nombre de campo de tres letras proporciona el mejor enfoque para los entornos de nomenclatura, ya que es fácilmente legible:&lt;/p&gt;

&lt;p&gt;i) Unidad de Negocio/Centro de Costos: Este elemento es especialmente importante para asignar los costos de recursos a departamentos, unidades de negocio o proyectos específicos. El formato de este campo depende de cómo se nombren las unidades de negocio y los centros de coste. Intente abreviar las unidades de negocio a 3-5 letras y los centros de costo con 3-4 números como máximo.&lt;br&gt;
j) Región: La ubicación geográfica de los recursos es útil para mantener la coherencia de los nombres de los recursos en varios entornos de nube. Por ejemplo, us-east1, us-west1, eu-central1 o eu-west2. Por lo general, se utiliza una combinación de letras y números.&lt;br&gt;
k) Versión: En el caso de los recursos que pueden tener varias versiones, es fundamental incorporar números de versión en la convención de nomenclatura. Por ejemplo, v1 o v2 para iteraciones o actualizaciones.&lt;br&gt;
l) Identificación única: Un identificador único, a menudo alfanumérico, para garantizar que el nombre del recurso sea único y fácil de identificar.&lt;br&gt;
6) Recursos para padres vs. hijos&lt;br&gt;
Los activos en la nube específicos se pueden considerar recursos secundarios de un recurso principal, como máquinas virtuales y unidades de almacenamiento. Para estos recursos, las empresas deben usar una regla de convención de nomenclatura específica para que puedan hacer referencia al nombre del recurso principal, que ya debería contener toda la información que necesitamos.&lt;br&gt;
A continuación, se muestra un ejemplo de nombres que siguen esta convención:&lt;/p&gt;

&lt;p&gt;Padre:&lt;br&gt;
-Recurso principal de máquina virtual → vm-ccc-it-adxyz-pro&lt;br&gt;
Niños:&lt;br&gt;
-Recurso secundario del adaptador de red de máquina virtual → nic-vm-ccc-it-adxyz-pro&lt;br&gt;
-Recurso secundario del grupo de seguridad de red → nsg-vm-ccc-it- adxyz-pro&lt;/p&gt;

&lt;p&gt;7) Considere la escalabilidad y la automatización&lt;br&gt;
Al escalar la infraestructura, es posible que la nomenclatura manual no sea factible. Diseñe una estrategia que funcione bien con herramientas de automatización como Terraform, CloudFormation o Azure Resource Manager (ARM).&lt;br&gt;
• Uso Nombres coherentes que se pueden generar mediante programación.&lt;br&gt;
• Etiquetas/rótulos de recursos puede complementar las convenciones de nomenclatura para ayudar con la automatización y la categorización.&lt;br&gt;
Conclusión&lt;br&gt;
Contar con una convención de nomenclatura adecuada puede marcar una enorme diferencia desde el punto de vista de la gestión de costes y las operaciones. No tener reglas de nomenclatura estandarizadas en múltiples plataformas en la nube puede dar lugar a diferentes abreviaturas y convenciones. Esto puede causar diferentes interpretaciones y opiniones, lo que puede conducir a errores operativos y a una toma de decisiones subóptima. La clave del éxito con las convenciones de nomenclatura es establecerlas desde el principio y aplicarlas de forma coherente en toda la infraestructura de nube de una empresa. La convención de nomenclatura real siempre debe adaptarse a los entornos de nube específicos de una empresa. No tener convenciones y estándares de nomenclatura de recursos en toda la empresa hará que la administración y el etiquetado de recursos sean engorrosos a largo plazo. Una estrategia de nomenclatura sólida ayuda a simplificar la administración de recursos, mejorar la seguridad y escalar los entornos en la nube de manera eficiente. Al definir convenciones de nomenclatura claras, hacerlas cumplir y aprovechar la automatización siempre que sea posible, los equipos pueden lograr una mayor eficiencia operativa y reducir costos.&lt;/p&gt;

</description>
      <category>arc</category>
    </item>
    <item>
      <title>Jenkins Project on AWS EC2 CI/CD</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Tue, 22 Apr 2025 04:49:11 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/jenkins-project-on-aws-ec2-cicd-1bkf</link>
      <guid>https://dev.to/enriqueaguila/jenkins-project-on-aws-ec2-cicd-1bkf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Deploying Jenkins within the AWS environment using an EC2 instance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introduccion Jenkis&lt;br&gt;
Jenkins is an open-source automation tool used for continuous integration (CI) and continuous delivery (CD). It automates software development tasks such as building, testing, and deploying applications, improving software efficiency and quality.&lt;/p&gt;

&lt;p&gt;CI/CD Deployment with Jenkins on AWS EC2&lt;br&gt;
Jenkins on EC2 In this project, we will implement a Continuous Integration (CI) and Continuous Delivery (CD) pipeline using Jenkins on an AWS EC2 instance. The goal is to automate the process of building, testing, and deploying an application.&lt;/p&gt;

&lt;p&gt;-Jenkins: CI/CD automation server -GitHub: Code repository -AWS EC2: Virtual instance for Jenkins&lt;/p&gt;

&lt;p&gt;CI/CD pipeline:&lt;br&gt;
-Build: Jenkins retrieves the code from GitHub and builds the application. -Testing: Jenkins runs unit and integration tests to validate the application. -Deployment: Jenkins deploys the application to the test server. -Validation: Jenkins runs validation tests to ensure the application is working properly. -Production deployment: Jenkins deploys the application to the production server.&lt;/p&gt;

&lt;p&gt;Commands to run in programmatic access in the EC2 CLI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj49ev3hghifcw0i2sibm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj49ev3hghifcw0i2sibm.png" alt="Image description" width="800" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
sudo wget -O /etc/yum.repos.d/jenkins.repo \&lt;br&gt;
    &lt;a href="https://pkg.jenkins.io/redhat-stable/jenkins.repo" rel="noopener noreferrer"&gt;https://pkg.jenkins.io/redhat-stable/jenkins.repo&lt;/a&gt;&lt;br&gt;
sudo rpm --import &lt;a href="https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key" rel="noopener noreferrer"&gt;https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key&lt;/a&gt;&lt;br&gt;
sudo yum upgrade&lt;/p&gt;

&lt;h1&gt;
  
  
  Add required dependencies for the jenkins package
&lt;/h1&gt;

&lt;p&gt;sudo yum install fontconfig java-21-openjdk&lt;br&gt;
sudo yum install jenkins&lt;br&gt;
sudo systemctl daemon-reload&lt;br&gt;
`&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Amazon Corretto
Running this command will install Amazon Corretto 21 on your system, allowing you to develop and run Java applications.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxabsb1olxw5w86zuuu5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxabsb1olxw5w86zuuu5.png" alt="Image description" width="800" height="567"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo dnf install java-21-amazon.corretto-devel&lt;br&gt;
java --versión&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Run and view the status of Jenkins on EC2.&lt;br&gt;
jenkins status&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs2adsrfqm2wsxk7udeh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs2adsrfqm2wsxk7udeh.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
sudo systemctl enable Jenkins&lt;br&gt;
sudo systemctl start Jenkins&lt;br&gt;
sudo systemctl status Jenkins&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Copy the IP of the instance port 8080
Example to paste into a browser tab: 
&lt;a href="http://123.24.45.98:8080" rel="noopener noreferrer"&gt;http://123.24.45.98:8080&lt;/a&gt; 6 jenkins unlok&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d14pplctf63wg86kow6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d14pplctf63wg86kow6.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Security group
Add the security group on port 8080 and in source myIP and put the instance's with the slash /32 &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatsaoiebocyjka4a8pjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fatsaoiebocyjka4a8pjv.png" alt="Image description" width="800" height="339"&gt;&lt;/a&gt;&lt;br&gt;
Jenkins&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tp22v5s2vvjqyq9v5dz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tp22v5s2vvjqyq9v5dz.png" alt="Image description" width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Jenkins, branch management in a Git repository is essential for implementing Continuous Integration (CI) and Continuous Delivery/Deployment (CD) workflows. Here's how Jenkins handles branches:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy2l9vee73w0db68sce33.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy2l9vee73w0db68sce33.png" alt="Image description" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configuring Branches in Jenkins You can configure Jenkins to automatically build when changes are detected on a specific branch of a Git repository. This is typically done in the Jenkins job configuration, specifying the branch or branches you want to monitor.&lt;br&gt;
Multibranch Pipeline Jenkins offers the "Multibranch Pipeline" feature, which allows you to create jobs that automatically detect and build branches in a Git repository according to a specified pattern.&lt;br&gt;
Jenkins Pipeline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbivh422xtehvrcab06q2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbivh422xtehvrcab06q2.png" alt="Image description" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A Jenkins Pipeline is a suite of plugins that supports the deployment and integration of continuous delivery pipelines in Jenkins. A Jenkins pipeline is a sequence of automated tasks that execute in a series of defined stages, enabling the efficient and repeatable building, testing, and delivery of applications. Key components of a Jenkins Pipeline:&lt;/p&gt;

&lt;p&gt;Stages: A pipeline is divided into stages, such as "Build," "Test," and "Deploy." Each stage contains a series of steps that execute in order. Steps: Steps are the basic units of work within a stage. They can include shell commands, script execution, API calls, etc. Agents: Agents are the nodes where pipelines run. They can be the Jenkins master or slave nodes configured to perform specific jobs.&lt;/p&gt;

&lt;p&gt;Enrique Aguilar Martinez Cloud Engineer. DevOps Jr.&lt;/p&gt;

</description>
      <category>ec2</category>
      <category>jenkins</category>
      <category>aws</category>
      <category>cicd</category>
    </item>
    <item>
      <title>Amazon Bedrock on EC2 Visual Studio LLM Project</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Mon, 03 Mar 2025 20:14:57 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/amazon-bedrock-on-ec2-visual-studio-llm-project-39bc</link>
      <guid>https://dev.to/enriqueaguila/amazon-bedrock-on-ec2-visual-studio-llm-project-39bc</guid>
      <description>&lt;p&gt;&lt;strong&gt;Amazon Bedrock&lt;/strong&gt; is a service offered by Amazon Web Services (AWS) to facilitate the development of Generative AI applications.&lt;br&gt;
Context.&lt;br&gt;
&lt;strong&gt;Generative artificial intelligence&lt;/strong&gt; (&lt;em&gt;Generative AI&lt;/em&gt;) plays a critical role in Amazon Bedrock, enabling developers to create applications with breakthrough capabilities that were previously impossible. But what is generative AI? Generative AI is a type of artificial intelligence that can create new content and ideas, including conversations, stories, images, videos and music, and helps us innovate. &lt;/p&gt;

&lt;p&gt;Like all artificial intelligence, this one works with machine learning or ML models. However, Generative AI is powered by very, very large models that are pre-trained on large collections of data and are known as base models or fundamental models (FM). Recent advances in machine learning have led to the emergence of fundamental models containing billions of parameters or variables. Recent advances in generative artificial intelligence (generative AI) have been largely driven by processors. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Within Amazon Web Services (AWS)&lt;/strong&gt;, unprecedented computing power is offered. Among the main ones are the Trainium2 and Graviton4 processors, developed for machine learning scenarios and execution of AI-based applications, these solutions are based on ARM architecture. &lt;br&gt;
Amazon Trainium2 – This is a custom-designed AI accelerator chip built by Amazon specifically for training large machine learning models, particularly core models (FM) and large language models (LLM) with trillions of parameters. Trainium2 stands out for accelerating the training process of these complex models. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft96wnea1w68hneu1xek6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft96wnea1w68hneu1xek6.jpeg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Graviton4 is a powerful CPU architecture designed by Amazon specifically for its cloud services and can benefit Amazon Bedrock in several ways: &lt;br&gt;
• Improved cost-effectiveness: Graviton4 processors offer a better price-performance ratio compared to previous generations. &lt;/p&gt;

&lt;p&gt;This means that running generative AI applications on Amazon Bedrock models powered by Graviton4 could potentially be more cost-effective. &lt;br&gt;
• Possible performance gains for specific tasks: While Graviton4 is not designed specifically for AI training like Trainium2, some generative AI tasks within Amazon Bedrock applications could benefit from its performance improvements. &lt;br&gt;
This could include tasks that rely heavily on general computing power rather than specialized AI acceleration. &lt;br&gt;
• Trainium2 delivers up to 50% training cost savings over comparable Amazon EC2 instances and is designed for machine learning workloads. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trainium2&lt;/strong&gt; was built to train and deploy ultra-large Generative AI models with hundreds of miles of millions of parameters. In short, Generative AI fits into companies' existing and future business and operating models, as well as productively experimenting with Generative AI use cases. &lt;/p&gt;

&lt;p&gt;The combination of scalable cloud computing power, foundational AI models, and AWS's ongoing commitment to technical excellence offers businesses and developers an exceptional platform to drive project creativity, efficiency, and innovation. of companies, generating long-term opportunities resulting from innovative trends. &lt;/p&gt;

&lt;p&gt;This is how Amazon Bedrock can develop wide margins of creation and deployments in large projects through Generative AI. AI Agents at Amazon Bedrock AI agents in Amazon Bedrock are crucial for the following reasons.&lt;/p&gt;

&lt;p&gt;They accelerate the development of generative AI applications: &lt;br&gt;
• They allow you to create generative AI applications without the need for complex coding, saving time and resources. &lt;br&gt;
• Users can create agents simply by describing their goals in natural language, Amazon Bedrock takes care of the orchestration and execution. &lt;br&gt;
They expand the capabilities of generative AI: &lt;br&gt;
• Agents can connect to enterprise systems and data sources, allowing them to access and process real-world information. &lt;br&gt;
• This allows them to perform more complex tasks and generate more precise and personalized responses. &lt;/p&gt;

&lt;p&gt;Improve efficiency and productivity: &lt;br&gt;
• Agents can automate tasks previously performed by humans, freeing up time for humans to focus on more strategic activities. &lt;br&gt;
• They can also improve task accuracy and consistency, reducing errors and rework. &lt;br&gt;
They promote innovation: &lt;br&gt;
• By making it easy to build generative AI applications, Bedrock empowers businesses to explore new ideas and solutions. &lt;br&gt;
• This can lead to the development of new products, services and business models. Amazon Bedrock and its AI agents are catalysts for business innovation, offering a path to efficiency, personalization and intelligent decision making, driving growth and success in today's technology-driven world. In the next installment we will see more about Amazon Bedrock.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq2qs89q93jbx85cyc3n.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkq2qs89q93jbx85cyc3n.jpeg" alt="Image description" width="800" height="800"&gt;&lt;/a&gt;&lt;br&gt;
Let's go straight to the project:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
An AWS account&lt;br&gt;
Visual Studio Code installed on your system&lt;/p&gt;

&lt;p&gt;AWS IAM Setup&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create an IAM Group :&lt;br&gt;
o Navigate to IAM in AWS and create a new group named demo.&lt;br&gt;
o Add BedrockReadOnlyAccesspermission to the group.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create Custom IAM Policies :&lt;br&gt;
o Create an inline policy for the demogroup that includes readinvokepermissions for Bedrock models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Service Account :&lt;br&gt;
o Create a user named svc-bedrockand add it to the demogroup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate API Keys :&lt;br&gt;
o Navigate to serviceBedrocksecuritycredentialsand create&lt;br&gt;
new access keys.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Configure Access to Bedrock Models&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Access Bedrock in the AWS Console :&lt;br&gt;
o Go to the Bedrock service and navigate to Model Access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manage model access:&lt;br&gt;
o Select and add the models you want to access, such as llama, Amazon titan, Anthropic, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Set up local environment&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Set up AWS credentials:&lt;br&gt;
o Edit the .aws/credentials file with the access key and secret key obtained above.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set region settings:&lt;br&gt;
o Modify the .aws/config file to specify the desired AWS region.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Developing the application&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Setup in Visual Studio Code:&lt;br&gt;
o Open Visual Studio Code and prepare the application that will invoke the AI ​​models.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Bedrock Helper:&lt;br&gt;
o Implement a helper module to manage the invocation of different AI models with different parameters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invoke AI models:&lt;br&gt;
o Run the application to invoke AI models and process their responses.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;first step git clone&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;git clone https://github.com/EnriqueAguila/Amazon-Bedrock-on-EC2_Visual-Studio-LLM-Project.git&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
aws configure&lt;/p&gt;

&lt;p&gt;In the webserver folder you right click to create Newfolder&lt;br&gt;
You put websites&lt;br&gt;
In the terminal you put:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd bedrock-main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker network create donut-net&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install virtualenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python -m venv ./venv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;. venv/bin/activate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It appears in the root at the beginning of the line (venv)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/EnriqueAguila/Amazon-Bedrock-on-EC2_Visual-Studio-LLM-Project.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd Amazon-Bedrock-----&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd bedrock-main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install boto3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip install rich&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python app.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In the file line 20 you change the prompt again&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python app.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Starting bedrock.py comes out, the text sausage comes out and you apply this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python autorun.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Select a model comes out:&lt;br&gt;
you press 3 or 5&lt;br&gt;
it asks you:&lt;/p&gt;

&lt;p&gt;Why is sky blue?&lt;/p&gt;

&lt;p&gt;And it answers&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python manage.py migrate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod -R a+w ../donutwebsite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can check my repo to extract the code:&lt;br&gt;
&lt;a href="https://github.com/EnriqueAguila/Amazon-Bedrock-on-EC2_Visual-Studio-LLM-Project/tree/main" rel="noopener noreferrer"&gt;https://github.com/EnriqueAguila/Amazon-Bedrock-on-EC2_Visual-Studio-LLM-Project/tree/main&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The complete course on this exercise will be available soon on Udemy.&lt;br&gt;
Enrique Aguilar Martinez&lt;br&gt;
AI Engineer Azure.&lt;/p&gt;

</description>
      <category>bedrock</category>
      <category>genai</category>
      <category>ec2</category>
      <category>vscode</category>
    </item>
    <item>
      <title>AWS EKS Demo</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Thu, 20 Feb 2025 17:06:22 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/aws-eks-demo-2k0</link>
      <guid>https://dev.to/enriqueaguila/aws-eks-demo-2k0</guid>
      <description>&lt;p&gt;&lt;strong&gt;Deploying a Containerized Application on EKS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This time I will show you how to deploy a containerized application on eks.&lt;/p&gt;

&lt;p&gt;Adding AWS credentials to my local machine and also giving admin access to my user.&lt;/p&gt;

&lt;p&gt;Running Docker Desktop with Kubernetes configured on my instance.&lt;/p&gt;

&lt;p&gt;First I built a simple node.js server that is going to use the Express framework which when the contacts route is reached on port 3000 will return a hardcoded list of contacts.&lt;/p&gt;

&lt;p&gt;Also a Dockerfile is going to be created which has a base of the Alpine node. &lt;br&gt;
Copying the package.json file from the local source into the worker and then running npm install to pull the dependencies and then copying the rest of the source code into the worker indicates that it is exposing port 3000 and then running the server, going to the terminal, to build the image using the dockerfile, then starting an instance of the application to test it locally.&lt;/p&gt;

&lt;p&gt;In the terminal, the image will be pushed to Docker Hub with a tagged version of 1.0.&lt;/p&gt;

&lt;p&gt;In the template, the metadata name for the application server is set, an application server tag is given for the application, and the container specification has an application server name, since the image comes from the Docker Hub.&lt;/p&gt;

&lt;p&gt;A load balancer type service is added for deployment in eks and I also specified a port of 3000.&lt;/p&gt;

&lt;p&gt;Remember that all of this is done through the eks CTL CLI from weaveworks, which will allow us to interact with eks through a command line on our local machine.&lt;/p&gt;

&lt;p&gt;In this part, you will see how the stack is created and completed. Ok, with the creation of the full stack (cloudformation), the cube configuration will be updated by passing the name of the cluster that was created to a region and this will enable Cube CTL, and we will see how a stack was created for the demo workers on the node.&lt;/p&gt;

&lt;p&gt;"Comands CLI" Install your stay updates first:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
sudo apt update sudo apt upgrade -y&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Install the necessary packages: Install the necessary packages for Docker:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
sudo apt install -y ca-certificates curl gnupg lsb-release&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Update the package list: Update the package list to include the Docker repository: sudo apt update&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Install Docker: sudo apt update sudo apt install podman-docker&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
sudo systemctl start docker&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
sudo systemctl enable docker&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
docker --version&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Create a file called Dockerfile On your local machine, create a file called Dockerfile with the content you provided: FROM node:alpine WORKDIR /src COPY ./src/package.json . RUN npm install COPY ./src/ . EXPOSE 3000&lt;br&gt;
&lt;code&gt;&lt;br&gt;
CMD ["node", "server.js"]&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Create a package.json and server.js file Make sure you have a package.json and server.js file in a directory called src in the same location as the Dockerfile. Copy the files to the Ubuntu instance You can copy the files to the Ubuntu instance using SCP (Secure Copy) or SFTP:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
scp -r /ruta/local/src usuario@ip- instancia-ubuntu:/ruta/destino/ scp /ruta/local/Dockerfile usuario@ip-instancia-ubuntu:/ruta/destino/&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;br&gt;
Change to the directory where the files are located Change to the directory where the copied files are located:&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
cd /ruta/destino&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;Create the Docker image from the Dockerfile:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
docker build -t mi-aplicacion .&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Run the container:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
docker run -p 3000:3000 mi-aplicacion&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Configure eksctl&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
brew tap weaveworks/tap brew install weaveworks/tap/eksctl eksctl version&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Crete a Cluster eksctl create cluster&lt;br&gt;
--name demo-cluster&lt;br&gt;
--version 1.23&lt;br&gt;
--region us-east-1&lt;br&gt;
--nodegroup-name demo-workers&lt;br&gt;
--node-type t3.micro&lt;br&gt;
--nodes 3&lt;br&gt;
--nodes-min 1&lt;br&gt;
--nodes-max 4&lt;br&gt;
--managed&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
eksctl get cluster&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
Create a Deployment on the EKS Cluster: aws eks update-kubeconfig --name demo-cluster --region us-east-1&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
kubectl apply -f app-server-deployment.yaml kubectl get all kubectl get pods kubectl get nodes&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
eksctl delete cluster --name demo-cluster&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Test Deployment:&lt;br&gt;
&lt;code&gt;&lt;br&gt;
kubectl get all&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Copy LoadBalacner Endpoint&lt;br&gt;
&lt;code&gt;&lt;br&gt;
http://YOUR_LOAD_BALANCER_ENDPOINT:3000/contacts&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enrique Aguilar Martinez&lt;br&gt;
Cloud Engineer&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/enrique-aguilar-martinez-312b29208/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/enrique-aguilar-martinez-312b29208/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>containers</category>
      <category>aws</category>
      <category>ec2</category>
    </item>
    <item>
      <title>Deploy-Kubernetes-using-ConfigMaps-and-Helm</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Mon, 17 Feb 2025 01:51:15 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/deploy-kubernetes-using-configmaps-and-helm-2j4m</link>
      <guid>https://dev.to/enriqueaguila/deploy-kubernetes-using-configmaps-and-helm-2j4m</guid>
      <description>&lt;p&gt;Creating well-structured, declarative, and reusable deployments within Kubernetes is an essential skill that increases productivity, using a manifest file, which is used to declare cluster resources, along with Helm (v3), which can be used to template the manifests. helm&lt;/p&gt;

&lt;p&gt;First of all, I thank Cloud Academy for teaching these topics: &lt;a href="https://www.qa.com/" rel="noopener noreferrer"&gt;https://www.qa.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What we are going to implement:&lt;br&gt;
An application on a Kubernetes cluster using: &lt;br&gt;
a. ConfigMaps : To manage application settings (e.g. environment variables, configurations). &lt;br&gt;
b. Helm : As a package manager to declaratively define, install, and manage the application. &lt;/p&gt;

&lt;p&gt;Install Chart on Kubernetes : &lt;br&gt;
• Use Helm to install the application on the cluster. &lt;br&gt;
Verify and Manage : &lt;br&gt;
• Check the status of the application and its configuration. &lt;br&gt;
• Update or remove the deployment as needed. Benefits &lt;br&gt;
• Configuration management : &lt;br&gt;
ConfigMaps allows you to separate configuration from code. &lt;br&gt;
• Simplified installation and upgrade : &lt;br&gt;
Helm makes it easy to manage complex applications on Kubernetes. &lt;br&gt;
• Declarative : &lt;br&gt;
You define the desired state, and Kubernetes and Helm take care of getting there. &lt;br&gt;
For recording &lt;br&gt;
• ConfigMaps : &lt;br&gt;
For configuration. &lt;br&gt;
• Helm : &lt;br&gt;
To define and install applications on Kubernetes efficiently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;br&gt;
An NGINX web server container will be configured to redirect incoming HTTP requests downstream to another container running a custom FLASK-based web application. &lt;br&gt;
The NGINX web server container will use the publicly available nginx:1.13.7 image. The FLASK-based web application container will be based on a custom Docker image that you will need to build first.&lt;/p&gt;

&lt;p&gt;a-Connect to IDE port 8080 of web-based containers &lt;br&gt;
b-Perform image compilation and create namespace&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;br&gt;
In this step you will create a custom Docker image containing a ﬂaskapp file. Based on a web application, the custom Docker image will later be deployed to the Kubernetes cluster. &lt;br&gt;
Before you deploy within the cluster, you will be shown how to create a new namespace resource and how to set it as the default namespace in which the remaining deployment takes place. &lt;/p&gt;

&lt;p&gt;List the contents of the ﬂaskapp directory. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls -la
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;br&gt;
Perform a Docker build to create a custom Docker image. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker build -t cloudacademydevops/flaskapp .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check for the presence of the newly created Docker image. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a custom kikis namespace inside the Kubernetes cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create ns kikis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Switch to the new kikis namespace. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl config set-context --current --namespace=kikis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4 deploy Nginx ConﬁgMap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ConfigMaps allow you to decouple configuration artifacts from image content to maintain portability of containerized applications. &lt;/p&gt;

&lt;p&gt;Change to the k8s directory and list its contents. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ../k8s &amp;amp;&amp;amp; ls -la
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The updated nginx.configmap.yaml manifest file is already in this repo.&lt;/p&gt;

&lt;p&gt;Apply the updated nginx.configmap.yaml file to the K8s cluster: this will create a new ConﬁgMap resource. &lt;br&gt;
In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f nginx.configmap.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List all ConfigMap resources in the K8s cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get configmaps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At this step you have updated, saved, and applied the nginx.configmap.yaml manifest file to the K8s cluster.&lt;/p&gt;

&lt;p&gt;This created a new ConfigMap containing the NGINX configuration that will be mounted in the NGINX container.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 Apply Implementation&lt;/strong&gt;&lt;br&gt;
Deployments represent a set of multiple identical pods and have the ability to automatically replace instances that fail or become unresponsive.&lt;/p&gt;

&lt;p&gt;In this repo the deployment.yaml manifest file is already updated.&lt;/p&gt;

&lt;p&gt;Let's apply the updated deployment.yaml file to the K8s cluster, this will create a new Deployment file. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deployment.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's number all the deployments in the K8s cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List all the pods in the K8s cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Extract the name of the frontend pod and store it in a variable called POD_NAME. &lt;br&gt;
Echo it back to the terminal. In the terminal run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POD_NAME=`kubectl get pods -o jsonpath='{.items[0].metadata.name}'`echo$POD_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now use the kubectl describe command to get a detailed report on the current status of the frontend pod. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe pod $POD_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the docker images command to confirm the correct Docker image tag for the FLASK-based web application you created in step 1 of the lab. &lt;br&gt;
In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker images | grep cloudacademydevops
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List all deployment resources in the K8s cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expose the frontend deployment. This will create a new Service that will allow calling frontend pods through a stable cluster network VIP address. &lt;/p&gt;

&lt;p&gt;In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl expose deployment frontend --port=80 --target-port=80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List the new frontend service resource created above. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get svc frontend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Extract the IP address of the frontend service cluster and store it in a variable called FRONTEND_SERVICE_IP. Echo it back to the terminal. In the terminal run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FRONTEND_SERVICE_IP=`kubectl get service/frontend -o jsonpath='{.spec.clusterIP}'` echo$FRONTEND_SERVICE_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test the frontend service by sending a curl request to it. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$FRONTEND_SERVICE_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retest the frontend service by sending a new curl request to it. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$FRONTEND_SERVICE_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s now examine the logs associated with sending traffic through the NGINX web server. To start, list the current pods within the cluster. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Extract the name of the frontend pod and store it in a variable called FRONTEND_POD_NAME. Echo it back to the terminal. In the terminal run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FRONTEND_POD_NAME=`kubectl get pods --no-headers -o custom-columns=":metadata.name"` echo$FRONTEND_POD_NAME
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perform a directory listing directly inside the NGINX container by listing the contents of the /var/log/nginx directory. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl exec -it $FRONTEND_POD_NAME -c nginx -- ls -la /var/log/nginx/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the kubectl logs command to examine the NGINX log generated by the curl commands executed above. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl logs $FRONTEND_POD_NAME nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the kubectl logs command to examine the FLASK log generated by the curl commands executed above. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl logs $FRONTEND_POD_NAME flask
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 6 Create Helm Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To start, navigate up one directory to the directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the helm create command to generate a new Helm chart project named test-app. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm create test-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the tree command to render the directory structure on the screen. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tree test-app/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the helm template command to convert Helm templates into a single deployable Kubernetes manifest file. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template test-app/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this step, you learned how to use the Helm method&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7 Update the deployment to use Helm templates.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this scenario, the provided application Helm chart has been configured to create a deployment that launches a single pod containing two containers. The first container is an NGINX web server container that sends incoming HTTP requests to a second container running a FLASK-based web application (based on the Docker image you created earlier).&lt;/p&gt;

&lt;p&gt;Start by deleting all previous resources started within the cluster. &lt;br&gt;
Use the kubectl delete command to delete the previously created deployment, pod, and service resources. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete deploy,pods,svc --all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this repo the Helm values.yaml file and the deployment.yaml file are already modified.&lt;br&gt;
Use the helm template command to generate a deployable manifest file. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template ./app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this command you ONLY generated the deployable manifest, it has not been deployed to the cluster yet, this is useful to validate the resulting manifest BEFORE actually deploying it.&lt;/p&gt;

&lt;p&gt;This time you will perform the actual deployment to the cluster. To do this, you will again use the helm template command to generate a deployable manifest file, piping the output (manifest) directly to the kubectl apply command. &lt;br&gt;
In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template kikis ./app | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Examine the current services available within the cluster. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Extract the IP address of the cloudacademy-app service cluster and store it in a variable named KIKIS_APP_IP. Echo it back to the terminal. &lt;/p&gt;

&lt;p&gt;In the terminal run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KIKIS_APP_IP=`kubectl get service/kikis-app -o jsonpath='{.spec.clusterIP}'`
echo $KIKIS_APP_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test the kikis-app service by sending a curl request to it. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$KIKIS_APP_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp app/values.yaml app/values.dev.yaml 
cp app/values.yaml app/values.prod.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perform a dev redeployment to the cluster by referencing the values.dev.yaml Values ​​file within the helm template command, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template kikis -f ./app/values.dev.yaml ./app | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retest the cloudacademy-app service by sending another curl request to it. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$KIKIS_APP_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perform a prod redeployment back to the cluster by referencing the values.prod.yaml Values ​​file within the helm template command. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template kikis -f ./app/values.prod.yaml ./app | kubectl apply -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retest the cloudacademy-app service by sending it another curl request. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$KIKIS_APP_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the helm command to package the application into a graph. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm package app/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perform a directory listing to confirm that the graph was created successfully. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls -la
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before installing the new chart, revert (remove) all previously deployed resources in Helm. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm template kikis -f ./app/values.prod.yaml ./app | kubectl delete -f -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the new graphic. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install kikis-app app-0.1.0.tgz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List all current versions of Helm for the current namespace context. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm ls
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Show the deployment, pod, and service resources that were created due to the Helm chart installation. In the terminal, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get deploy,pods,svc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test the kikis-app service by sending a curl request to it. In the terminal run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -i http://$KIKIS_APP_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The deployment consisted of a single pod containing two containers. &lt;br&gt;
The first container was an NGINX web server container that redirected incoming HTTP requests to a second container running a FLASK-based web application, based on the Docker image you created in the first lab step. We used yaml as a values ​​file to externalize runtime variables, ensuring that your Helm templates are reusable across different environments, in this case dev and prod environments, via the values.dev.yaml and values.prod.yaml files respectively.&lt;br&gt;
Visit my repo to have access to the code:&lt;br&gt;
&lt;a href="https://github.com/EnriqueAguila/Deploy-Kubernetes-using-Con-gMaps-and-Helm/tree/main" rel="noopener noreferrer"&gt;https://github.com/EnriqueAguila/Deploy-Kubernetes-using-Con-gMaps-and-Helm/tree/main&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enrique Aguilar Martinez&lt;br&gt;
Cloud Engineer&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>helm</category>
      <category>devops</category>
      <category>configmaps</category>
    </item>
    <item>
      <title>Install-DeepSeek_Ollama-on-AWS-EC2</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Fri, 07 Feb 2025 02:40:50 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/install-deepseekollama-on-aws-ec2-223j</link>
      <guid>https://dev.to/enriqueaguila/install-deepseekollama-on-aws-ec2-223j</guid>
      <description>&lt;p&gt;&lt;strong&gt;Install the Ollama and DeepSeek models on a G4 type EC2 instance with Ubuntu&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Introduction&lt;br&gt;
This repository contains the code and instructions to create models the Ollama and DeepSeek models on a G4 type EC2 instance with Ubuntu.&lt;br&gt;
Installing DeepSeek on an AWS EC2 instance offers a number of significant benefits for accelerating language and machine learning models. With DeepSeek, you can Accelerate inference&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mqu27nkg2j5hsuvsop4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9mqu27nkg2j5hsuvsop4.png" alt="Image description" width="800" height="599"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;DeepSeek&lt;/strong&gt; leverages the GPU architecture of EC2 instances to accelerate language model inference, significantly reducing response times. You can also improve efficiency&lt;br&gt;
by using DeepSpeed ​​technology, DeepSeek optimizes instance resource usage, enabling higher performance with fewer resources. Scalability – EC2 instances offer a wide range of scalability options, allowing you to fine-tune resources based on the needs of your model. AWS integration – AWS integration allows for easy instance setup and management, as well as access to other AWS services for increased functionality. Reduce costs By leveraging the efficiency of DeepSeek and the scalability of EC2 instances, you can significantly reduce the costs of running your Installing DeepSeek on an AWS G4 EC2 instance can offer several benefits, especially if you are using artificial intelligence (AI) or machine learning (ML) models that require accelerated processing capabilities.&lt;br&gt;
DeepSeek_fish_(1)-transformed&lt;/p&gt;

&lt;p&gt;DeepSeek is a language model that combines machine learning techniques with logical reasoning to answer questions and perform reasoning tasks. Although DeepSeek is based on an LLM, it also incorporates logical reasoning components, making it a hybrid model that combines the strengths of both approaches. In short, although DeepSeek is based on an LLM, it also incorporates logical reasoning components, making it a model that combines the strengths of both approaches. However, it is not a pure Reasoning Model, as its main focus remains on natural language processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Billion parameters&lt;/strong&gt;&lt;br&gt;
To run this model our computer must have as requirements, an Nvidia 3090 GPU graphics card -64 GB of RAM -an Intel i9 processor 10850k 10 cores and 20 logical processors -and we must run it on UBUNTU 24.04 system&lt;/p&gt;

&lt;p&gt;First install Ollama ollama.com&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo ufw allow 11434/tcp&lt;br&gt;
sudo apt update &amp;amp;&amp;amp; sudo apt upgrade&lt;br&gt;
sudo apt install curl&lt;br&gt;
curl --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In Ollama you click on download and copy the installation url the one that says install with command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -fasthttp....&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Paste and enter&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;**In the ollama **search engine you search for deepseek-r1 there are several models there but you choose the smallest 1.5 million parameters. &lt;/p&gt;

&lt;p&gt;A parameter (also known as a weight or coefficient) is a numerical value used to adjust the output of a neuron or layer of the neural network.&lt;br&gt;
1.5 million parameters" probably refers to the total number of weights, biases, and other parameters that are adjusted during training of a particular neural network. To put this into perspective, 1.5 million parameters is a relatively large number, suggesting that the neural network is quite complex and may require a lot of training data and computational resources to train it properly.&lt;/p&gt;

&lt;p&gt;1.5, weighs one gigabyte&lt;br&gt;
you can put 32b when you select it, it gives you a run, you copy it and replace run with pull&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ollama pull deepseek-r1:32b&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;since it's 20 gigabytes it can take a few minutes&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pip list&lt;br&gt;
ollama list&lt;br&gt;
ollama run deepseek-r1:14b&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32abl2844kzctdfte2sn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F32abl2844kzctdfte2sn.png" alt="Image description" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm asked the question&lt;/strong&gt; &amp;gt;&amp;gt;&amp;gt; how many inhabitants does Brazil have?&lt;/p&gt;

&lt;p&gt;You can see the complete work in my contribution on YouTube:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=pcb4ofV_gNk" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=pcb4ofV_gNk&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ec2</category>
      <category>llm</category>
    </item>
    <item>
      <title>RAG on Azure OpenAI</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Wed, 05 Feb 2025 21:29:44 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/rag-on-azure-openai-4hnf</link>
      <guid>https://dev.to/enriqueaguila/rag-on-azure-openai-4hnf</guid>
      <description>&lt;p&gt;Implementación de RAG en Azure OpenAI&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Introducción&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Propósito del artículo: Explicar cómo construir un modelo RAG (Retrieval Augmented Generation) utilizando Azure OpenAI.&lt;/p&gt;

&lt;p&gt;Contexto: RAG combina recuperación de información con generación de texto para mejorar la precisión de respuestas en modelos de lenguaje.&lt;/p&gt;

&lt;p&gt;Importancia de Azure: Plataforma segura y escalable que integra servicios como Azure Cognitive Search y Azure OpenAI.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Objetivos&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Explicar el funcionamiento de RAG en Azure OpenAI.&lt;/p&gt;

&lt;p&gt;Demostrar la implementación práctica de una solución RAG.&lt;/p&gt;

&lt;p&gt;Discutir ventajas y casos de uso del enfoque RAG.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;¿Qué es RAG?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Definición: Técnica que combina dos componentes:&lt;/p&gt;

&lt;p&gt;Recuperador: Busca información relevante en bases de datos o documentos.&lt;/p&gt;

&lt;p&gt;Generador: Modelo de lenguaje (como GPT-4) que genera respuestas usando la información recuperada.&lt;/p&gt;

&lt;p&gt;Flujo de trabajo:&lt;/p&gt;

&lt;p&gt;Consulta del usuario.&lt;/p&gt;

&lt;p&gt;Recuperación de fragmentos relevantes.&lt;/p&gt;

&lt;p&gt;Generación de respuesta contextualizada.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Azure OpenAI y su Papel en RAG&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Componentes clave:&lt;/p&gt;

&lt;p&gt;Azure OpenAI: Proporciona modelos generativos (GPT-4, Codex, etc.).&lt;/p&gt;

&lt;p&gt;Azure Cognitive Search: Servicio para indexar y buscar en documentos.&lt;/p&gt;

&lt;p&gt;Ventajas de Azure:&lt;/p&gt;

&lt;p&gt;Escalabilidad para manejar grandes volúmenes de datos.&lt;/p&gt;

&lt;p&gt;Cumplimiento de normativas de seguridad.&lt;/p&gt;

&lt;p&gt;Integración sencilla entre servicios mediante SDKs y APIs.&lt;/p&gt;

&lt;p&gt;Nota regional: Crear recursos en la región Suecia Central (disponibilidad de servicios y menor saturación).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Implementación Práctica
5.1 Creación de Recursos en Azure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Grupo de recursos:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;az group create -n rg-openai-course2 -l swedencentral  &lt;br&gt;
Servicio de Azure Cognitive Search:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az search service create -n ai-search-swc-demo2 -g rg-openai-course2 --sku free  &lt;br&gt;
Clave de administrador:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az search admin-key show --service-name ai-search-swc-demo2 -g rg-openai-course2  &lt;br&gt;
5.2 Configuración de Azure AI Services&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creación del recurso:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az cognitiveservices account create -n ai-services-swc-demo2 -g rg-openai-course2 --kind AIServices --sku S0 --location swedencentral  &lt;br&gt;
Obtención de credenciales:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;URL del endpoint:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5w4hwnlgnu0t12pxufkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5w4hwnlgnu0t12pxufkl.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az cognitiveservices account show -n ai-services-swc-demo2 -g rg-openai-course2 --query properties.endpoint&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claves de API:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az cognitiveservices account keys list -n ai-services-swc-demo2 -g rg-openai-course2&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;5.3 Despliegue de Modelos&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modelo GPT-4o:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jwanz0twbs56ffy1coa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jwanz0twbs56ffy1coa.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;az cognitiveservices account deployment create -n ai-services-swc-demo2 -g rg-openai-course2 --deployment-name gpt-4o --model-name gpt-4o --model-version "2024-05-13" --model-format OpenAI --sku-capacity "148" --sku-name "Standard"  &lt;br&gt;
Modelo de embeddings (text-embedding-3-large):&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;az cognitiveservices account deployment create -n ai-services-swc-demo2 -g rg-openai-course2 --deployment-name text-embedding-3-large --model-name text-embedding-3-large --model-version "1" --model-format OpenAI --sku-capacity "227" --sku-name "Standard"  &lt;br&gt;
5.4 Creación de Hub y Proyecto en Azure AI Studio&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hub:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2n52p04lq9x6u6rqc7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg2n52p04lq9x6u6rqc7o.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az ml workspace create --kind hub -g rg-openai-course2 -n hub-demo  &lt;br&gt;
Proyecto:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Crear manualmente desde Azure AI Studio (no soportado vía CLI).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.5 Configuración de Conexiones&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Archivo connection.yml:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yaml&lt;br&gt;
Copy&lt;br&gt;
name: ai-service-connection  &lt;br&gt;
type: azure_ai_services  &lt;br&gt;
endpoint: https://swedencentral.api.cognitive.microsoft.com/  &lt;br&gt;
api_key: [API_KEY]  &lt;br&gt;
ai_services_resource_id: [RESOURCE_ID]  &lt;br&gt;
Implementación de la conexión:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
&lt;code&gt;az ml connection create --file connection.yml -g rg-openai-course2 --workspace-name hub-demo&lt;/code&gt;  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Confirmación de Recursos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Verificar en Azure Portal la creación de los 6 recursos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ocz0oqpr0mre387ebj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ocz0oqpr0mre387ebj1.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Grupo de recursos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Servicio de Azure Cognitive Search.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recurso de Azure AI Services.&lt;/p&gt;

&lt;p&gt;Modelos desplegados (GPT-4o y text-embedding-3-large).&lt;/p&gt;

&lt;p&gt;Hub y proyecto en Azure AI Studio.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Conclusión&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;RAG en Azure OpenAI permite construir soluciones avanzadas con acceso a información en tiempo real.&lt;/p&gt;

&lt;p&gt;La integración con servicios de Azure garantiza escalabilidad, seguridad y facilidad de uso.&lt;/p&gt;

&lt;p&gt;Pasos siguientes: Probar consultas y personalizar el índice de búsqueda según necesidades específicas.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s8tb3n9hgka0tq4tgre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8s8tb3n9hgka0tq4tgre.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;repo:&lt;br&gt;
&lt;a href="https://github.com/EnriqueAguila/RAG-en-Azure-Openai" rel="noopener noreferrer"&gt;https://github.com/EnriqueAguila/RAG-en-Azure-Openai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enrique Aguilar Martinez&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;AI Engineer&lt;/em&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>llm</category>
      <category>azure</category>
      <category>genai</category>
    </item>
    <item>
      <title>Steps to build a text generator application in workers ai by cloudflare</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Sat, 13 Apr 2024 21:13:10 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/steps-to-build-a-text-generator-application-in-workers-ai-by-cloudflare-b6o</link>
      <guid>https://dev.to/enriqueaguila/steps-to-build-a-text-generator-application-in-workers-ai-by-cloudflare-b6o</guid>
      <description>&lt;p&gt;The Cloudflare AI Challenge&lt;br&gt;
By Enrique Aguilar Martinez Cloud Engineer.&lt;br&gt;
Cloudflare is one of the largest networks on the Internet, Cloudflare 's interest in AI arises from its mission to "make the Internet faster, more secure and more reliable." The company sees AI as a powerful tool for every user.&lt;br&gt;
On this occasion I bring you a tutorial to implement a text generating application ( javascrip code) with Watson (IBM) models.&lt;br&gt;
First go to the Cloudflare page&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1wjmva9tkm5ch0apn1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1wjmva9tkm5ch0apn1b.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
In this page&lt;br&gt;
Sign in to your Cloudflare account at &lt;a href="https://dash.cloudflare.com/" rel="noopener noreferrer"&gt;https://dash.cloudflare.com/&lt;/a&gt;.&lt;br&gt;
Click Workers in the left sidebar.&lt;br&gt;
Click on works and pages .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flagvrpugeds1pc9oa4ve.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flagvrpugeds1pc9oa4ve.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
In name put the name of the project&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4nofp2jq78mva6n0u83.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4nofp2jq78mva6n0u83.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
In this part, your project is now online in Cloudflare and can be deployed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfff4i19c6q51r1ok52w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfff4i19c6q51r1ok52w.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Here you can edit your code with which you are going to deploy the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxyug1ni1ax5o7jrpa29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxyug1ni1ax5o7jrpa29.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
You delete it and apply the code that may be in javascrip .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcywrthq60glthu9stopj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcywrthq60glthu9stopj.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
In this case the text generator.&lt;br&gt;
You give it deploy, you save the changes and it generates 200&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5guggenda44uqaf2mfw7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5guggenda44uqaf2mfw7.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Remember that Cloudflare Workers supports two main syntaxes for writing worker scripts:&lt;br&gt;
• Service Worker Syntax: This is the older syntax and addEventListener is used to register event handlers.&lt;br&gt;
• Module Syntax: This is the newer syntax and export default is used to define the function of the controller.&lt;br&gt;
If you are using module syntax, you must configure Cloudflare Wrangler (the deployment tool) to recognize it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf3w2cflka1x557y7n8e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf3w2cflka1x557y7n8e.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
This on the Cloudflare console side , to upload it remotely just open cmd on your local machine and first of all see what you want to implement.&lt;/p&gt;

&lt;p&gt;Define the use case:&lt;br&gt;
What type of text do you want to generate? (e.g. product descriptions, blog articles, scripts) How long should the text be? What writing style do you want to use? (e.g. formal, informal, creative)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yt3civqhkjq41qu05dd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6yt3civqhkjq41qu05dd.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Install in cmd : npm install -g npm&lt;br&gt;
npm command install -g npm , is used to install NPM globally on the system. NPM ( Node Package Manager) is an essential tool for developing JavaScript applications, as it allows us to easily install, manage and update libraries and code modules.&lt;br&gt;
Remember that:&lt;br&gt;
• npm : It is the command to run the NPM tool.&lt;br&gt;
• install : Indicates that you want to install something.&lt;br&gt;
• -g: Means "global". This flag tells NPM to install the specified package globally, making it accessible from anywhere on the system.&lt;br&gt;
• npm : It is the name of the package you want to install, in this case, NPM itself.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhmgxcjlg2xzoarjpfrm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhmgxcjlg2xzoarjpfrm.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
This is installed globally&lt;br&gt;
Installing NPM globally means that you will have it available in any directory on your computer, no matter what project you are working on. This allows you to run NPM commands from anywhere, without having to navigate to a specific directory.&lt;br&gt;
Install -Module -Name cloudflare&lt;br&gt;
Install -Module - Name command Cloudflare is used to install the Cloudflare Module for PowerShell on the system. This module allows us to manage your Cloudflare DNS zones directly from the PowerShell command line (CMD)&lt;br&gt;
Command explanation:&lt;br&gt;
• Install -Module: It is the PowerShell command to install modules.&lt;br&gt;
• - Name : Indicates the name of the module that you want to install.&lt;br&gt;
• Cloudflare : This is the name of the module you want to install, in this case, the Cloudflare module for PowerShell.&lt;br&gt;
What does the Cloudflare module for PowerShell do?&lt;br&gt;
Cloudflare Module for PowerShell allows you to perform a variety of tasks related to your Cloudflare DNS zones , such as:&lt;br&gt;
• Create, update and delete DNS records&lt;br&gt;
• Configure advanced DNS records, such as CNAME records and MX records&lt;br&gt;
• Set firewall rules for your DNS zone&lt;br&gt;
• View the change history of your DNS zone&lt;br&gt;
• Manage your DNS zones automatically using PowerShell scripts&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyni5baejm58i8melnman.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyni5baejm58i8melnman.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Install -Module -Name cloudflare&lt;br&gt;
Install -Module - Name command Cloudflare is used to install the Cloudflare Module for PowerShell on the system. This module allows us to manage Cloudflare DNS zones directly from the PowerShell command line.&lt;br&gt;
Command explanation:&lt;br&gt;
• Install -Module: It is the PowerShell command to install modules.&lt;br&gt;
• - Name : Indicates the name of the module that you want to install.&lt;br&gt;
• Cloudflare : This is the name of the module you want to install, in this case, the Cloudflare module for PowerShell.&lt;br&gt;
In the wishes part you enter enter until you reach the display part.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapni7564cf8ip7lcyirz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapni7564cf8ip7lcyirz.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
npx wrangler dev –remote&lt;br&gt;
Here you are asked to log in to bypass the Shell.&lt;br&gt;
npx command wrangler dev --remote is used to start a local development environment for a Wrangler application on the system.&lt;br&gt;
Command explanation:&lt;br&gt;
• npx : It is a Node.js package that allows us to execute JavaScript commands without having to install them globally.&lt;br&gt;
• wrangler : It is the command line (CLI) tool for Wrangler, a platform for developing and deploying serverless web applications.&lt;br&gt;
• dev : Indicates that you want to start a local development environment.&lt;br&gt;
• --remote: This flag tells Wrangler to use a remote server to run the application. This means the app will run on a Wrangler server in the cloud, rather than on the local computer.&lt;br&gt;
What do you do when starting a remote local development environment?&lt;br&gt;
When starting a remote local development environment with npx wrangler dev --remote, Wrangler creates a remote server in the cloud and runs the application on that server. This allows us:&lt;br&gt;
• Develop the application in the local environment , using the code editor in this case Visual Studio and the development tools that are required.&lt;br&gt;
• See changes to your application in real time , without having to deploy your application to a production environment.&lt;br&gt;
• Test the application on different browsers and devices , using the browser's debugging tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyrzcnwqrxuyx76hws9r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyrzcnwqrxuyx76hws9r.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Within Visual Studio you can see all the packages that it installs in the module command, you can see that there is already a js template and a tombl with which it is for the configuration and the creation of environment variables.&lt;br&gt;
In this part you can select option b, which is where the js script is already linked , to view the application within the clouflare console no longer as localhost.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhw75uprl19mitdvvuas.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhw75uprl19mitdvvuas.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jcecsg0vgy7qfvxw9g9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jcecsg0vgy7qfvxw9g9.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
npx wrangler deploy&lt;br&gt;
npx command wrangler deploy is used to publish the Cloudflare application Worker on the Cloudflare global network . In other words, this command allows us to make the application available on the internet.&lt;br&gt;
Command explanation:&lt;br&gt;
• npx : It is a Node.js package that allows you to execute JavaScript commands without having to install them globally.&lt;br&gt;
• wrangler : It is the command line (CLI) tool for Wrangler, a platform for developing and deploying serverless web applications.&lt;br&gt;
• deploy : Indicates that you want to deploy your application to the Cloudflare network .&lt;br&gt;
What happens when you run npx wrangler deploy ?&lt;br&gt;
When you run this command, Wrangler does the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Worker code : Wrangler looks for your Worker 's main file , which by convention is usually called wrangler.js or index.js.&lt;/li&gt;
&lt;li&gt; Package your code: Wrangler packages Worker code along with any necessary dependencies.&lt;/li&gt;
&lt;li&gt; Upload your code to Cloudflare : Wrangler uploads packaged code to the Cloudflare global network .&lt;/li&gt;
&lt;li&gt; Configure your Worker : Wrangler configures the Worker on the Cloudflare network , assigning it a unique URL.&lt;/li&gt;
&lt;li&gt; Provides you with the URL of your Worker : Once the deployment has completed successfully, Wrangler will show you the URL of your deployed Worker .&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here you implement the code:&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;`//Import libraries&lt;br&gt;
const { TextToSpeech } = require(' watson -developer-cloud');&lt;br&gt;
const { CloudFunctions } = require(' cloudflare -workers');&lt;/p&gt;

&lt;p&gt;// Access credentials from environment variables&lt;br&gt;
const username = process.env.WATSON _USERNAME ;&lt;br&gt;
const password = process.env.WATSON _PASSWORD ;&lt;br&gt;
const url = '&lt;a href="https://stream.watsonplatform.net/text-to-speech/api" rel="noopener noreferrer"&gt;https://stream.watsonplatform.net/text-to-speech/api&lt;/a&gt; ' ;&lt;/p&gt;

&lt;p&gt;// Initialize Watson TextToSpeech client&lt;br&gt;
const tts = new TextToSpeech ( {&lt;br&gt;
username,&lt;br&gt;
password,&lt;br&gt;
  url ,&lt;br&gt;
});&lt;/p&gt;

&lt;p&gt;// CloudFunctions instance&lt;br&gt;
const cf = new CloudFunctions ( );&lt;/p&gt;

&lt;p&gt;// Function to generate audio from text&lt;br&gt;
async function generateText ( prompt, model, temperature, maxTokens ) {&lt;br&gt;
try {&lt;br&gt;
const response = await tts.synthesize ({&lt;br&gt;
text:prompt,&lt;br&gt;
voice: model,&lt;br&gt;
temperature,&lt;br&gt;
      max_tokens ,&lt;br&gt;
});&lt;br&gt;
return response.audio ;&lt;br&gt;
  } catch (error) {&lt;br&gt;
    console.error ('Error generating text :', error);&lt;br&gt;
    // Handle the error appropriately (eg, return an error response)&lt;br&gt;
return new Response( 'Error generating text', { status: 500 });&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// Function to handle HTTP requests&lt;br&gt;
async function handleRequest (request) {&lt;br&gt;
const { prompt , model, temperature, maxTokens } = await request.json ();&lt;/p&gt;

&lt;p&gt;const audio = await generateText ( prompt, model, temperature, maxTokens );&lt;/p&gt;

&lt;p&gt;return new Response( audio, {&lt;br&gt;
headers: {&lt;br&gt;
'Content-Type': 'audio/wav',&lt;br&gt;
},&lt;br&gt;
});&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;// Register the HTTP request handler&lt;br&gt;
cf.registerRoute ('POST', '/', handleRequest );&lt;/p&gt;

&lt;p&gt;// Export the CloudFunctions instance&lt;br&gt;
module.exports = cf ;&lt;br&gt;
`&lt;br&gt;
**_&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntewdrya2ch8px8tu1r1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntewdrya2ch8px8tu1r1.png" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you very much for viewing this article, at other times share more about CLOUDFLARE._**&lt;/p&gt;

&lt;p&gt;Link GitHub repo:&lt;br&gt;
&lt;a href="https://github.com/EnriqueAguila/CloudflareAI.git" rel="noopener noreferrer"&gt;https://github.com/EnriqueAguila/CloudflareAI.git&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cloudflarechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
    </item>
    <item>
      <title>Education project for young people without professional future prospects in Mexico. (And Latin America)</title>
      <dc:creator>Enrique Aguilar Martinez</dc:creator>
      <pubDate>Fri, 01 Dec 2023 19:32:55 +0000</pubDate>
      <link>https://dev.to/enriqueaguila/education-project-for-young-people-without-professional-future-prospects-in-mexico-and-latin-america-2fi1</link>
      <guid>https://dev.to/enriqueaguila/education-project-for-young-people-without-professional-future-prospects-in-mexico-and-latin-america-2fi1</guid>
      <description>&lt;p&gt;Dear Community.aws, I share with you a fragment of an education project that I am developing to form an educational platform, I have been developing it for approximately 15 months.&lt;br&gt;
I hope it is useful for those who are looking for innovative tools removed from AI and ML.&lt;br&gt;
Problem:&lt;br&gt;
In Mexico there are more than 62 million young people between 13 and 29 years old, of which 48 do not have resources and of those 48 million, 20 are in extreme poverty, mainly in the states of Guerrero, Chiapas, Veracruz, Oaxaca and Puebla. It is observed that despite this precariousness, those 48 million 43 are connected in some way to social networks. Therefore, this project is focused on the area of opportunity that this situation generates for these young people, focusing on generating a better quality of life and creating better expectations for the future. Importance of the use of Artificial Intelligence applied in educational development at a higher level. In this area, AWS supports educational projects for young people in several ways, and one of these is providing access to the technology and infrastructure they need to learn and create. AWS offers a wide range of services that can be used by educators and students, including computing, storage, databases, analytics, and machine learning services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.mx/Morir-miseria-municipios-pobres-M%C3%A9xico/dp/6074000662" rel="noopener noreferrer"&gt;https://www.amazon.com.mx/Morir-miseria-municipios-pobres-M%C3%A9xico/dp/6074000662&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project for education through the artificial intelligence approach and services (In General) of AWS in Mexico.&lt;br&gt;
Today technologies have changed drastically, the Internet of Things (Lot) has taken a huge leap by being directly linked to artificial intelligence. The dream of making a fully converged network is here, it is no longer a thing of the future, it has passed us by. Until a few years ago, only some technology companies were a reference among the most powerful, only AWS, Microsoft and Apple were the references, but starting in 2016 the growth of technology companies began, which today (2023) occupy 8 of the 10 The richest are technological, so of these 8 all use data as the main source of business and these 8 use artificial intelligence as a service to their clients.&lt;br&gt;
Of these 8 companies, there is one exception, which is Google (Alphabet), which in less than 6 years grew like foam and to date the United States Antitrust Committee wants to dissolve it, and on the opposite side we have a technology company that does not It is and should be among this, but not because of a mistake, Cisco. Cisco Systems is in the 48th place of the richest, but it is not among the ten, why? Easy and simple, he entered the cloud business late, even though he owns the technology and the development of his cloud on Oracle cloud was very slow.&lt;br&gt;
But the cloud leads the technological crusade, not only is it that factor, the main one is nanotechnology (microprocessors) from which this great advance is provided with which these companies deploy this economic power.&lt;br&gt;
&lt;a href="https://www.ig.com/es/estrategias-de-trading/ranking-de-las-mayores-empresas-del-mundo-en-2023-230803" rel="noopener noreferrer"&gt;https://www.ig.com/es/estrategias-de-trading/ranking-de-las-mayores-empresas-del-mundo-en-2023-230803&lt;/a&gt;&lt;br&gt;
&lt;a href="https://economipedia.com/ranking/empresas-mas-grandes-del-mundo-2023.html" rel="noopener noreferrer"&gt;https://economipedia.com/ranking/empresas-mas-grandes-del-mundo-2023.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Data as Wealth.&lt;br&gt;
  If we take the example of Google, which had less experience than Cisco, how did they succeed? Well, in 2012 they glimpsed the power of data linked to artificial intelligence (Tensor Flow), which allowed them to compete with the giants Amazon and Microsoft, without leaving aside the giant IBM. Why do I mention this, about technology and what it has to do with education. 5 years ago there was a Starlink plan to take satellites into space in a low orbit to bring broadband internet to the entire planet (space internet) with this it can dominate communications and therefore data. They recently launched 60 satellites as a test, these satellites were manufactured in France, and were manufactured with a technique that allows them to be manufactured in a short time (a satellite takes up to two years to design and assemble) but there is a small problem, it is expensive to transport them to the French Guyana in America or Florida United States.&lt;br&gt;
Therefore, a plan was made with a subsidiary company of Airbus (Deimos), this Spanish company made a proposal to make them in Mexico, specifically in Yucatán, with an investment offer of 130 million dollars, and which will employ 200 aerospace engineers. This was in September 2019, which is why UNAM created aerospace engineering in February 2020.&lt;br&gt;
  That is the reason why artificial intelligence linked to data in higher education is mentioned. Why? Artificial Intelligence-Data, why? If UNAM is going to generate this opportunity for these students to insert them into the work life of this company that is going to take advantage of the proximity of Mexico to Florida and thus lower the cost price of satellites and their manufacturing and launch, then UNADM has a unique opportunity to insert your telematics engineers not in the aerospace industry, no, not in the area of network communications (Cisco), no, it is in the most powerful sector, that of the richest industries in the world, those of the cloud.&lt;br&gt;
Let's look at the example of China.&lt;br&gt;
  They build a university a week, with specialties focused on artificial intelligence, their need to be a leader in this field is because they glimpsed the importance of data linked to artificial intelligence. In less than 5 years they managed to put 2 technology companies among the 10 richest in the world (Alibaba and Tencent), surprising truth, more surprising is that it is not Japan, nor Germany, nor England, it is China.&lt;br&gt;
  Through their artificial intelligence development plan they have advanced in this area, they have access to one of the best institutes in Asia "The Hong Kong University of Science and Technology" there the most complex mathematics (Discrete mathematics) is developed with which they They allow us to compete with those of the West. Thus there are three Universities that are fundamental for the development of technologies, 2 of these are directly linked to the development of conglomerate companies such as KAIS in South Korea (which is where the microprocessor for Apple was developed) KAIS is the best mathematics school in Asia, not counting Yonsei University, which is why it is the only country that rivals China in the field of 5G.&lt;br&gt;
But returning to South Korea, it is the same example of UNAM with the satellite company, the same.&lt;br&gt;
China, on the other hand, does not intend to supply foreign companies with microchips and specialized labor, they do not intend to be the company, that is why there is an urgency to take over Taiwan because there is the third best university in Asia, that is where they would have access to technology. of microprocessors and semiconductors because those from Taiwan are the best manufactured in the world (Taiwan Semiconductor Manufacturing Company Limited TSMC) this company is located in Silicon Valley, and its alma mater is the National Taiwan University of Science and Technology.&lt;br&gt;
  China changed its visas through competitive change to be able to bring in people specialized in artificial intelligence, because all this is mentioned about China; The fact is that in its nuances only they are capable of competing with the United States in that area, all mobile devices are called Smartphones, tablets, laptops, all these devices are data carriers and most use Android, yes Android, that's why the sanctions on Huawei since it used North American technology.&lt;/p&gt;

&lt;p&gt;It wasn't the manufacturing of the brand, it was access to data, and not military, science, technological data, it was people's data, that's where it hits. Every human being who carries a device is rich in data, every mobile device, for the most part, I repeat, mostly has Android, which is why Alphabet, being the owner of Android and Google, is a danger for the State Department, since it was seen that the importance today is data. That is why the urgency of bringing the internet to space, of putting in place the 5G superhighway, everything is because of the data, the data manipulated by artificial intelligence, whether it is called Siri, Alexa, or Watson, is the present, which our country is lagging behind.&lt;br&gt;
What is mentioned above is the preamble to understand the importance of the artificial intelligence career in universities, as well as Data Science that most only take as graduates, or data engineering. Universities have rested on their laurels and have not been able to glimpse the true importance of these careers at an engineering level that practically integrates the cloud, since this is the only one with the capacity to deploy its true power with these careers.&lt;br&gt;
  A career that can practically help encompass part of this cloud environment is telematics. It was said before that it was the career of the future, it was said that there was no scope for development and that it was difficult to find a job related to the career. Today it is the best career in our country, because this is mentioned, so to speak, some subjects are fundamental in the field of data, differential calculus and integral calculus, the queen of logical mathematics is discrete mathematics, that is more than fundamental in data analysis, physics, which takes the transforms which are fundamental in neural networks as well as in communication in digital systems, without forgetting statistics where you see probabilities, not without forgetting that each of The subjects are important, just mention a few to say the area in which artificial intelligence is developed.&lt;br&gt;
The case of China is mentioned so to speak to see the example of what is happening today, one imagines that Carlos Slim had realized what was coming, today he would still be the richest man in the world, he had the technological advantages, He manages the internet platform in our country, but what happened to Cisco happened to him, they were surpassed, today, being the richest man for years, he is in 16th place, he is still rich but he could be in the first places if I would have glimpsed the data.&lt;br&gt;
Asia is the continent that graduates the most engineers in the world, South Korea, Taiwan and Japan until recently were the ones that had the most engineering graduates, around 80 thousand per year against the 60 thousand that the United States graduated, today they have been surpassed For China, China currently graduates the most engineers. There are two cases that have to be mentioned, China and India, while in China the government invests millions of dollars in mainly technological education projects, in India it does not, in India those who invest in their education are the citizens, the government cannot have the luxury of investing in education like China because it has a surplus of poverty, personally I am impressed by the achievements of the citizens of India, not their government, they have a philosophy of improvement at any cost.&lt;br&gt;
Whatever it may be, when they achieved their first nuclear bomb they did it thinking about this "even if we eat leaves we will get the bomb" and that's how they ate leaves, poverty levels in India are high, that does not prevent the majority of their students from being self-taught, and focus on technologies, mainly on artificial intelligence, they make efforts to complete engineering, technology specialization courses and the results are surprising, the best CEOs of Google are from India, from Amazon, they are from India , most of the analytics teachers in Hong Kong, the United States, England, are from India, soon in Mexico due to the lack of graduated engineers we will have specialized engineers from India.&lt;br&gt;
  But that can change, the idea is there, perhaps my project will be called crazy, but the idea is there and at any moment out of necessity the country will have to take it. And we can give examples of several countries like Brazil with its learn thorn, Costa Rica with its Cisco scholarships, countless examples, but the best example is this: Alexander Graham Bell, this man invented the telephone, one day he went to talk to The president of the United States Grover Cleveland, to whom he proposed the idea of connecting the entire United States through telephone lines, told him “I'll do everything, only that there is a small inconvenience” from today onwards all women in the United States They will have to work... as telephone operators (first empowerment of women, as a key to job success).&lt;br&gt;
  That was a revolution, a true revolution, and that's how the majority of women worked as telephone operators. Until 1950, telephone switchboards were famous... today the telephone operators are data analysts, that is the new revolution. We can say that the idea is to provide technological education in response to the high demand of companies in terms of data engineering, this is how companies like Facebook (Meta), Microsoft, AWS in recent years have requested people with skills, based on intelligence. artificial for applications that generate data and their processing&lt;br&gt;
How to implement the plan?&lt;br&gt;
  AWS offers programs and resources that can help educators and students learn how to use technology for learning. These programs include:&lt;br&gt;
AWS Educate – A free program that gives students access to AWS services and educational resources.&lt;br&gt;
AWS Academy: A program that offers universities courses and resources to teach students about the cloud. AWS is committed to helping young people learn and create with technology. Through its services, programs and partnerships, AWS is helping prepare the next generation for success in the digital economy, based on high-quality, competitive, and affordable distance education, as sponsors can even incorporate scholarships for low-income students. Infrastructure of the proposed platform for teaching.&lt;br&gt;
AWS Skill Builder is a free online learning program that offers courses, labs, challenges, and other resources to help people learn about AWS services. The program is designed for people of all experience levels, from beginners to seasoned professionals.&lt;br&gt;
These resources applied to young people include:&lt;br&gt;
• Courses: AWS Skill Builder courses provide an introduction to AWS basics and specific services.&lt;br&gt;
• Labs: AWS Skill Builder labs allow people to practice what they have learned in courses.&lt;br&gt;
• Challenges: AWS Skill Builder challenges allow people to test their skills.&lt;br&gt;
• Other Resources: AWS Skill Builder also offers a variety of other resources, such as articles, videos, and podcasts.&lt;br&gt;
AWS Skill Builder is a very valuable tool for anyone who wants to learn about AWS. The program is free and available to everyone.&lt;br&gt;
In short, AWS can provide educational support to these young people so that they find a professional and life path.&lt;/p&gt;

&lt;p&gt;Author: Engineer Enrique Aguilar Martínez. AWS Community Builders, AWS ReStart Instructor, Bootcamp institute.&lt;/p&gt;

&lt;p&gt;Links from which the information about this project is supported:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rtve.es/television/20230307/telefono-historia-patente-bell-meucci-aniversario-invento/2430287.shtml#:%7E:text=Ahora%20es%20casi%20impensable%2C%20sin,mediante%20la%20electricidad%3A%20el%20tel%C3%A9fono" rel="noopener noreferrer"&gt;https://www.rtve.es/television/20230307/telefono-historia-patente-bell-meucci-aniversario-invento/2430287.shtml#:~:text=Ahora%20es%20casi%20impensable%2C%20sin,mediante%20la%20electricidad%3A%20el%20tel%C3%A9fono&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ts2.space/es/lanzamiento-de-starlink-en-francia-una-nueva-era-de-conectividad-a-internet-en-europa-occidental/" rel="noopener noreferrer"&gt;https://ts2.space/es/lanzamiento-de-starlink-en-francia-una-nueva-era-de-conectividad-a-internet-en-europa-occidental/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.infotechnology.com/actualidad/ingenieros-de-datos-la-carrera-que-mas-buscan-mercadolibre-globant-e-ypf-asi-se-aprende-gratis/" rel="noopener noreferrer"&gt;https://www.infotechnology.com/actualidad/ingenieros-de-datos-la-carrera-que-mas-buscan-mercadolibre-globant-e-ypf-asi-se-aprende-gratis/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kom.com.mx/paises-con-mas-ingenieros-en-el-mundo/" rel="noopener noreferrer"&gt;https://kom.com.mx/paises-con-mas-ingenieros-en-el-mundo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.altonivel.com.mx/ultimas-noticias/quieres-trabajar-en-meta-la-compania-de-zuckerberg-tiene-3700-vacantes/" rel="noopener noreferrer"&gt;https://www.altonivel.com.mx/ultimas-noticias/quieres-trabajar-en-meta-la-compania-de-zuckerberg-tiene-3700-vacantes/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.facialix.com/microsoft-esta-ofreciendo-una-beca-del-100-y-certificacion-gratuita-internacional-en-azure-a-estudiantes-de-ingenieria/" rel="noopener noreferrer"&gt;https://blog.facialix.com/microsoft-esta-ofreciendo-una-beca-del-100-y-certificacion-gratuita-internacional-en-azure-a-estudiantes-de-ingenieria/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.facebookcareers.com/jobs/?is_leadership=0&amp;amp;page=3&amp;amp;is_in_page=0" rel="noopener noreferrer"&gt;https://www.facebookcareers.com/jobs/?is_leadership=0&amp;amp;page=3&amp;amp;is_in_page=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://careers.google.com/jobs/results/137018720019980998-technicalsolutions-consultant-gtech-publishers-english-spanish/" rel="noopener noreferrer"&gt;https://careers.google.com/jobs/results/137018720019980998-technicalsolutions-consultant-gtech-publishers-english-spanish/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://careers.google.com/jobs/results/137084090663740102-cloudinfrastructure-engineer-professional-services/" rel="noopener noreferrer"&gt;https://careers.google.com/jobs/results/137084090663740102-cloudinfrastructure-engineer-professional-services/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.facialix.com/google-esta-ofreciendo-puestos-de-empleo/amp" rel="noopener noreferrer"&gt;https://blog.facialix.com/google-esta-ofreciendo-puestos-de-empleo/amp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.eluniversal.com.mx/opinion/enrique-berruga-filloy/la-conexion-norteamericana" rel="noopener noreferrer"&gt;https://www.eluniversal.com.mx/opinion/enrique-berruga-filloy/la-conexion-norteamericana&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://fundacioncarlosslim.org/en-cifras/" rel="noopener noreferrer"&gt;https://fundacioncarlosslim.org/en-cifras/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://elpais.com/elpais/2017/11/29/escaparate/1511977321_527861.html" rel="noopener noreferrer"&gt;https://elpais.com/elpais/2017/11/29/escaparate/1511977321_527861.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.universidad.edu.co/nuestro-curso-mas-pequeno-tiene-3-000-estudiantes-platzi/" rel="noopener noreferrer"&gt;https://www.universidad.edu.co/nuestro-curso-mas-pequeno-tiene-3-000-estudiantes-platzi/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://elpais.com/elpais/2017/02/22/eps/1487718320_148771.html" rel="noopener noreferrer"&gt;https://elpais.com/elpais/2017/02/22/eps/1487718320_148771.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.coursera.org/coursera-doubles-down-on-latin-america-with-new-university-partners-in-mexico-colombia-and-argentina/" rel="noopener noreferrer"&gt;https://blog.coursera.org/coursera-doubles-down-on-latin-america-with-new-university-partners-in-mexico-colombia-and-argentina/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.business-standard.com/article/current-affairs/with-9-8-mn-online-learners-india-ranks-second-in-global-list-coursera-120092400881_1.html" rel="noopener noreferrer"&gt;https://www.business-standard.com/article/current-affairs/with-9-8-mn-online-learners-india-ranks-second-in-global-list-coursera-120092400881_1.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.thehindubusinessline.com/info-tech/india-becomes-second-largest-market-for-coursera-with-49-growth-in-12-months/article36356424.ece" rel="noopener noreferrer"&gt;https://www.thehindubusinessline.com/info-tech/india-becomes-second-largest-market-for-coursera-with-49-growth-in-12-months/article36356424.ece&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.forbes.com.mx/negocios-coursera-valor-7000-mdd-bolsa/" rel="noopener noreferrer"&gt;https://www.forbes.com.mx/negocios-coursera-valor-7000-mdd-bolsa/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
