목표

우리는 이 이니셔티브와 관련하여 몇 가지 주요 목표가 있습니다:

  1. 수평으로 쉽게 확장 가능
  2. 배포, 업그레이드, 유지 관리가 용이
  3. 다양한 클라우드 서비스 제공업체 지원
  4. Kubernetes 및 Helm에 대한 초기 지원, 미래에 다른 스케줄러를 지원할 수 있는 유연성

스케줄러

우리는 산업 전반에서 성숙하고 널리 지원되는 Kubernetes 지원으로 시작할 것입니다. 그러나 설계의 일환으로, 우리는 다른 스케줄러를 지원하는 것을 방해하는 결정을 피하려고 노력할 것입니다. 이는 OpenShift 및 Tectonic과 같은 다운스트림 Kubernetes 프로젝트에 특히 해당됩니다. 향후 Docker Swarm 및 Mesosphere와 같은 다른 스케줄러들도 지원될 수 있습니다.

우리는 Kubernetes의 확장 및 자기 치유 기능을 지원하는 것을 목표로 합니다:

  • 포드가 작동하는지 확인하기 위한 준비 및 건강 점검, 그렇지 않을 경우 포드를 재활용
  • 카나리 및 롤링 배포를 지원하기 위한 트랙
  • 자동 확장

우리는 표준 Kubernetes 기능을 활용하려고 합니다:

  • 구성 관리를 위한 ConfigMaps. 이는 Docker 컨테이너에 매핑되거나 전달됩니다.
  • 민감한 데이터를 위한 Secrets

또한 Consul을 사용할 수도 있으므로, 이는 다른 설치 방법과의 일관성을 위해 대신 활용될 수 있습니다.

Helm 차트

각 GitLab 특정 컨테이너/서비스의 배포 관리를 위해 Helm 차트가 생성될 것입니다. 이후에는 전체 배포를 쉽게 하기 위해 번들 차트도 포함될 것입니다. 이는 이 작업에서 특히 중요합니다. 왜냐하면 Docker 및 Kubernetes 계층에서 Omnibus 기반 솔루션보다 훨씬 더 많은 복잡성이 있을 것이기 때문입니다. Helm은 이 복잡성을 관리하는 데 도움을 줄 수 있으며, values.yaml 파일을 통해 설정을 관리하기 위한 쉬운 상위 인터페이스를 제공할 수 있습니다.

우리는 세 가지 계층의 Helm 차트를 제공할 계획입니다:

Helm 차트 구조