- Em
Dockerfile, :latest quebra 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
latest no manifesto de Pod do Kubernetes é ainda pior
→ No Dockerfile, 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 usar latest
- 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 -upgrade e 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 :
Pipfile using Pipenv
- Node/Yarn :
yarn.lock
- Go :
go.sum e go.mod
- 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.