목표

본 이니셔티브에는 몇 가지 핵심 목표가 있습니다:

  1. 수평적으로 쉽게 확장 가능
  2. 쉽게 배포, 업그레이드, 유지보수 가능
  3. 다양한 클라우드 서비스 제공업체 지원
  4. Kubernetes 및 Helm의 초기 지원과 향후 다른 스케줄러 지원 유연성

스케줄러

우리는 산업 전반에서 성숙하고 널리 지원되는 Kubernetes를 지원하여 출시할 것입니다. 그러나 우리의 디자인의 일환으로, 다른 스케줄러의 지원을 배제하는 결정을 피하려고 노력할 것입니다. 이는 특히 OpenShift 및 Tectonic과 같은 하위 Kubernetes 프로젝트에 대하여 매우 중요합니다. 앞으로는 Docker Swarm 및 Mesosphere와 같은 다른 스케줄러도 지원될 수 있습니다.

우리의 목표는 Kubernetes의 확장 및 자가 치유 능력을 지원하는 것입니다:

  • 팟이 작동하는지 확인하고, 그렇지 않으면 재생산하는 준비 및 건강 점검
  • 카나리 및 롤링 배포를 지원하는 트랙
  • 오토-스케일링

우리는 표준 Kubernetes 기능을 활용하려고 노력할 것입니다:

  • 구성 관리를 위한 ConfigMaps. 그런 다음 이것들은 Docker 컨테이너에 매핑되거나 전달될 것입니다
  • 민감한 데이터를 위한 Secrets

우리는 Consul을 사용할 수도 있기 때문에, 이것은 다른 설치 방법과 일관성을 유지하기 위해 대신 사용될 수 있습니다.

Helm 차트

각 GitLab 특정 컨테이너/서비스의 배포를 관리하기 위한 Helm 차트가 생성될 것입니다. 그런 다음 총괄적인 배포를 쉽게 만들기 위해 번들 차트도 포함될 것입니다. 이것은 특히 중요합니다. 왜냐하면 올인원 Omnibus 기반 솔루션보다 Docker 및 Kubernetes 레이어에서 훨씬 더 많은 복잡성이 있을 것이기 때문입니다. Helm은 이 복잡성을 관리하고 values.yaml 파일을 통해 설정을 쉽게 관리하기 위한 쉬운 상위 레벨 인터페이스를 제공할 수 있습니다.

우리는 삼단계로 구성된 Helm 차트 세트를 제공할 계획입니다:

Helm 차트 구조