Helm 차트 개발에 기여하기

우리의 기여 정책은 CONTRIBUTING.md에서 찾을 수 있습니다.

차트에 대한 문서 변경사항을 기여하는 것은 텍스트 편집기만 필요합니다. 문서는 doc/ 디렉터리에 저장되어 있습니다.

아키텍처

개발을 시작하기 전에 차트의 목표, 아키텍처 및 설계 결정 사항을 검토하는 것이 도움이 됩니다.

이 정보는 GitLab Helm 차트의 아키텍처에서 확인할 수 있습니다.

환경 설정

차트 개발을 위해 작업환경을 설정하려면 작업환경 설정을 참조하세요.

스타일 가이드

차트 개발에 대한 지침과 모범 사례에 대해서는 차트 개발 스타일 가이드를 참조하세요.

테스트 작성 및 실행

의도한 대로 차트가 작동하는지 확인하기 위해 여러 종류의 테스트를 실행합니다.

RSpec 테스트 작성

단위 테스트는 RSpec으로 작성되며 차트 리포지터리의 spec/ 디렉터리에 저장됩니다.

차트의 기능을 확인하려면 RSpec 테스트 작성을 참조하세요.

bats 테스트 작성

쉘 스크립트의 함수에 대한 단위 테스트는 bats로 작성되며 차트 리포지터리의 scripts/ 디렉터리에 해당 스크립트 파일과 함께 저장됩니다.

이 프로젝트에서 사용된 스크립트의 함수를 확인하려면 bats 테스트 작성을 참조하세요.

GitLab QA 실행

GitLab QA를 사용하여 배포된 클라우드 네이티브 GitLab 설치에 대해 통합 및 기능 테스트를 실행할 수 있습니다.

GitLab QA 차트 문서에서 자세히 알아보세요.

ChaosKube

ChaosKube를 사용하여 고가용성 클라우드 네이티브 GitLab 설치의 내고장성을 테스트할 수 있습니다.

ChaosKube 차트 문서에서 자세히 알아보세요.

ClickHouse

GitLab과 함께 외부 ClickHouse 서버를 구성하는 지침.

버전 및 릴리스

버전 구조, 브랜치 및 태그에 대한 자세한 내용은 릴리스 문서에서 확인할 수 있습니다.

변경 로그 항목

모든 CHANGELOG.md 항목은 changelog entries 워크플로우를 통해 생성되어야 합니다.

파이프라인

GitLab CI 파이프라인은 다음과 같은 파이프라인에서 실행됩니다.

  • Merge Request
  • 기본 브랜치
  • 안정적인 브랜치
  • 태그

이러한 CI 파이프라인의 구성은 다음 위치에서 관리됩니다.

리뷰 앱

CI에서 리뷰 앱을 사용하여 실행 중인 Helm 차트의 인스턴스를 배포하고 테스트합니다.

이 리뷰 앱은 EKS 및 GKE 클러스터에 배포되며, Helm 릴리스가 성공적으로 생성되었음을 확인한 후 GitLab QA 및 다른 RSpec 테스트를 실행합니다.

특히 Merge Request에 대해서는 vcluster를 사용하여 일시적인 클러스터를 생성합니다. 이를 통해 더 신속하게 Kubernetes의 새 버전에 대한 테스트를 수행할 수 있습니다.

upstream 차트를 복제해야 하는 경우

변경 없음, 복제하지 않기

사용 우리의 용도에 변경이 필요하지 않은 차트는 이 리포지터리로 복제해서는 안 됩니다.

복제를 위한 지침

민감한 정보

특정 차트가 환경 내에서 민감한 통신 비밀을 요구하는 경우, 예를 들어 비밀번호 또는 암호키, 환경 내 initContainers 사용을 선호.

기능 확장

상류에서 받아들여지지 않을 수 있는 차트의 기능을 확장해야 하는 경우도 있습니다.

구성 폐기 처리

필요한 변경으로 기능적으로 파괴적인 변화를 일으킬 때가 있습니다. 이러한 변경을 피하려고 노력하지만, 어떤 항목은 이러한 변경없이는 처리할 수 없는 경우도 있습니다.

이를 처리하기 위해 폐기 템플릿을 구현했습니다. 이 템플릿은 대체하거나 재배치해야 하는 속성을 인식하고 사용자가 취해야 하는 조치에 대해 알려주는 기능을 갖추고 있습니다.

문제가 될 수 있는 구성 파악 시도

이러한 차트의 복잡성과 유연성으로 인해 예측할 수 없거나 완전히 기능하지 않는 배포를 유발할 수 있는 구성을 생성할 수 있는 여러 영역이 존재합니다. 알려진 문제가 될 수 있는 설정 조합을 방지하기 위해 다음 두 가지 패턴을 구현하였습니다.

  • 우리의 하위 차트에 대한 스키마 유효성 검사를 사용하여 사용자가 지정한 값이 기대에 부합하는지 확인합니다.
  • 사용자에게 구성이 작동하지 않을 수 있다고 경고하는 템플릿 로직을 구현합니다.

부가적인 구성 확인에 대한 자세한 내용은 체크구성 템플릿 문서에서 확인하세요.

레지스트리 확인하기

개발 모드에서는 Docker 클라이언트로 레지스트리를 확인하는 것이 어려울 수 있습니다. 그 이유 중 하나는 레지스트리의 인증서 문제 때문입니다. 인증서를 추가하거나 레지스트리를 HTTP로 노출시킬 수 있습니다(또는 global.hosts.registry.https를 참조하세요). 인증서를 추가하는 것이 무인증 레지스트리 솔루션보다 보안적으로 뛰어납니다.

레지스트리는 MinIO 서비스의 외부 도메인 이름(또는 global.hosts.minio.name을 참조)을 사용합니다. 개발 환경을 위해 사용자 정의 TLD를 사용하여 내부 도메인 이름을 사용할 때 오류가 발생할 수 있습니다. 일반적인 증상은 레지스트리에는 로그인할 수 있지만 이미지를 푸시하거나 풀 수 없는 것입니다. 이는 일반적으로 레지스트리 컨테이너가 MinIO 도메인 이름을 해결하고 올바른 엔드포인트를 찾지 못하는 경우에 발생합니다(컨테이너 로그에서 오류를 확인할 수 있습니다).

개발 환경 문제 해결

개발자는 새 차트 기능을 작업하는 동안 고유한 문제에 직면할 수 있습니다. 개발 클러스터에서 이상한 문제가 있는 것으로 보인다면 문제 해결 가이드를 참조하세요.

note
위의 링크에서 제시된 문제 해결 단계는 개발 클러스터 전용입니다. 이러한 절차를 프로덕션 환경에서 사용하지 마십시오. 데이터가 손실될 수 있습니다.

추가 Helm 정보

내부 Helm 작업이 동작하는 방식에 대한 몇 가지 정보: