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

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

GitLab은 클러스터 관리 프로젝트 템플릿을 제공하며, 이를 사용하여 프로젝트를 생성합니다. 해당 프로젝트에는 GitLab과 통합되며 GitLab 기능을 확장하는 클러스터 애플리케이션이 포함됩니다. 프로젝트 내에서 사용자 정의 클러스터 애플리케이션을 확장하는 데에도 이러한 템플릿을 활용할 수 있습니다.

note
프로젝트 템플릿은 수정 없이 GitLab.com에서 작동합니다. Self-Managed 인스턴스를 사용하는 경우에는 .gitlab-ci.yml 파일을 수정해야 합니다.

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

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

  1. 클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트를 생성하세요.
  2. 프로젝트를 에이전트에 대해 구성하세요(에이전트 설치 색인.md).
  3. 프로젝트 설정에서 $KUBE_CONTEXT라는 환경 변수를 만들고, 값을 path/to/agent-configuration-project:your-agent-name 으로 설정하세요.
  4. 필요에 따라 파일을 구성하세요.

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

이미 에이전트를 구성하고 클러스터를 GitLab에 연결했다면:

  1. 클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트를 생성하세요.
  2. 에이전트를 구성한 프로젝트에서, 새 프로젝트에 대한 에이전트 액세스를 부여하세요.
  3. 새 프로젝트에서 $KUBE_CONTEXT라는 환경 변수를 만들고, 값을 path/to/agent-configuration-project:your-agent-name 으로 설정하세요.
  4. 새 프로젝트에서 필요에 따라 파일을 구성하세요.

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

클러스터 관리 프로젝트 템플릿을 기반으로 프로젝트를 생성하려면:

  1. 왼쪽 사이드바 상단의 새로 만들기() 및 새 프로젝트/리포지터리를 선택하세요.
  2. 템플릿에서 만들기를 선택하세요.
  3. 템플릿 디렉터리에서 GitLab 클러스터 관리 옆의 템플릿 사용을 선택하세요.
  4. 프로젝트 세부 정보를 입력하세요.
  5. 프로젝트 생성을 선택하세요.
  6. 새 프로젝트에서 파일을 구성하세요.

프로젝트 구성

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

.gitlab-ci.yml 파일

.gitlab-ci.yml 파일:

  • Helm 버전 3을 사용하는지 확인합니다.
  • 프로젝트에서 활성화된 애플리케이션을 배포합니다.

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

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

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

주요 helmfile.yml 파일

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

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

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

내장된 애플리케이션

템플릿에는 템플릿의 각 애플리케이션에 대해 설정된 helmfile.yaml을 포함하는 applications 디렉터리가 있습니다.

내장된 지원되는 애플리케이션은 다음과 같습니다:

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

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