‫Muy bien, ahora que hemos analizado los secretos y las características, y cómo funciona y
‫todo eso, veamos algunas prácticas.
‫Entonces, lo que tengo aquí es que tengo configurado nuestro enjambre de 3 nodos como antes.
‫Estoy en un directorio de
‫muestra de secretos 1 que verá en el repositorio.
‫Y, todo lo que tengo allí es un archivo de texto. Y en ese archivo de texto hay solo un simple nombre de usuario, ni
‫siquiera una contraseña.
‫Hay dos formas en que podemos crear un secreto dentro de Swarm.
‫Y uno de ellos es darle un archivo, y otro es pasar un valor en la línea de comando.
‫Entonces, usemos el archivo primero. Docker secreto crear. Y luego necesito darle un nombre en la base de datos secreta.
‫Y lo llamaré usuario psql. Escupe la ID, como lo Y creemos otro. Vamos a poner
‫No tiene que ser el mismo nombre que el archivo, obviamente. Pero solo voy a llamarlo así. la contraseña.
‫Y entonces. hace para otros objetos. Y esta vez vamos a hacer eco de la línea de comandos.
‫Si ves lo que
‫estoy haciendo, estoy escribiendo una contraseña en la línea de comando con echo y haciendo eco en el comando de creación.
‫Y observe el guión al final, porque eso indica al comando que lea de la entrada estándar. que le estamos dando con el comando echo.
‫Que es lo
‫Ahora, debería decir que ambos tienen inconvenientes.
‫El primero, en realidad está almacenando la contraseña en el disco duro del servidor en el host.
‫Y realmente no querríamos hacer eso.
‫Entonces, tal vez estarías usando la API remota desde esa línea de comando local en tu máquina. Y luego pasa los archivos de
‫esa manera.
‫Y, en el segundo, en realidad está entrando en la historia de nuestro archivo Bash para nuestro usuario raíz.
‫Entonces, técnicamente, si alguien lograra entrar en la raíz, podrían sacar esta contraseña.
‫Cuando trabaje con sus propios sistemas de producción, deberá analizar diversas ahora, si hago un ligue secreter ls, puedes
‫formas de evitar estas dos posibles cuestiones de seguridad. Ahora, puedo inspeccionarlos, pero nunca voy a ver las contraseñas ni el secreto real.
‫Entonces, lo que tenemos aquí es ver que los tengo a ambos allí. Entonces, déjenme hacer al usuario.
‫No nos dará la información, ¿verdad? Porque si fuera tan fácil
‫obtener la información, realmente no sería ese secreto.
‫¿Derecha?
‫Entonces, el objetivo aquí, es que una vez que coloca el secreto en el sistema, se almacena en la base de datos. tendrá acceso a los secretos descifrados serán los
‫contenedores y servicios que le asignamos.
‫Y lo único que
‫Así que hagámoslo ahora. y
‫Voy a crear un servicio de forma manual. asignarlo a este servicio, para
‫servicio de docker crear. Lo llamaré psql. Y vamos a mapear el secreto. Básicamente, le estamos diciendo a este comando de creación que tome este secreto llamado También puedo usar la identificación que todos los contenedores en este servicio vean este secreto. Todo bien.
‫este nombre en particular. del secreto. Y luego coloque al usuario allí, y luego tengo que volver a hacerlo para obtener una contraseña.
‫Bueno.
‫Así que esto correlaciona los secretos del servicio, para que se muestren como archivos dentro del contenedor.
‫a partir de esta imagen cómo usar esos secretos.
‫Pero no le dice a la base de datos de postgres que estamos creando
‫Entonces, generalmente, tenemos que hacer algo con la configuración de la imagen.
‫Y en este caso, las imágenes oficiales de Docker Hub se han establecido en un estándar donde se usan
‫variables de entorno. Pero, por
‫en lugar de pasar tal vez algo así como la contraseña de postgres, sería difícil de usar con un archivo. lo que se ejecutará secretos, y luego el nombre, ¿verdad? Así que psql pass, el nombre del secreto.
‫De Si
‫hecho, tendríamos que buscar el archivo en la variable de entorno y eso es un poco molesto. hago eso, eso es en realidad en el inicio de la imagen que buscará que se complete esta variable de entorno.
‫Entonces, tienen el estándar donde, si especificas un archivo. y este sería el camino. Y si lo es, insertará ese archivo y lo almacenará en la variable de entorno. real de ese archivo.
‫El contenido
‫Esta es una forma realmente fácil de consumir estos secretos que están en los archivos.
‫Pero significa que las imágenes que usa deben tener este estándar en su lugar. Espero que esto tenga sentido para ti. Cuando creo el servicio va a hacer lo típico que hace cuando emite
‫También podemos hacer lo mismo para el usuario. una solicitud de programación para un nuevo contenedor.
‫Va a crear
‫una base de datos de Postgres y le pasará las variables de entorno para las ubicaciones de esos dos secretos.
‫Y luego va a mapear, en un tempfs, en realidad va a mapear en lo que parecen archivos.
‫Pero, nuevamente, es solo un sistema de archivos RAM o un tmpfs.
‫Vamos a ver qué podemos ver allí.
‫Por lo tanto, hago un servicio de acoplador ps psql, y eso debería decirnos en qué nodo se está ejecutando.
‫Está bien, se está ejecutando en este nodo.
‫Hagamos un ejecutivo para ver qué podemos ver dentro del contenedor.
‫docker exec -it.
‫Y luego el nombre específico del contenedor para ese servicio, y luego bash.
‫Todo bien.
‫Ahora deberíamos poder hacer un ls en secretos de ejecución, y verá que obtenemos los dos archivos allí. usuario para crear la base de datos.
‫Y si hago un cat en usuario psql, vemos el valor. Funcionó. si no tuviera esos archivos, la
‫Y si miramos los registros de esa psql, en realidad sabemos que funciona. Porque si no lo hizo. base de datos real se seguiría recreando y no podría funcionar porque no tenía una contraseña y un nombre de
‫Si realizó el servicio de Docker de nuevo, lo que vería si no funcionara correctamente en
‫un escenario de base de datos, es que la base de datos estaría fallando. Y seguiría reiniciándose y vería
‫que se están creando nuevos contenedores aquí.
‫Entonces, ahora que lo hemos asignado allí, podemos usar una actualización
‫del servicio acoplable para eliminar el secreto. Entonces, actualización del servicio del acoplador --secret-rm.
‫También hay secret-add. de estos secretos, lo que realmente sucedería es que volvería a desplegar el contenedor.
‫Pero si eliminé uno Porque los secretos son parte del diseño inmutable de los servicios.
‫Si algo en el contenedor tiene que cambiar para
‫el servicio, el servicio no entrará y cambiará algo dentro del contenedor. Realmente detendrá el contenedor y volverá a implementar uno nuevo.
‫Obviamente, eso no es ideal para las bases de datos. Entonces vamos a tener que idear un plan diferente para la forma en que actualizaríamos las contraseñas de la
‫base de datos.
‫Y eso es algo de lo que podemos hablar más adelante.
‫Por ahora, solo quiero que sepa que puede eliminarlos y agregar otros a un servicio existente.
‫Simplemente va a recrear el contenedor cuando lo hagas.
‫