1 00:00:00,620 --> 00:00:10,480 ‫De acuerdo, ahora que hemos aprendido todo sobre el escalado de enjambre con redes superpuestas y malla de enrutamiento, quiero que 2 00:00:11,350 --> 00:00:18,910 ‫realices el proceso de creación de los activos, o los objetos, que necesitas desplegar en un 3 00:00:18,910 --> 00:00:20,620 ‫escenario de Swarm. 4 00:00:20,620 --> 00:00:26,110 ‫Así que ya no estamos usando el comando de ejecución de la ventana acoplable, pero la red 5 00:00:26,110 --> 00:00:28,640 ‫y los volúmenes son similares, pero ligeramente diferentes. 6 00:00:28,660 --> 00:00:36,030 ‫Quiero darte un escenario del mundo real de una aplicación de varios niveles, y vamos a usar la aplicación de votación distribuida 7 00:00:36,030 --> 00:00:36,820 ‫de Docker. 8 00:00:36,840 --> 00:00:38,830 ‫En realidad se llama la aplicación de votación de ejemplo. 9 00:00:38,910 --> 00:00:43,980 ‫Puede haberlo visto en las notas magistrales de Docker, o en otros laboratorios o tutoriales. 10 00:00:43,980 --> 00:00:49,860 ‫Es una aplicación bastante común, y creo que excelente, porque tiene al menos cinco roles o 11 00:00:49,860 --> 00:00:51,540 ‫contenedores diferentes que debe implementar. 12 00:00:51,720 --> 00:00:56,760 ‫Y todos cumplen una función especial y en realidad están haciendo cosas que realmente funcionan, en realidad hacen lo que se 13 00:00:56,760 --> 00:00:57,740 ‫supone que deben hacer. 14 00:00:57,750 --> 00:01:03,000 ‫Y así puede jugar con él y tiene componentes de arquitectura distribuidos muy típicos, como la interfaz web 15 00:01:03,010 --> 00:01:04,870 ‫y el backend del trabajador, y 16 00:01:04,870 --> 00:01:12,190 ‫el valor clave en una base de datos. Creo que es realmente útil hacerlo. a utilizar el directorio swarm-app-1. 17 00:01:12,370 --> 00:01:18,960 ‫En este caso, vas De hecho, está en nuestro repositorio del curso. En él no hay nada 18 00:01:18,960 --> 00:01:26,590 ‫más que un archivo Léame y una imagen. A partir de ese archivo Léame, vas a necesitar crear el volumen y un par 19 00:01:26,590 --> 00:01:30,280 ‫de redes y cinco servicios que se necesitan para que esta aplicación funcione completamente. 20 00:01:30,370 --> 00:01:36,580 ‫Puede ayudarlo a probar algunos de estos comandos localmente, o realmente escribirlos en su editor de texto y componerlos, porque van 21 00:01:36,790 --> 00:01:40,290 ‫a ser un poco complejos, ¿verdad? Cuando hagas ese servicio de 22 00:01:40,300 --> 00:01:45,650 ‫Docker Create, tendrás que conectarlo a una red específica, abrir los puertos y llamarlo con 23 00:01:45,650 --> 00:01:51,490 ‫un nombre específico, y usar una imagen específica. Por lo tanto, podría ser más fácil editarlo localmente y luego simplemente 24 00:01:51,490 --> 00:01:54,400 ‫cortar y pegar en tu caparazón, donde sea que esté tu Swarm. 25 00:01:54,520 --> 00:01:56,240 ‫Pero solo soy yo. 26 00:01:56,260 --> 00:02:01,390 ‫Todo va a utilizar imágenes de Docker Hub porque en el Swarm de producción no quiere estar compilando. 27 00:02:01,450 --> 00:02:05,260 ‫Ese no es un proceso que desee en su Enjambre de producción, por lo general. 28 00:02:05,290 --> 00:02:10,390 ‫Por lo general, desea hacer su construcción ya sea a través de un servicio en línea automatizado como 29 00:02:10,390 --> 00:02:17,280 ‫Docker Hub o Docker Cloud, o en algún lugar de su tubería CI / CD que no está consumiendo recursos en su Enjambre de producción. 30 00:02:17,290 --> 00:02:22,630 ‫En este escenario, podemos imaginar que nuestras imágenes se están construyendo en otro lugar y 31 00:02:22,630 --> 00:02:28,720 ‫almacenadas en Docker Hub y solo tenemos que reducirlas, sean cuales sean las últimas versiones, en nuestro Swarm. 32 00:02:28,840 --> 00:02:34,720 ‫Y solo diré esto, como muchas cosas en Informática, esta es una mitad de ciencia, una mitad de arte. 33 00:02:34,930 --> 00:02:40,650 ‫Sus comandos podrían ser en órdenes totalmente diferentes, o tener órdenes de opción totalmente diferentes a las mías. 34 00:02:40,660 --> 00:02:43,200 ‫Puede llamar a sus redes cosas diferentes. 35 00:02:43,270 --> 00:02:43,940 ‫Esta bien. 36 00:02:43,950 --> 00:02:48,010 ‫El resultado final es que la aplicación funciona, que pueden comunicarse entre sí de la manera 37 00:02:48,010 --> 00:02:52,180 ‫adecuada, que tiene todos los puertos publicados y que tiene los datos protegidos en un volumen. 38 00:02:52,180 --> 00:02:55,020 ‫Echemos un vistazo rápido a lo que enfrenta. 39 00:02:55,030 --> 00:02:59,170 ‫Imagine que tiene que diseñar los comandos y la arquitectura para esto. 40 00:02:59,170 --> 00:03:01,970 ‫Y esto es lo que el desarrollador le daría a usted que escribió esta aplicación. 41 00:03:02,140 --> 00:03:05,280 ‫Bueno, en este caso, es probable que haya muchos desarrolladores que escribieron esta aplicación, ¿verdad? 42 00:03:05,290 --> 00:03:10,120 ‫Debido a que en realidad tenemos un frontend web que está en Python, tenemos un backend web que 43 00:03:10,120 --> 00:03:11,140 ‫se ejecuta en Node. 44 00:03:11,140 --> 00:03:17,170 ‫Tenemos un proceso de trabajo que se está ejecutando. NET y luego tenemos un almacén de valores clave 45 00:03:17,180 --> 00:03:19,600 ‫de Redis y una base de datos PostgreSQL. 46 00:03:19,630 --> 00:03:24,610 ‫Esto es realmente algo que veo cada vez más a menudo, donde diferentes equipos escriben diferentes partes 47 00:03:24,610 --> 00:03:29,510 ‫de una solución, y pueden elegir el idioma que creen que es mejor para ese escenario. 48 00:03:29,660 --> 00:03:34,660 ‫Y en el mundo de los contenedores, este tipo de aplicación realmente brilla. las dependencias de Python o lo que sea. 49 00:03:34,660 --> 00:03:35,750 ‫Debido a que 50 00:03:35,770 --> 00:03:40,630 ‫nuestras aplicaciones están todas segmentadas, todavía pueden ejecutarse técnicamente en la misma máquina pero están 51 00:03:40,630 --> 00:03:45,170 ‫todas protegidas entre sí para que no termines con el Nodo en conflicto con 52 00:03:45,190 --> 00:03:49,810 ‫También notará aquí el flujo de tráfico, y la aplicación de votación no lo tiene, pero debería tener una 53 00:03:49,810 --> 00:03:53,680 ‫pequeña flecha que indique que aquí es donde entrarían los usuarios en la parte de la 54 00:03:53,710 --> 00:03:54,320 ‫aplicación de votación. 55 00:03:54,460 --> 00:03:59,530 ‫Y puede ver que la aplicación de votación en realidad tiene que presionar sus votos para esta aplicación que, dicho sea de 56 00:03:59,530 --> 00:04:01,300 ‫paso, va a votar por gatos y perros. 57 00:04:01,400 --> 00:04:07,780 ‫Impulsará eso a Redis y luego el trabajador realmente revisará el sistema Redis para ver si hay 58 00:04:07,780 --> 00:04:15,060 ‫algo en la cola y luego empujará los resultados a Postgres, que luego se mostrará en un servidor de 59 00:04:15,100 --> 00:04:19,960 ‫WebSockets que en realidad se actualiza en vivo a medida que avanza votación. 60 00:04:19,990 --> 00:04:25,540 ‫Si ingresamos al directorio rápidamente, he agregado algunas notas aquí para ayudarlo en el camino porque hay 61 00:04:25,540 --> 00:04:28,400 ‫algunas cosas que son un poco diferentes y nuevas. 62 00:04:28,510 --> 00:04:34,240 ‫Sin embargo, el área de servicios se escribiría como si fuera de alguien que conocía su aplicación, pero 63 00:04:34,240 --> 00:04:38,390 ‫no sabía cómo implementarla en Docker. Y ese es un escenario bastante común. 64 00:04:38,530 --> 00:04:43,110 ‫imagen debe implementar, el nombre real que debe darle, porque esos son importantes. 65 00:04:43,270 --> 00:04:46,310 ‫Puede ver que en los servicios he enumerado qué 66 00:04:46,360 --> 00:04:51,130 ‫Estas son imágenes que, desafortunadamente, están codificadas para qué nombres van a buscar en la red. 67 00:04:51,130 --> 00:04:55,350 ‫Idealmente, querría aplicaciones que pudiera configurar sobre la marcha para lo que necesitan hacer para los nombres, pero, 68 00:04:55,360 --> 00:05:01,360 ‫en este caso, el voto buscará específicamente un registro DNS llamado redis. Puedes ver que en realidad hay 69 00:05:01,360 --> 00:05:06,460 ‫dos redes aquí. Tenemos una interfaz y una red back-end. Es bastante típico también de una 70 00:05:06,460 --> 00:05:11,500 ‫aplicación más grande en la que tal vez desee proteger su base de datos en una red backend para 71 00:05:11,500 --> 00:05:14,580 ‫que la aplicación del usuario frontend no tenga acceso directo a ella. 72 00:05:14,680 --> 00:05:19,790 ‫Y eso es lo que mostramos aquí y notará que el trabajador en realidad está conectado a dos redes. 73 00:05:19,930 --> 00:05:25,830 ‫Entonces, cuando use su comando de creación, recuerde que está utilizando el servicio de docker create not docker run. 74 00:05:25,840 --> 00:05:29,950 ‫Por lo tanto, cuando use el servicio de su docker create command, necesitará especificar la 75 00:05:29,980 --> 00:05:33,460 ‫red --network dos veces, una para el frontend y otra para el back-end. 76 00:05:33,490 --> 00:05:36,100 ‫Obviamente, usted sabe para crear sus redes primero. 77 00:05:36,100 --> 00:05:41,290 ‫Entonces, algo de eso se especifica aquí. Y si necesita la imagen de nuevo, el diagrama de la arquitectura 78 00:05:41,290 --> 00:05:45,350 ‫también está aquí, por si acaso eso ayuda conceptualmente con la forma en que va a implementar esto. 79 00:05:45,700 --> 00:05:50,680 ‫Y, por supuesto, vas a tener la documentación de Docker. Es posible que necesite usar --help en el 80 00:05:50,680 --> 00:05:54,790 ‫comando de creación del servicio que le dará todas las opciones que pueda necesitar. 81 00:05:54,790 --> 00:06:00,580 ‫Solo vas a necesitar tres o cuatro de esos. Si se queda atascado con los comandos en 82 00:06:00,580 --> 00:06:06,430 ‫sí, es posible que desee revisar la documentación real, que pondré en los recursos de esta sección. 83 00:06:06,520 --> 00:06:13,250 ‫Pero este documento en particular bajo Swarm en realidad va a crear servicios y configurar servicios. 84 00:06:13,330 --> 00:06:18,610 ‫Entonces, es un poco prolijo, pero tiene mucha información que podría ayudarte si te quedas 85 00:06:18,610 --> 00:06:19,160 ‫atrapado aquí. 86 00:06:19,180 --> 00:06:22,700 ‫En el próximo video voy a ver todo esto yo mismo como si fuera usted. 87 00:06:22,750 --> 00:06:23,980 ‫Buena suerte y diviértete.