Ao usar o escravo Jenkins em execução no contêiner, quais são as alternativas ou implementações "seguras" (em termos de segurança) para o Docker no Docker .
Exemplo de arquitetura:
- Mestre Jenkins em execução como contêiner Docker
- Escravo Jenkins em execução como contêiner Docker
- Tarefa de teste executada no contêiner Docker
Algumas alternativas conhecidas:
- DOOD (Docker-Fora-Docker)
- Jenkins Plugin usando a API do Docker
Esclarecimento das restrições: a idéia é usar Jenkins como orquestrador e Docker para um ambiente limpo, o restante da arquitetura está sujeito a alterações.
jenkins
docker
docker-in-docker
rombob
fonte
fonte
Docker-in-docker
- para todos os que são novos no tópico, vale a pena ler a descrição de vantagens e desvantagens de Jérôme Petazzoni .Respostas:
Para evitar a dependência
dind
(de criar novas imagens a partir de um arquivo docker, o que deve ser bom), eu procuraria o plugin kubernetes do Jenkins .Obviamente, ele precisa dar vida a um cluster de kubernetes, mas permitir que um agente jenkins único execute o teste em um ambiente isolado limpo e depois o retire. Os custos de manutenção do cluster kubernetes não devem ser maiores do que manter seus escravos Jenkins.
O ponto positivo é que você pode criar uma versão de escravos com um ambiente específico e não precisar mexer na versão múltipla de ruby / java / python e deixar a tarefa escolher o "ambiente" adequado, especificando a imagem do agente a ser usada e ter um pronto para testar o ambiente sem qualquer pré-teste de ajustes.
Eu iria para o kurbenetes como agendador de contêineres, porque é relativamente leve para configurar e manter.
fonte