최근 몇 년 동안 소프트웨어 업계는 점점 더 shift-left 테스트 전략을 채택하고 있다. 이 전략은 배포 파이프라인 라이프사이클에서 더 이른 시점에 테스트를 수행하는 것을 지향한다. Kubernetes의 선언적 특성 때문에 shift-left 전략을 구현하기에 적합한 도구이다. 이 글에서는 Kubernetes 클러스터 오작동을 발견하기 위한 shift-right 및 shift-left 전략의 이점을 Gatekeeper와 Datree 오픈 소스 솔루션을 통해 살펴본다.
Shift-Right 테스트
Shift-right 테스트는 테스트 단계를 가능한 한 뒤로 미루는 전략이다. 일반적으로 프로덕션에 배포하기 전이나 배포 후에 테스트가 이루어진다. 이 접근법은 역사적으로 소프트웨어 업계에서 사용되어 왔으며, 스테이징 환경에서 감지되지 않을 수 있는 성능 문제, 장애 허용, 사용자 경험 등의 문제를 잡을 수 있는 장점이 있다.
Gatekeeper 오픈 소스 소프트웨어는 Kubernetes API 서버와 OPA 정책 사이의 브리지 역할을 한다. Kubernetes 클러스터에 리소스 생성, 업데이트 또는 삭제 요청이 보내질 때마다 Gatekeeper는 검증 웹훅으로 작동하여 제출된 요청이 미리 정의된 OPA 정책을 위반하지 않는지 확인한다. Gatekeeper는 클러스터 레벨에서 작업을 수행하므로, 스테이징 단계에서 배포 전 또는 프로덕션에서 직접 사용할 수 있어 shift-right 테스트 전략의 일부로 사용할 수 있다.
https://github.com/open-policy-agent/gatekeeper
GitHub - open-policy-agent/gatekeeper: 🐊 Gatekeeper - Policy Controller for Kubernetes
🐊 Gatekeeper - Policy Controller for Kubernetes. Contribute to open-policy-agent/gatekeeper development by creating an account on GitHub.
github.com
Shift-Left 테스트
Shift-left 테스트는 테스트 단계를 더 일찍 이동하여 개발 단계에서 테스트가 이루어지도록 한다. 모든 개발자가 테스트 단위가 되므로 개발 단계에서 오작동을 발견할 가능성이 높아진다. 이는 테스트 커버리지를 증가시키고 애플리케이션 전달 속도를 향상시키며, 코드가 사전 프로덕션에서 머무는 것을 보는 개발자의 좌절감을 줄일 수 있다.
Datree 오픈 소스 소프트웨어는 개발자 노트북이나 CI/CD 파이프라인의 일부로 실행할 수 있는 CLI 도구를 제공하여 shift-left 테스트 전략의 일부로 사용할 수 있다. 테스트 단계를 왼쪽으로 이동하는 가장 큰 과제 중 하나는 개발자가 테스트를 수행하고 실제로 지식을 갖추도록 하는 것이다. 이를 위해 엔지니어링 리더십은 팀과의 주제를 광범위하게 논의해야 한다.
개발자 친화적인 도구를 제공하는 것도 팀이 참여할 가능성을 높인다. 예를 들어 Datree는 VS 플러그인을 통해 코드 편집기에 자동 검사를 통합하고 광범위한 Kubernetes 관리 지식이 필요하지 않은 개발자 친화적인 오류 메시지를 제공한다.
https://github.com/datreeio/datree?tab=readme-ov-file
GitHub - datreeio/datree: Prevent Kubernetes misconfigurations from reaching production (again 😤 )! From code to cloud, Datre
Prevent Kubernetes misconfigurations from reaching production (again 😤 )! From code to cloud, Datree provides an E2E policy enforcement solution to run automatic checks for rule violations. See our...
github.com
Since July 2023, the commercial company that supports and actively maintains this project has been closed.
Shift-left 테스트 전략이 자리 잡고 개발자 팀이 참여한 후에는 진행 상황을 추적해야 한다. 애플리케이션 코드베이스의 커버리지 테스트를 추적하는 것처럼 Kubernetes 구성 파일도 동일하게 추적해야 한다. 팀 스탠드업에서 주제를 논의하고, 성공을 축하하며, 테스트 도전을 논의하여 shift-left 테스트가 애플리케이션 라이프사이클의 원활한 부분이 되도록 해야 한다.
결론
Shift-right 및 shift-left 전략은 장단점이 있지만, shift-left 전략이 점점 더 중요해지고 있다. 궁극적으로 두 가지 전략을 모두 구현하면 탄탄한 테스트 커버리지를 제공할 수 있다. 빠른 CI/CD 파이프라인에서 가능한 한 빨리 Kubernetes 오작동을 수정하면 오작동 비용을 $15,000에서 $8로 줄일 수 있다. CNCF 블로그에 따르면, Kubernetes 오작동을 초기 개발 단계에서 수정하면 프로덕션 단계에서의 수정 비용보다 640배 저렴하게 해결할 수 있다.

참고
The Cost of a Kubernetes Repair in Development vs. Production
'Security' 카테고리의 다른 글
[Security] SLSA 프레임워크 내에서 시크릿 탐지와 제거의 중요성 (0) | 2024.07.31 |
---|---|
[Security] Jenkins 'Security Advisories' 로 Jenkins 플러그인 취약점 관리하기 (0) | 2024.07.30 |
[Security] CIS (Center of Internet Security) Benchmarks (0) | 2023.10.23 |
[Security] 적대적 기계학습 (Adversarial Machine Learning) (0) | 2023.10.16 |
[논문] Benchmarking differentially private synthetic data generation algorithms (0) | 2022.12.21 |