클러스터 애플리케이션 관리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab 전용
  • GitLab 12.10에 도입되었으며 Helm v2를 지원하는 Helmfile 지원이 함께 제공되었습니다.
  • Helm v2 지원은 GitLab 14.0에서 삭제되었습니다. 대신 Helm v3를 사용하세요.
  • GitLab 14.5에서 GitLab 에이전트로 이관되었습니다.

GitLab은 클러스터 관리 프로젝트 템플릿을 제공하며, 이를 사용하여 프로젝트를 생성할 수 있습니다. 이 프로젝트에는 GitLab과 통합되며 GitLab 기능을 확장하는 클러스터 애플리케이션이 포함되어 있습니다. 프로젝트에 표시된 패턴을 사용하여 사용자 지정 클러스터 애플리케이션을 확장할 수 있습니다.

참고: 프로젝트 템플릿은 GitLab.com에서 수정 없이 작동합니다. 자체 관리 인스턴스에서는 .gitlab-ci.yml 파일을 수정해야 합니다.

에이전트 및 매니페스트를 위한 하나의 프로젝트 사용

아직 에이전트를 사용하여 클러스터를 GitLab과 연결하지 않았다면:

  1. 클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트 생성을 선택하세요.
  2. 프로젝트를 에이전트용으로 구성하세요.
  3. 프로젝트 설정에서 $KUBE_CONTEXT라는 환경 변수를 만들고 값은 경로/에이전트-구성-프로젝트:사용자-에이전트-이름으로 설정하세요.
  4. 필요에 따라 파일을 구성하세요.

에이전트 및 매니페스트를 위한 별도의 프로젝트 사용

이미 에이전트를 구성하고 클러스터를 GitLab과 연결한 경우:

  1. 클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트 생성을 선택하세요.
  2. 에이전트를 구성한 프로젝트에서 새 프로젝트에 대한 에이전트 액세스 권한 부여하세요.
  3. 새 프로젝트에서 $KUBE_CONTEXT라는 환경 변수를 만들고 값은 경로/에이전트-구성-프로젝트:사용자-에이전트-이름으로 설정하세요.
  4. 새 프로젝트에서 파일을 구성하세요.

클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트 생성

클러스터 관리 프로젝트 템플릿에서 프로젝트를 만들려면:

  1. 왼쪽 사이드 바의 맨 위에서 새로 만들기 () 및 새 프로젝트/저장소를 선택합니다.
  2. 템플릿에서 만들기를 선택합니다.
  3. 템플릿 목록에서 GitLab 클러스터 관리 옆에있는 템플릿 사용을 선택합니다.
  4. 프로젝트 세부 정보를 입력합니다.
  5. 프로젝트 만들기를 선택합니다.
  6. 새 프로젝트에서 파일을 구성하세요.

프로젝트 구성

클러스터 관리 템플릿을 사용하여 프로젝트를 생성한 후 다음을 구성할 수 있습니다:

.gitlab-ci.yml 파일

.gitlab-ci.yml 파일:

  • Helm 버전 3에서 실행되도록합니다.
  • 프로젝트에서 활성화 된 애플리케이션을 배포합니다.

파이프라인 정의를 편집하고 확장 할 수 있습니다.

파이프라인에서 사용되는 기본 이미지는 클러스터-애플리케이션 프로젝트에서 빌드됩니다. 이 이미지에는 Helm v3 릴리스를 지원하기 위한 일련의 Bash 유틸리티 스크립트가 포함되어 있습니다.

자체 관리 GitLab 인스턴스를 사용하는 경우 .gitlab-ci.yml 파일을 수정해야합니다. 구체적으로 자동 패키지 업그레이드 주석으로 시작하는 섹션은 include가 GitLab.com 프로젝트를 참조하기 때문에 자체 관리 인스턴스에서 작동하지 않습니다. 이 주석 아래의 모든 내용을 제거하면 파이프라인이 성공합니다.

주요 helmfile.yml 파일

템플릿에는 Helm v3로 클러스터 애플리케이션을 관리 할 수 있는 Helmfile이 포함되어 있습니다.

이 파일에는 각 애플리케이션에 대한 다른 Helm 파일의 경로 목록이 포함되어 있습니다. 기본적으로 모두 주석 처리되어 있으므로 클러스터에서 사용할 앱의 경로를 주석 해제해야합니다.

각 서브 경로의 helmfile.yaml에는 기본적으로 installed: true 속성이 있습니다. 따라서 클러스터 및 Helm 릴리스의 상태에 따라 Helmfile은 파이프라인이 실행 될 때마다 앱을 설치하거나 업데이트하려고 시도합니다. 이 속성을 installed: false로 변경하면 Helmfile이 클러스터에서이 앱을 제거하려고 시도합니다. Helmfile 작동 방법에 대해 더 알아보기합니다.

내장 애플리케이션

템플릿에는 템플릿의 각 애플리케이션에 대해 구성된 helmfile.yaml이 포함된 applications 디렉토리가 있습니다.

built-in supported applications는 다음과 같습니다:

각 애플리케이션에는 applications/{app}/values.yaml 파일이 있습니다. GitLab Runner의 경우, 파일은 applications/{app}/values.yaml.gotmpl입니다.

이 파일에서 앱의 Helm 차트에 대한 기본값을 정의할 수 있습니다. 일부 앱은 이미 기본값이 정의되어 있습니다.