Wraz ze wzrostem złożoności procesów automatycznego budowania obrazów systemowych rośnie potrzeba wczesnej walidacji konfiguracji, zanim trafią one do właściwego procesu buildowania.
W tym artykule pokażę, jak za pomocą Conftest oraz procesów CI/CD zautomatyzować testowanie plików YAML wykorzystywanych przez image-buildera, eliminując błędy konfiguracyjne jeszcze na etapie pipeline’u.
Zapewnienie bezpieczeństwa obrazów kontenerowych w procesie CI/CD może wydawać się dodatkowym obciążeniem, jednak w praktyce da się je zautomatyzować w prosty i powtarzalny sposób. W tym wpisie pokażę, jak zintegrować narzędzie Trivy z pipeline’em CI/CD, aby skutecznie wykrywać podatności bezpieczeństwa w budowanych obrazach kontenerowych jeszcze przed ich publikacją.
Trivy realizuje zasadę “shift left security”, czyli:
Budowanie własnych kontenerów w procesie CI/CD może wydawać się skomplikowane, ale wcale nie musi takie być. W tym wpisie pokażę krok po kroku, jak przygotować pipeline do budowania i publikowania obrazów kontenerowych z użyciem narzędzia Buildah.
Dziś przedstawie wam, jak zbudowałem własny image builder, krok po kroku.
Buildah pozwala tworzyć obrazy kontenerów bez uruchamiania demona i bez konieczności posiadania Dockera.
Brak demona
Buildah działa jako zwykłe polecenie CLI – nie wymaga działającego serwisu w tle (jak dockerd).
Rootless (bez uprawnień roota)
Może budować obrazy jako zwykły użytkownik, co znacząco poprawia bezpieczeństwo.
Zgodność z OCI / Docker
Tworzone obrazy są w pełni kompatybilne z Dockerem, Podmanem, Kubernetesem itd.
Skryptowalność
Buildah jest zaprojektowany jako zestaw niskopoziomowych poleceń (buildah from, buildah run, buildah commit), idealnych do automatyzacji w bashu lub CI.
Dockerfile – opcjonalnie
Obsługuje Dockerfile (buildah bud), ale nie wymusza ich użycia.
W pracy nad wieloma projektami infrastrukturalnymi (OpenTofu, Ansible, Vault, GitLab CI) szybko pojawia się ten sam problem: jak zapewnić powtarzalne, gotowe do pracy środowisko developerskie, bez ręcznego konfigurowania systemu na każdym laptopie lub VM.