Obtendo credenciais por instância em instâncias do Docker

Obtendo credenciais por instância em instâncias do Docker

Estou trabalhando para colocar em execução um sistema de tarefas distribuídas baseado em docker, e o principal obstáculo que estou enfrentando é como obter credenciais em cada VM do docker.

Basicamente, cada instância precisa ter um nome exclusivo e uma senha/certificado SSL. Em seguida, ele se conecta de volta à inicialização e inicia o processamento de tarefas.

Criar a instância é bastante simples, mas qual é uma boa abordagem para injetar as credenciais em cada instância? O consenso geral parece ser "usar variáveis ​​de ambiente", mas usar uma variável de ambiente com mais de 500 caracteres (por exemplo, todo o certificado SSL) parece grosseiro.

No momento, o aplicativo que estou tentando empacotar usa um arquivo JSON simples para configuração. Existe alguma maneira de adicionar arquivos a uma instância do docker em tempo de execução ou algo semelhante? Talvez uma última etapa de construção que utilize um arquivo definido parametricamente?

Responder1

Você pode adicionar um volume Docker e apontá-lo, por contêiner, para uma pasta no host que contém o certificado SSL desejado. Você pode até criar um volume de "arquivo único".

docker run -d \
    --name=worker0 \
    -v "/etc/ssl/worker0.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker0.key":/etc/ssl/private/container.key \
    myworkerimage

docker run -d \
    --name=worker1 \
    -v "/etc/ssl/worker1.crt":/etc/ssl/private/container.crt \
    -v "/etc/ssl/worker1.key":/etc/ssl/private/container.key \
    myworkerimage

Então, o que quer que você esteja usando para iniciar os trabalhadores, um script bash, ansible, etc. pode selecionar o certificado correto no host, mas dentro de cada contêiner iniciado a situação é idêntica (o certificado está sempre no mesmo caminho).

Você pode querer tornar esses 'volumes de arquivo' volumes somente leitura para :rorefletir que eles são uma configuração estática e não algo que o contêiner deve ou deveria ser capaz de alterar.

informação relacionada