GitLab 관리 앱에서 클러스터 관리 프로젝트로 마이그레이션(지원 중단)
Offering: GitLab.com, Self-Managed, GitLab Dedicated
GitLab 관리 앱은 GitLab 14.0에서 지원이 중단되었으며 사용자가 제어하는 클러스터 관리 프로젝트를 선호합니다. 프로젝트를 통해 클러스터 응용 프로그램을 관리하면 기존의 GitLab 관리 앱보다 훨씬 유연하게 클러스터를 관리할 수 있습니다. 클러스터 관리 프로젝트로 마이그레이션하려면 GitLab 러너가 있어야 하고 Helm에 익숙해져 있어야 합니다.
클러스터 관리 프로젝트로 마이그레이션
GitLab 관리 앱에서 클러스터 관리 프로젝트로 마이그레이션하려면 아래 단계를 따르세요. 예시로 비디오 설명서도 확인하세요.
- 클러스터 관리 프로젝트 템플릿을 기반으로 새 프로젝트를 생성합니다.
- 클러스터 내 이 프로젝트에 에이전트를 설치합니다.
-
.gitlab-ci.yml
에서 지침에 따라KUBE_CONTEXT
CI/CD 변수를 새로 설치된 에이전트의 컨텍스트로 설정합니다. -
미리 구성된
.gitlab-ci.yml
파일을 사용하여 Helm v2 릴리스로 배포된 앱을 감지합니다:-
기본 GitLab 관리 앱의 네임스페이스를 덮어쓴 경우,
.gitlab-ci.yml
을 편집하여 스크립트가 올바른 네임스페이스를 매개변수로 받는지 확인합니다:script: - gl-fail-if-helm2-releases-exist <your_custom_namespace>
-
기본 이름(
gitlab-managed-apps
)을 유지한 경우, 스크립트가 이미 설정되어 있습니다.
두 경우 모두 매뉴얼으로 파이프라인 실행하고
detect-helm2-releases
작업 로그를 확인하여 Helm v2 릴리스가 있는지 및 식별된 릴리스를 확인하세요. -
-
Helm v2 릴리스가 없으면 이 단계를 건너뜁니다. 그렇지 않으면 정식 Helm 문서를 참조하여 Helm v2에서 Helm v3로 마이그레이션하는 방법을 따르고, 마이그레이션이 성공적으로 이루어졌다고 확신이 든 후에 Helm v2 릴리스를 정리합니다.
-
이 시점에는 이미 Helm v3 릴리스만을 가져야 합니다. 관리할 응용 프로그램의 경로를 메인
./helmfile.yaml
에서 주석을 해제하세요. 한꺼번에 관리할 수 있지만 각 응용 프로그램에 대해 해당 단계를 별도로 반복하여 혼란을 피하세요. -
연관된
applications/{app}/helmfiles.yaml
을 편집하여 응용 프로그램에 배포된 차트 버전과 일치시킵니다. GitLab 러너 Helm v3 릴리스를 예로 들면:다음 명령은 릴리스 및 해당 버전을 나열합니다:
helm ls -n gitlab-managed-apps NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION runner gitlab-managed-apps 1 2021-06-09 19:36:55.739141644 +0000 UTC deployed gitlab-runner-0.28.0 13.11.0
CHART
열에서{release}-v{chart_version}
형식의 버전을 가져와서./applications/gitlab-runner/helmfile.yaml
의version:
속성을 수정하여 배포된 버전과 일치시킵니다. 이렇게 함으로써 마이그레이션 중에 버전을 업그레이드하지 않도록 안전하게 단계를 수행합니다. 만약 앱이 다른 네임스페이스로 배포되었다면, 위 명령에서gitlab-managed-apps
를 해당 명령으로부터 얻은 값으로 대체해야 합니다. -
응용 프로그램과 연관된
applications/{app}/values.yaml
을 편집하여 배포된 값을 일치시킵니다. 예를 들어, GitLab 러너의 경우:-
다음 명령의 출력을 복사합니다(크기가 큰 경우가 있을 수 있음):
helm get values runner -n gitlab-managed-apps -a --output yaml
-
이전 명령의 출력으로
applications/gitlab-runner/values.yaml
를 덮어씁니다.
이 안전한 단계는 예기치 않은 기본값이 배포된 값을 덮어쓰지 않도록 보장합니다. 예를 들어, GitLab 러너의
gitlabUrl
이나runnerRegistrationToken
이 실수로 덮어써지지 않도록 보장합니다. -
-
특별한 주의가 필요한 일부 앱:
-
Ingress: 기존 차트 문제로 인해
.gitlab-ci.yml
명령을 실행하려고 할 때spec.clusterIP: Invalid value
가 표시될 수 있습니다.applications/ingress/values.yaml
에서 릴리스 값을 덮어쓰고,omitClusterIP: false
이 모든 발생을omitClusterIP: true
로 설정하는 작업이 필요할 수 있습니다. 다른 방법으로는kubectl get services -n gitlab-managed-apps
를 실행하여 이전 명령의 결과에서 수집한ClusterIP
를 덮어쓰는 방법이 있습니다. -
Vault: 이 응용 프로그램은 Helm v2에서 사용한 차트와 Helm v3에서 사용하는 차트에서 중요한 변경점이 있습니다. 따라서 이 클러스터 관리 프로젝트와 통합하는 유일한 방법은 실제로 이 응용 프로그램을 제거하고
applications/vault/values.yaml
에 제안된 차트 버전을 수용하는 것입니다. -
Cert-manager:
- Kubernetes 버전 1.20 이상을 사용하는 사용자의 경우, 지원이 중단된 cert-manager v0.10은 더 이상 유효하지 않기 때문에 업그레이드에는 중요한 변경 사항이 포함된다. 따라서 cert-manager v0.10을 백업 및 제거하는 것을 제안하고 새로운 cert-manager를 설치하는 것을 권장합니다. 이 버전을 설치하려면 프로젝트의 주요 Helmfile인
./helmfile.yaml
에서
applications/cert-manager/helmfile.yaml`을 주석 처리 해제합니다. 이것은 새 버전을 설치하기 위한 파이프라인을 트리거합니다. - Kubernetes 버전이 1.20 미만인 사용자의 경우, 프로젝트의 주요 Helmfile인
./helmfile.yaml
에서
applications/cert-manager-legacy/helmfile.yaml`을 주석 처리 해제하여 v0.10을 계속 사용할 수 있습니다.
Cert-manager v0.10은 Kubernetes를 1.20 이상으로 업그레이드하면 작동하지 않습니다. - Kubernetes 버전 1.20 이상을 사용하는 사용자의 경우, 지원이 중단된 cert-manager v0.10은 더 이상 유효하지 않기 때문에 업그레이드에는 중요한 변경 사항이 포함된다. 따라서 cert-manager v0.10을 백업 및 제거하는 것을 제안하고 새로운 cert-manager를 설치하는 것을 권장합니다. 이 버전을 설치하려면 프로젝트의 주요 Helmfile인
-
-
이전 단계를 따른 후 매뉴얼으로 파이프라인 실행하여 응용 프로그램이 성공적으로 감지되었는지, 설치되었는지, 예상치 못한 업데이트가 있는지를 확인하세요.
일부 주석 합계 및 다음 속성이 예상대로 업데이트되었기를 기대했지만, 여기에 이 속성이 있습니다:
--- heritage: Tiller +++ heritage: Tiller
성공적인 파이프라인을 받은 후에 클러스터 관리 프로젝트로 관리하고 싶은 다른 배포된 앱에 대해 이러한 단계를 반복하세요.
cert-manager v0.10 백업 및 제거
- cert-manager v0.10 데이터를 백업하는 방법에 대한 공식 문서를 참조하세요.
-
applications/cert-manager/helmfile.yaml
파일에서 모든installed: true
발생을installed: false
로 편집하여 cert-manager를 제거합니다. - 다음 명령을 실행하여 남은 리소스를 검색합니다:
kubectl get Issuers,ClusterIssuers,Certificates,CertificateRequests,Orders,Challenges,Secrets,ConfigMaps -n gitlab-managed-apps | grep certmanager
. - 이전 단계에서 찾은 각 리소스에 대해
kubectl delete -n gitlab-managed-apps {ResourceType} {ResourceName}
을 사용하여 해당 리소스를 삭제합니다. 예를 들어,ConfigMap
타입의cert-manager-controller
라는 리소스를 찾았다면 다음과 같이 실행하여 해당 리소스를 삭제합니다:kubectl delete configmap -n gitlab-managed-apps cert-manager-controller
.
비디오 워크스루
다음은 GMA에서 Cluster Management 프로젝트로 이전하는 방법에 대한 예제가 포함된 비디오를 시청할 수 있습니다: