Oi Vittoria, bom dia. Tudo bem?
Os secrets funcionam da seguinte maneira: quando criamos um secret (só podemos criá-los a partir de nós managers) ele é armazenado nos logs do RAFT, que são criptografados por padrão.
Dessa maneira, quando criamos services para nossos workers, podemos definir de maneira centralizada as informações que queremos passar.
Pense numa senha por exemplo. Eu crio um secret chamado senha_banco
e a partir de agora, posso definir quais services terão acesso aos dados do secret (sempre trafegando os dados de maneira criptografada). Quando o service for parado, o secret também será removido dele. Nem mesmo quaisquer outros services que estejam em execução no mesmo nó saberão desse secret.
Se optássemos pela abordagem de um volume, teríamos que fazer isso individualmente para cada nó (as informações não estariam mais centralizadas como em um secret), além do fato de termos a preocupação da informação estar armazenada de maneira não criptografa, precisaremos também remover manualmente as informações depois da execução do nosso service.