목표

이 프로젝트의 목표는 몇 가지 중심적인 목표가 있습니다:

  1. 수평으로 쉽게 확장 가능하도록 함
  2. 배포, 업그레이드, 유지 관리가 쉽도록 함
  3. 다양한 클라우드 서비스 공급업체의 널리 지원
  4. Kubernetes 및 Helm에 대한 초기 지원과 향후 다른 스케줄러를 지원할 유연성

스케줄러

우리는 산업 전반에서 성숙하고 널리 지원되는 Kubernetes를 지원하여 론칭할 것입니다. 그러나 우리의 디자인 일환으로, 다른 스케줄러를 지원할 수 없게 만드는 결정을 피하려고 노력할 것입니다. 이는 특히 OpenShift 및 Tectonic과 같은 후속 Kubernetes 프로젝트에 대해 특히 그렇습니다. 미래에는 Docker Swarm 및 Mesosphere와 같은 다른 스케줄러도 지원될 수 있습니다.

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

  • Pod가 작동하는지 확인하기 위한 준비 및 상태 확인 및 그렇지 않다면 다시 시작
  • 카나리아 및 롤링 배포를 지원하는 트랙
  • 오토-스케일링

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

  • 설정 관리를 위한 ConfigMaps. 이들은 그럼에도 불구하고 Docker 컨테이너에 매핑되거나 전달될 것입니다.
  • 민감한 데이터에 대한 Secrets

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

Helm 차트

Helm 차트는 각 GitLab 특정 컨테이너/서비스의 배포를 관리하기 위해 만들어질 것입니다. 그런 다음 전반적인 배포를 쉽게 만들기 위해 번들 차트가 포함될 것입니다. 이는 모뉴비스 기반 솔루션보다 Docker 및 Kubernetes 레이어에서 훨씬 더 많은 복잡성이 있기 때문에 특히 중요합니다. Helm은 이러한 복잡성을 관리하고 values.yaml 파일을 통해 설정을 쉽게 관리할 수 있는 간단한 최상위 인터페이스를 제공할 수 있습니다.

우리는 세 개의 계층으로 된 Helm 차트 세트를 제공할 계획입니다:

Helm 차트 구조