‫Tudo bem, então agora que passamos por segredos e recursos, e como funciona e tudo
‫isso, vamos ver algumas práticas.
‫Então, o que eu tenho aqui é, eu tenho nosso enxame de 3 nós configurado como antes.
‫Eu estou em um segredo
‫amostra 1 diretório que você verá no repo.
‫E, tudo o que eu tenho lá é um arquivo de texto. E nesse arquivo de texto é apenas um nome de usuário simples, nem
‫mesmo uma senha.
‫Há duas maneiras de realmente criar um segredo dentro do Swarm.
‫E um deles é dar-lhe um arquivo, e outro é para passar um valor na linha de comando.
‫Então, vamos usar o arquivo primeiro. segredo docker criar. E então eu preciso dar um nome no banco de dados secreto.
‫E eu chamarei de usuário do psql. Ele esconde o ID, como E vamos criar outro. Vamos realmente colocar
‫Não precisa ser o mesmo nome que o arquivo, obviamente. Mas eu vou chamar isso. a senha.
‫E depois. acontece com outros objetos. E desta vez, na verdade, vamos fazer eco dela da linha de comando.
‫Se você ver o que
‫estou fazendo, na verdade eu estou escrevendo uma senha na linha de comando com eco, e fazendo uma repetição no comando de criação.
‫E observe o traço no final, porque isso está dizendo o comando para ler a partir da entrada padrão. que estamos dando com o comando echo.
‫Qual é o
‫Agora, devo dizer que ambos têm desvantagens.
‫O primeiro, você está realmente armazenando a senha no disco rígido do servidor no host.
‫E nós realmente não queremos fazer isso.
‫Então, talvez você esteja usando a API remota a partir dessa linha de comando local em sua máquina. E depois passar nos arquivos
‫dessa forma.
‫E, no segundo, está realmente entrando na história do nosso arquivo Bash para o nosso usuário root.
‫Então, tecnicamente, se alguém pudesse entrar na raiz, eles poderiam realmente obter essa senha.
‫Quando você está lidando com seus próprios sistemas de produção, você precisará Agora, se eu fizer um segredo do docker, ls
‫examinar várias maneiras de contornar essas duas possíveis preocupações de segurança. Agora, eu posso realmente inspecioná-los, mas não vou ver as senhas ou o segredo real.
‫Então, o que temos aqui é. pode ver que eu tenho os dois lá dentro. Então, deixe-me apenas fazer o usuário.
‫Não nos dará a informação, certo. Porque se fosse tão fácil
‫obter a informação, não seria esse segredo.
‫Certo?
‫Então, o objetivo aqui é que, uma vez que você coloca o segredo no sistema, ele é armazenado no banco de dados. terá acesso aos segredos descodificados serão os contêineres
‫e serviços aos quais nós o designamos.
‫E o único que
‫Então vamos fazer isso agora. e
‫Eu vou criar um serviço manualmente. atribua-o a este serviço, para
‫Criação do serviço docker. Vou chamá-lo de psql. E nós vamos traçar o segredo para isso. Basicamente, estamos dizendo a esse comando criar que este segredo chamasse Eu também posso usar o ID que todos os contêineres deste serviço vejam esse segredo. Tudo bem.
‫esse nome específico. do segredo. E então coloque o usuário lá, e então eu tenho que fazê-lo novamente por senha.
‫OK.
‫Então, isso mapeia os segredos para o serviço, para que eles apareçam como arquivos dentro do contêiner.
‫a partir desta imagem como usar esses segredos.
‫Mas não diz ao banco de dados postgres que estamos criando
‫Então, geralmente, precisamos fazer algo com a configuração da imagem.
‫E neste caso, as imagens oficiais do Docker Hub se estabeleceram em um padrão onde você usa
‫variáveis ​​de ambiente. Mas, então
‫em vez de passar talvez por algo como senha do postgres, isso seria difícil de usar com um arquivo. seria segredo, e então o nome, certo? Então psql passe, o nome do segredo.
‫Teríamos Se
‫que realmente, como, catar o arquivo para a variável de ambiente e isso é um pouco de dor. eu fizer isso, na verdade, está na inicialização da imagem que irá procurar essa variável de ambiente que está sendo preenchida.
‫Então, eles têm o padrão onde, se você especificar um arquivo. e esse seria o caminho. E se for, ele irá então puxar esse arquivo e armazená-lo na variável de ambiente. real desse arquivo.
‫O conteúdo
‫Esta é uma maneira realmente fácil de consumir esses segredos que estão nos arquivos.
‫Mas isso significa que as imagens que você usa precisam ter esse padrão no lugar. Felizmente, isso faz sentido para você. Quando eu crio o serviço, vai fazer a coisa típica que faz quando ele
‫Nós também podemos fazer o mesmo para o usuário. envia uma solicitação de agendamento para um novo recipiente.
‫Ele vai criar
‫um banco de dados do Postgres e vai passar as variáveis ​​de ambiente para os locais desses dois segredos.
‫E então ele vai mapear, em um tempfs, ele realmente irá mapear em que aparência arquivos.
‫Mas, novamente, é realmente apenas um sistema de arquivos RAM ou um tmpfs.
‫Vamos ver o que podemos ver lá.
‫Então, eu faço um serviço docker ps psql, e isso deve nos dizer em que nó está rodando.
‫Tudo bem, está sendo executado neste nó.
‫Vamos fazer um executivo para ver o que podemos ver dentro do recipiente.
‫docker exec -it.
‫E, em seguida, o nome específico do contêiner para esse serviço, e depois bash.
‫Tudo bem.
‫Agora, devemos poder fazer um ls em segredos de corrida, e você verá que nós conseguimos os dois arquivos lá. de usuário para criar o banco de dados.
‫E se eu fizer um gato no usuário do psql, vemos o valor. Funcionou. se não tivesse esses arquivos, o
‫E se olharmos os logs desse psql, realmente sabemos que funciona. Porque se não fosse. banco de dados atual continuaria a se recriar e não poderia funcionar porque não tinha uma senha e um nome
‫Se você fez o serviço docker ps novamente, o que você veria se não estivesse funcionando
‫corretamente em um cenário de banco de dados, o banco de dados realmente falharia. E continuaria reiniciando e
‫você veria novos recipientes sendo criados aqui.
‫Então, agora que realmente o designamos, podemos usar uma atualização do
‫serviço docker para remover o segredo. Então, atualização do serviço docker --secret-rm.
‫Há também segredo-add. um desses segredos, o que realmente aconteceria é que ele reimplante o contêiner.
‫Mas se eu removi Porque os segredos fazem parte do design imutável dos serviços.
‫Se alguma coisa no recipiente tiver que mudar para
‫o serviço, o serviço não entrará e mudará algo dentro do contêiner. Isso realmente irá parar o recipiente e redistribuir um novo.
‫Obviamente, isso não é ideal para bancos de dados. Então, vamos ter que apresentar um plano diferente sobre como atualizar as senhas do banco
‫de dados.
‫E é algo sobre o que podemos falar mais tarde.
‫Por enquanto, eu só quero que você saiba que você pode removê-los e adicionar outros para um serviço existente.
‫É só recriar o recipiente quando você fizer isso.
‫