Auto DevOps 개선

k8s 1.16 및 Helm 3
Jake Shin
Jake Shin | Full-Stack Engineer

GitLab의 Auto DevOps는 내재한 베스트 실습과 자동화를 통해 CI/CD 도입을 더욱더 쉽게 만들어주도록 설계되었습니다. 여러분이나 여러분의 팀이 DevOps를 처음 접한다면, 이것이 매우 좋은 시작점이 될 것입니다. Auto DevOps에 대한 새로운 개선 사항과 향후 개선 사항을 공유해 드리기에 앞서 다음의 사항들을 유념해 주시기 바랍니다.

Auto DevOps 활용에는 Kubernetes 클러스터가 필수적입니다. Kubernetes 클러스터 셋업이 되어있지 않으시다면 시작 가이드를 참조하시길 바랍니다.

또한 Auto DevOps를 디폴트로 설정해두어야 합니다. 아직 되어있지 않은 경우 Settings > CI/CD > Auto DevOps로 이동하고 Default to Auto DevOps pipeline을 선택합니다. 사용하는 GitLab의 버전 및 라이센스와 Kubernetes 클러스터에 추가하는 구성 요소에 따라 다양한 자동화 단계를 사용할 수 있습니다.

  • 자동 빌드: 프로젝트에 도커 파일이 있거나 사용하는 프로그래밍 언어를 기반으로 선택한 Heroku 빌드 팩이 있는 경우 도커 파일을 사용하여 코드를 빌드하지만, 수동으로 설정할 수 있습니다.
  • 자동 테스트: Heroku 빌드 팩을 사용하여 코드 베이스에 포함된 모든 테스트를 다시 실행합니다. 자동 코드 품질은 다음과 같습니다. 코드 품질 이미지를 사용하여 코드에서 정적 분석 및 기타 검사를 실행합니다. Auto SAST(정적 애플리케이션 보안 테스트)는 다음과 같습니다. SAST 이미지를 사용하여 보안 문제에 초점을 맞춘 정적 분석 검사를 실행합니다.
  • 자동 종속성 검색: 종속성 검사 이미지를 사용하여 프로젝트 종속성에 대한 잠재적인 보안 문제를 확인합니다.
  • 자동 라이센스 컴플라이언스 기능: 라이센스 컴플라이언스 이미지를 사용하여 프로젝트 종속성에서 사용하는 라이센스를 검색합니다.
  • 자동 컨테이너 검색: Clair를 사용하여 사용된 모든 도커 이미지에 대해 정적 분석 및 보안 문제 검사를 실행합니다.
  • 응용프로그램 자동 검토: 팀 구성원이 검토하고 검토할 수 있는 응용프로그램 버전을 임시 환경에 만듭니다. 자동 DAST(동적 애플리케이션 보안 테스트): OWASP ZAProxy 도구를 사용하여 추가 보안 검사를 실행합니다.
  • Auto Deploy: Kubernetes 환경 설정에 정의된 대로 애플리케이션을 프로덕션 환경에 배포합니다.
  • 자동 브라우저 성능 테스트: Sitespeed.io 이미지를 사용하여 응용 프로그램 웹 페이지의 성능을 테스트합니다.
  • 자동 모니터링 기능: Prometheus를 사용하여 배포된 애플리케이션의 시스템 메트릭을 모니터링합니다.

최근 개선된 사항: Kubernetes 1.16 에 대한 대비(#32720)

깃랩에서는 최근에 Kubernetes 1.16 API의 변경 사항에 맞게 Auto DevOps 기능을 재작업했습니다. 사용자 관점에서 변경되는 것은 없지만, 백그라운드에서는 서로 다른 API 엔드포인트에 접근됩니다.

다가올 업데이트

Auto DevOps는 앞으로 다가올 몇 번의 배포에서 귀사의 프로젝트가 최신 DevOps 모범 사례를 준수하고 가능한 많은 플랫폼 기능 및 외부 툴과 통합할 수 있도록 몇 가지 향상된 기능을 제공합니다.

Auto DevOps용 클라우드 네이티브 빌드팩 (#25954)

가상 머신을 사용하는 게 일반적이던 지난 2011년 Heroku가 빌드팩 개념을 만든 이후, 많은 이들이 이 개념을 채택하여 더욱 컨테이너에 잘 맞는 것들을 자체 개발했습니다. 이러한 수요 변화에 따라 CNCF(Cloud Native Computing Foundation)는 2018년 Cloud Native Buildpack 프로젝트를 수락하여 현대적인 사용 사례에 맞는 빌드팩 표준을 유지하게 되었습니다. 또한 12.10에는 Cloud Native Buildpack에 대한 지원이 추가되었으며, 향후 몇 개월 이내에 "전통적인" Heroku 빌드팩을 새로운 빌드팩으로 전환할 예정입니다.

에어갭 네트워크에서 Auto DevOps 실행(#25642)

많은 사용자가 그들의 클러스터를 인터넷에 연결하고 있지만, 모든 사용자가 연결되어 있는 것은 아니며 저희는 이러한 고객에게 가능한 많은 기능을 제공하고자 합니다. GitLab 13.0의 일환으로 Auto DevOps 단계에 대한 종속성 위치를 구성할 방법을 연구 중입니다.

Helm 3 로의 업그레이드 (#29038)

깃랩은 Helm을 사용하여 Auto DevOps 프로세스의 다양한 단계에 필요한 패키지를 배포합니다. 13.1에서는 Helm을 버전 3으로 업그레이드하여 Tiller를 Helm의 "서버"로 제거하는 등 일련의 중요한 변화를 가져올 것입니다.

NGINX로 Auto DevOps 자동 모니터링(#118788)

Nginx는 널리 사용되는 HTTP 및 역방향 프록시 서버입니다. 13.0에서는 자동 모니터링 기능에 경고를 제공하고 Prometheus에 표시되는 메트릭에 대한 지원을 추가할 예정입니다.

머지트레인 지원을 Auto DevOps에 추가(#121933)

머지트레인은 대상 분기에 머지 대기 중인 머지 요청 목록을 대기열에 넣을 수 있는 GitLab 기능입니다. Auto DevOps는 현재 머지 열차를 지원하지 않지만, 버전 13.1에서는 지원을 추가하고 사용자가 머지 트레인을 Auto DevOps에 추가하는 데 필요한 구성을 얻을 수 있도록 지원합니다.

향후 추가될 기능들

이러한 계획된 기능은 차치하고, 우리가 개선하고자 하는 또 다른 영역은 자동 개발 운영 파이프라인에 대한 DAG(Directed Acyclic Graph) 접근 방식을 더 많이 채택하는 것입니다. 다른 단계가 시작되기 전에 한 단계가 완료되기를 더 이상 기다릴 필요가 없으며 중요한 단계의 결과에 집중할 수 있습니다. 열려 있는 이슈에 대해 자유롭게 보고 의견을 개진하세요.

이곳에서 Auto DevOps에 대해 자세히 알아보세요.

이 포스트는 GitLab의 동의를 받아 공식 블로그의 영문 포스트를 우리말로 번역한 글입니다.