‫Tan suficiente con los anuncios.
‫Quiero llegar a un tema en el que he estado trabajando y enfocado desde mi Nodo. Por supuesto.
‫Y eso son variables de entorno, así que levante la mano en el chat y, por cierto, en
‫el chat puede hacer una onda de colon en dos puntos y, en realidad, hará una pequeña onda con la mano si está tratando con variables de entorno
‫en su aplicaciones y desea formas más fáciles de no estar exactamente seguro si está haciendo la
‫mejor manera para las variables de entorno.
‫Porque luché con eso durante bastante tiempo.
‫Me refiero no solo a los contenedores, sino a toda la informática distribuida, asegurándome de que todas mis aplicaciones
‫tengan al menos alguna forma consistente de hacer variables de entorno.
‫Obtener información oculta su servidor conocido, los nombres DNS de su servidor, sabe que lo nombra todo
‫en sus contenedores, así que
‫está bien.
‫Parece que algunos de ustedes están interesados en este tema.
‫Entonces esto será parte de mi nodo. Por supuesto.
‫Y luego planeo tomar algo de eso y descubrir cómo liberar esa información en la Web.
‫Hay un par de formas en que puede hacerlo, pero los conceptos básicos de esto provienen de las aplicaciones de 12 factores.
‫Y si no ha oído hablar de una aplicación de factor, ha existido
‫durante una década o más y es un concepto sobre 12 factores que hacen que una aplicación distribuida sea más exitosa esencialmente y es de
‫una compañía que aprendió desde el principio en la nube y en Internet cómo necesitaban administrar todos
‫los puntos diferentes de su aplicación y cómo necesitaban conocer las diferentes preocupaciones que tenían sobre las mejores prácticas, esencialmente
‫para escribir aplicaciones distribuidas.
‫Y es probable que si tiene una base de datos en un servidor y una API por aquí y un sitio web aquí
‫y un trabajo de trabajador por allá, pero permite una aplicación distribuida, hay muchas definiciones para distribuir
‫eso, pero generalmente la mayoría de nosotros hoy si le preocupan los contenedores y usted es parte de su
‫trabajo y los está ejecutando en servidores que probablemente esté tratando con algunas aplicaciones distribuidas.
‫Entonces, la parte interesante de esto es el estado de configuración.
‫Entonces, si regresa a la red de puntos de doce factores pagados para lanzar esto
‫al chat, definitivamente puede leerlos más tarde y luego profundizar en cada tema cuando tenga que lidiar con eso en su aplicación.
‫Pero de lo que quería hablar hoy fue sobre la configuración y la configuración sobre el almacenamiento de la configuración de
‫su entorno.
‫Entonces, a medida que aprenda si está tomando el curso de mi perro o maestría, sabe que nunca quiere que sus imágenes o
‫sus propias aplicaciones tengan configuraciones codificadas que serían diferentes para cada entorno y el entorno podría significar que es como un
‫máquina que el servidor de prueba de desarrollo o el servidor de ensayo o el servidor
‫de producción o si le gusta mucho de nosotros tiene múltiples niveles de producción y múltiples
‫copias de producción como todas estas cosas.
‫Si hay algo que podría cambiar allí, podría ser la configuración de memoria en Java, que podrían ser contraseñas
‫diferentes para una API.
‫Diferentes claves que podrían ser claves de almacenamiento para su nube.
‫Puede ser cualquier cosa, solo la palabra de quizás aquellos en su aplicación es una pequeña bandera que indica en qué parte del sistema
‫se encuentra y necesita que se establezca en una pequeña variable de entorno simple.
‫Todas esas cosas deben sacarse de su aplicación y una de las reglas del factor doce es si la separación estricta
‫de la configuración del código es correcta.
‫Y todos hemos visto que probablemente todos lo hemos hecho, dándole a conocer un valor rígido codificado como host local
‫porque su aplicación siempre se ejecuta en el mismo servidor que su base de datos, pero eso es antes de los contenedores,
‫entonces es posible que vea una aplicación codificada que dice local host en el código correcto.
‫Y eso es desafortunado porque eso los convierte en datos que los hacen muy rígidos y difíciles de manejar porque ahora tienes que cambiar el
‫código solo un entorno cambiado, por lo que no quieres hacer eso.
‫Y una de las ideas de esto es que las aplicaciones de doce factores y si sigue los principios de doce factores,
‫tiende a tener un tiempo muy fácil para convertirlas en contenedores, las aplicaciones de doce factores idealmente están usando todo a
‫través de variables de entorno.
‫La razón es porque todos los sistemas operativos y todos los sistemas admiten ese derecho.
‫Si tiene una aplicación Java aquí y no tiene GSM por allí y luego tiene una aplicación de base de datos aquí que
‫almacena sus bases de datos y tiene un MIM que almacena en caché todas estas cosas.
‫Cada uno de ellos tiene una forma diferente de consumir sus valores correctamente sus variables de entorno.
‫La configuración necesita la configuración que necesita para comenzar.
‫Esos son todos diferentes.
‫Y eso puede ser bastante frustrante.
‫Entonces, lo único que es consistente entre todos ellos son las variables de entorno.
‫Cada caparazón lo soporta.
‫Windows Mac Linux todos admiten la misma funcionalidad.
‫Puede ser ligeramente diferente la forma en que establece una variable de entorno o la borra, pero el valor clave es
‫el mismo y todos ellos.
‫Correcto.
‫Esa es una premisa central y eso es lo que puede ver en todo el médico y el ecosistema de
‫contenedores, ya que todos lo hemos adoptado como nuestro estándar.
‫Ahora, lo que quiero decir es que si tiene, por ejemplo, una aplicación que tiene un archivo de
‫demostración o un I y I o algún otro tipo de archivo de configuración al que deben llegar los valores, debe escribir una capa
‫intermedia entre las variables de entorno y luego a dónde van a entrar en la aplicación.
‫Correcto.
‫Y tengo un ejemplo de esto en mi aplicación BHP no tan completa.
‫Entonces, en GitHub, en mi aplicación de PSP, las imágenes muestran un ejemplo literal rápido.
‫Y luego llegaremos a sus preguntas.
‫Entonces, aquí lo que tengo es un archivo acoplable y este sacrificio hay muchas cosas, pero
‫las cosas en las que quiero centrarme es en esta aplicación de nivel. Tengo valores predeterminados que configuré en el archivo acoplable para
‫variables de entorno.
‫Ahora, la razón y la forma en que los configuro aquí es que prefiero que las configuraciones aquí predeterminadas funcionen en un
‫entorno de producción, ya sea que diga oye, estos valores predeterminados solo serán los valores de
‫producción promedio o podrían digamos, oye, estos serán los valores promedio
‫del desarrollador. Prefiero que sean un poco predeterminados al lado de la producción. De ese modo, puedo anularlos con un archivo de
‫composición local en mi máquina local, no hay problema, pero depende de usted
‫cómo hazlo pero definitivamente quieres crear unos coherentes aquí que tengan sentido desde el principio.
‫Ahora va a sobrescribir muchos de estos con otras formas de configurarlo, ya sea a través
‫del comando Docker Run o mediante la implementación de un enjambre o una implementación de red cubana o en su archivo GMO de compilación
‫Ducker los sobrescribirá.
‫Correcto.
‫Incluso puede sobrescribirlos en el shell antes de ejecutar esos comandos y los absorberá.
‫También puede usar algo como Docker compose, puede configurar un archivo EMV de puntos que en el mundo de PSP es en
‫realidad un estándar en el que funcionará de tal manera que también en la apuesta.
‫Puede ver que tengo estos aquí, pero obviamente algunos de estos van a la aplicación, pueden
‫ir a diferentes archivos y retrocedamos un segundo y le mostraré
‫la siguiente parte.
‫Entonces, esos están incrustados en el archivo médico cuando la imagen se construye en este momento.
‫Cuando quiero ver el archivo de redacción de mi médico, esto se utilizará para la configuración local correcta.
‫Cuando estoy haciendo desarrollo y luego puedo mirar aquí y puedes ver que los estoy configurando a todos y tal vez ya
‫sea que los configuro de manera diferente.
‫No tengo que anularlos si no quiero.
‫Pero en este caso elijo establecer ejemplos similares.
‫Si no tuviera que anular los de la imagen, podría dejar muchos de estos en paz.
‫Entonces ahí está eso.
‫Todo bien.
‫Así que los configuro aquí y ahora se usarán en el inicio del contenedor.
‫Entonces, si quisiera cambiarlos, tengo que reiniciar el contenedor.
‫No tengo que eliminar el contenedor correctamente.
‫Solo tuve que reiniciarlo.
‫Entonces puedes usar Dr. compuesto para hacer eso, entonces el siguiente paso es tal vez veamos
‫tal vez en mi máquina local o incluso en producción necesito que estén en archivos específicos.
‫Correcto.
‫Entonces, cuando mi hijo inicia mi aplicación, esas variables de entorno deben estar en otro lugar.
‫No pueden vivir en variables de entorno para algunas aplicaciones correctamente.
‫Llamaría a estas aplicaciones heredadas o aplicaciones tradicionales donde no buscan variables de entorno de forma
‫predeterminada.
‫Ahora, si estuviera creando una nueva aplicación, mi objetivo sería buscar variables de entorno y tal vez haya
‫algún archivo de configuración o algo que la aplicación use, pero estoy anulando automáticamente las variables de
‫entorno.
‫Entonces, la idea es que mi aplicación es lo suficientemente inteligente como para decir hola, si no hay una variable de entorno
‫para esto, usaré este valor predeterminado de este archivo.
‫Pero si ya hay un conjunto de variables de entorno, lo usaré.
‫Ahora, si está familiarizado con el enjambre y la red cubana, sabe que una vez que
‫nos adentremos en los secretos y configuremos, podemos comenzar a sobrescribir esos archivos completos y proporcionar contraseñas y secretos como archivos individuales.
‫Por lo tanto, también es posible que desee que su aplicación esté al tanto de eso.
‫Pero si su aplicación no está creando su propia aplicación personalizada o si está utilizando tal vez cosas de Docker Hub
‫o de código abierto oficial, entonces lo que necesita ver es proporcionar un script de punto de entrada.
‫Ahora, la forma en que se ejecuta es en su imagen, establece el script de punto de entrada que desea que se
‫ejecute y se ejecutará al inicio.
‫Y lo que puede ver aquí es un ejemplo muy simple de mí escribiendo las variables violentas y algunos otros
‫datos codificados en un archivo específico en el inicio simplemente usando un script bash.
‫Correcto.
‫Tiene que ser elegante.
‫Puede usar otros métodos para hacer esto también, pero tiende a estar en las imágenes oficiales de la ventana acoplable.
‫Esta aplicación tiende a ser el estándar.
‫Todo bien.
‫Entonces, en este caso, estoy tomando variables de entorno que se establecieron en el archivo Docker o
‫en el archivo de composición que anuló el archivo Docker de la imagen, llevará esos Passim aquí y luego esto hará eco de
‫esas cosas en un archivo.
‫Se trata de imagen.
‫Entonces, esto es para una aplicación HP heredada que espera un archivo de configuración p HP FP M y necesito establecer ciertos valores de
‫configuración para NPM que son únicos para cada entorno en este caso.
‫En realidad, esto es cuánto quiero que crezca el sistema FGM y cuántos subprocesos quiero generar cosas
‫como esa.
‫Correcto.
‫Entonces, eso sería diferente en el desarrollo local en comparación con la producción en la producción que quiero que
‫crezca mucho.
‫Correcto.
‫Así que cambiarías esas cosas aquí y así es como tomas esas aplicaciones heredadas y las haces funcionar.
‫Ahora puedes ver estas cosas en imágenes oficiales porque así es como aprendo muchas de mis cosas.
‫Entonces, si acabo de entrar en mi secuela, puedes ver cómo lo hicieron, que es exactamente la misma forma en que mi
‫secuela necesita cosas en un archivo de configuración.
‫Correcto.
‫Necesita configuraciones dinámicas en tiempo de ejecución.
‫Entonces, si buscó en el archivo acoplable la secuela oficial de my y se desplaza hacia abajo, verá que sí establece algunas variables de entorno aquí, pero también tiene
‫un script de punto de entrada que copia en él, lo vincula a una ubicación
‫específica y entonces como es el punto de entrada.
‫Entonces, el comando aquí es ver el CMB, realmente no se puede ver.
‫El CMB es solo para mi secuela, el punto de entrada técnicamente se ejecuta antes de eso y luego pasa la ejecución
‫al CMT.
‫Una vez que la secuencia de comandos termina de ejecutarse ahora, la forma en que encuentro esa secuencia de comandos aquí
‫es que solo subo un nivel y obtengo el concentrador y hago clic en este punto de ocho, y luego veré una
‫variable
‫de entorno y ahora tenemos la secuencia de comandos de shell eso se ejecuta cada vez que mi secuela comienza bien.
‫Y aquí hace cosas como tomar variables de entorno y ponerlas a disposición de la aplicación.
‫De hecho, es lo suficientemente inteligente que si agrega un pequeño archivo de subrayado al final de una variable de entorno,
‫tomará lo que esté en ese archivo y lo convertirá en la variable de entorno, que es ideal para todas las aplicaciones
‫que aún necesitan secretos, claves de API y todas esas cosas
‫Y si está utilizando secretos de enjambre o secretos de entidades cubanas, esas cosas se proporcionan, ya que pueden proporcionarse
‫como archivos.
‫Ahora siempre puedes usar cosas como bóveda y otros sistemas sofisticados que honestamente se basan en archivos, pero en
‫los contenedores tendemos a usar cosas como archivos y Linux en general, luego usamos cosas como archivos.
‫Entonces estás pasando estas cosas como archivos individuales.
‫Y luego este pequeño script de shell que es de código abierto,
‫lo que significa que puede copiarlo y ponerlo en su aplicación, puede usarlo para copiar las variables de entorno del archivo de texto y luego
‫pegar cada una de ellas en una variable de entorno llamada apropiadamente y de esa manera la aplicación puede tener más
‫tarde variables de entorno que están escritas en los archivos de configuración de la aplicación y todo es maravilloso.
‫Correcto.
‫Y esto cambiaría en cada inicio de la aplicación porque las variables inherentes podrían ser diferentes.
‫Y luego los reescribiría y así es como funciona.
‫Así que espero entender esos pasos.
‫Hay mucho más que eso.
‫En realidad hay un déjame conseguirte muy rápido.
‫Hay un pequeño resumen de cómo tratar más con las variables
‫de entorno dentro de componer su artículo que escribí, incluso obtener el enlace aquí.
‫Sí, esto se acabó en el sitio de Riley.
‫E hice un buen artículo de blog para ellos.
‫Bueno, creo que es lindo.
‫Pero sabes que depende de ti decirnos mentiras.
‫Y habla del Dr. Campos porque mucho de lo que estamos tratando para los
‫desarrolladores, especialmente, es la configuración local.
‫¿Cómo hago mi configuración específica para mí?
‫Y una de esas cosas es un archivo de anulación que desafortunadamente no tengo en este ejemplo de HP.
‫No creo que no tenga un archivo de anulación, pero debería.
‫Eso sería otra cosa para agregar aquí.
‫Pero aquí pondré eso bajo control.
‫Verifique que O'Reilly se vincule para hablar sobre tres cosas diferentes y componga
‫que realmente lo ayudarán a mejorar su juego en la administración de la configuración y reducir las plantillas replicadas correctamente, significa que puede agregar
‫partes específicas en la parte superior de su archivo de composición y luego repetir sin tener que repítalos una y
‫otra vez, así que si tienes muchas de las mismas variables de entorno porque estás haciendo microservicios
‫y quizás tengas 20 microservicios en un archivo de composición, la plantilla es para ti.
‫Esta es otra cosa que realmente le ahorrará algo de tiempo y puede tener las mismas
‫partes que deben repetirse una y otra vez en la parte superior de su archivo
‫de composición y luego es solo una apuesta, realmente la plantilla y luego luego puede insertar eso en cada servicio en el
‫momento apropiado.
‫De la forma en que lo hago aquí, también hay otras cosas aquí, le animo a
‫que lo compruebe, incluyendo cómo usar sus variables de entorno dentro de los archivos compuestos, no solo para establecer variables de
‫entorno en la imagen, sino también cualquier otra cosa que desee cambiar en su archivo de configuración en tiempo de ejecución, así que verifique
‫eso.
‫Espero que te guste Michael.
‫¿Qué pasa Michael?
‫Michael Ahrens en la llamada.
‫Llámame.
‫¿Qué es esta llamada de conferencia allí?
‫Dr. Capitán.
‫A menudo, lo que no debe entrar en las variables de entorno.
‫¿A quién estás molestando?
‫La pregunta.
‫Para ver qué inventa la gente.
‫Lo que no debe entrar en las variables de entorno.
‫Bueno, entonces la serie de razones por las que Docker y las entidades cubanas y otras herramientas han creado estas formas para que podamos
‫guardar secretos en los archivos es para que no tengan que ser variables de entorno.
‫Entonces, idealmente, si está creando sus propias aplicaciones para administrar sus propias aplicaciones, está manteniendo esos secretos fuera
‫de las variables de entorno, no porque necesariamente las variables de entorno sean intrínsecamente inseguras,
‫es porque nosotros, con las variables de entorno, tendemos a filtrarlas correctamente.
‫Tienden a aparecer en los registros porque tal vez hacemos un volcado de variable de entorno en
‫algún lugar de nuestra configuración o lo hacemos.
‫Si no te gusta un P HP, si hay un comando de prueba de HP PSP EMV o llegué a lo que se llama alguien
‫más que estoy seguro aquí, recuerda y dime, pero dónde volcará tu configuración a una web En
‫la página hay cosas como esas y luego, si hay algún secreto en alguna variable de entorno, estarán
‫expuestos allí y es posible que no pretendas que se filtren especialmente en los registros o en el
‫sistema de monitoreo de alguna manera.
‫Si tiene errores, a veces sabe si alguna vez ha tenido aplicaciones donde, si lo configura para depurar y eliminar errores,
‫esto es lo verdadero en dot net, donde luego colocará una gran cantidad de variaciones en
‫la pantalla y podría filtrar variables de entorno en la pantalla porque olvidó bloquearlo en el modo de
‫producción, hay todo tipo de formas en que las variables de entorno pueden terminar en las manos equivocadas.
‫Entonces, un buen primer paso para no incluir cosas en las variables de entorno serían los secretos y
‫con el enjambre y las comunidades puedes guardarlos en archivos y de esa manera puedes enseñar a tu aplicación cómo sacarlos
‫de los archivos.
‫El siguiente paso es usted si puede obtenerlos de sus secretos y archivos de configuración en los archivos que necesita la
‫aplicación.
‫Por lo tanto, en lugar de almacenar una variable de entorno que eventualmente se vuelve como debería, eventualmente se escribe
‫en un archivo que podría usar, puede almacenar y configurar la configuración, los secretos y los archivos, y luego van directamente a los
‫archivos que tal vez necesite mi secuela o su aplicación .
‫Correcto.
‫Entonces, técnicamente nunca entran en variables de entorno.
‫Entonces, al menos no en el servidor en sí.
‫Correcto.
‫Así que ese es un gran tema, me alegra que lo hayas mencionado.
‫Pero la cuestión es que probablemente podría escribir un curso completo sobre variables de entorno de secretos de configuración, pero
‫básicamente todas las cosas que necesita para un entorno y cómo lidiar con ellas.
‫Correcto.
‫Y creo que incluso si vas a cosas como la bóveda para ti y ahora estás hablando de una API secreta a
‫la que llamas, incluso se vuelve más complicada.
‫Así que definitivamente hay mucho de qué hablar allí.
‫Y si alguien tiene buenos recursos que les guste, siéntanse libres de lanzarlos y chatearlos o incluirlos en los
‫comentarios del video de YouTube para más adelante.
‫Muy bien, buena pregunta, Michael, es bueno verte.
‫¿Por qué lo harías tú?
‫Stephen dice: ¿No estaría el archivo Ducker en el control de la fuente, aunque no estoy a favor de tener créditos de producción, como
‫la contraseña del nombre de usuario y el control de la fuente?
‫Es por eso que esos valores son solo valores predeterminados dentro de los archivos de su médico Steven.
‫No pondrías secretos reales en ese archivo.
‫Correcto.
‫Como puede ver, el de mi ejemplo está justo aquí, todo en el archivo de la daga es solo ejemplos o
‫muestras.
‫Ahora, si es un número simple o algo que solo necesita establecerse y hay un valor predeterminado, una especie de valor predeterminado razonable
‫como estos aquí, estos p p p. metro. luego, asegúrate de poner los de
‫producción que prefieras y luego puedes sobrescribirlos según sea necesario
‫De esa manera, no tiene que configurarlos cada vez manualmente.
‫Pero sí, si vas a alguno de estos que son únicos para una aplicación específica o un entorno específico,
‫solo estoy poniendo valores ficticios aquí.
‫Definitivamente no lo recomiendo dentro de su repositorio de código.
‫Pones tus secretos y tus URL y el entorno, conoces la configuración del nombre de dominio y cosas
‫así.
‫Todo bien.
‫Estoy de acuerdo, pero su archivo Ducker estaría en su aplicación.
‫Sí, ahí es donde quieres guardarlo.
‫Todo bien.
‫Buena pregunta.
‫Buena pregunta si.
‫Quiero decir, a menos que estén encriptados correctamente, podrías hacer hash en ellos si tu aplicación acepta ese tipo de
‫cosas.
‫Pero todavía no los mantendría allí.
‫No, no guardo la configuración del entorno en otro lugar, pero necesita valores predeterminados.
‫Y lo que tiendo a hacer en un archivo de compilación con Docker compose es establecer valores predeterminados que funcionan con un desarrollador
‫local listo para usar.
‫Entonces, Docker componer funcionaría para ellos.
‫Ahora puede significar que necesitan obtener un punto en el archivo V de otro lugar, tal vez una tienda segura donde tenga
‫algún tipo de secreto de desarrollador que conozca ese tipo de cosas.
‫Pero realmente trabajo duro para no incluir eso, idealmente si eres desarrollador local, tienes todo lo
‫que necesitas localmente.
‫No necesita una API remota como cosas remotas y es de esperar que tenga datos de muestra y cosas
‫que pueden estar en su máquina local y no necesita muchos secretos de los que deba
‫preocuparse, solo tiene valores ficticios para todo y puedes comprar localmente.
‫Obviamente, no todas nuestras aplicaciones pueden hacer eso como una utopía.
‫Entonces, se te ocurrirá una forma diferente de almacenar esos
‫secretos y es por eso que hay tantas formas de establecer variables de entorno en tiempo
‫de ejecución para que puedas guardarlas en otro lugar y luego ingresarlas en el último segundo a través del entorno variables bien buenas preguntas sobre verbos de entorno.
‫Me alegra que tengamos este tema hoy.
‫Veamos
‫cuál es la forma más sencilla de implementar el archivo E y V.
‫También te mostré el ejemplo de mi aplicación secuela correcta.
‫Y aquí toman este script y no hay ningún archivo EMV.
‫Lo que está diseñado para esto es cuando usas secretos o configuración.
‫Entonces, si está utilizando los secretos nativos y las características de configuración de Docker swarm o los mapas y secretos
‫de configuración en las comunidades, tal vez podría usar esto como una forma de obtener la información de esos archivos, específicamente los secretos
‫realmente y llevarlos a las variables de entorno.
‫Si los necesita correctamente, es posible que no necesite sacarlos a las variables de entorno, pero si lo
‫hizo, podría usar este pequeño script de shell para hacerlo.
‫Espero que eso responda tu pregunta, pero no lo estaría.
‫No hay necesidad de crear un archivo específico.
‫Exactamente.
‫Si estás hablando de cómo hacer secretos de enjambre porque los secretos de enjambre crean archivos para ti, entonces mira
‫mi curso de dominio de Docker en la URL.
‫Brett Fisher punto com barra diagonal que está abajo en la descripción.
‫Hablé de eso allí también en mi curso de enjambre.