Não use `:latest`
(platformers.dev)- Em
Dockerfile,:latestquebra o requisito mais importante de CD: "builds idempotentes reproduzíveis"
→ Isso não só faz o build falhar, como também pode causar erros em produção - Especificar
latestno manifesto de Pod do Kubernetes é ainda pior
→ NoDockerfile, pelo menos ainda é possível fazer rollback, mas no manifesto de deploy isso cria o risco de quebrar a compatibilidade em qualquer momento em que novos Pods forem sendo distribuídos no rollout - Em PIP,
package.json, Terraform etc., definir algo como uma versão mínima ou não especificar a versão produz praticamente o mesmo efeito de usarlatest - Use obrigatoriamente recursos como
lockfile, fornecidos pelos frameworks- Faça commit do arquivo de lock no controle de código-fonte
- Ao aplicar novos recursos/correções de bugs/correções de segurança etc., execute algo como
terraform init -upgradee faça commit do arquivo de lock - Não atualize o arquivo de lock durante o CI
- Tipos de arquivo de lock
- Terraform :
.terraform.lock.hcl - Python :
Pipfileusing Pipenv - Node/Yarn :
yarn.lock - Go :
go.sumego.mod
- Terraform :
- Se possível, não faça pulling de dependências em tempo de execução
→ Transforme as dependências em artefatos implantáveis e versione-os - Faça varredura de vulnerabilidades com serviços como Twistlock / Grype
Ainda não há comentários.