GitLab Managed Apps에서 Cluster Management Projects로 이전(deprecated)
GitLab Managed Apps는 GitLab 14.0에서 사용이 중단되었으며, 사용자가 제어하는 Cluster Management 프로젝트를 선호합니다. 프로젝트를 통해 클러스터 응용 프로그램을 관리하면 GitLab Managed Apps보다 더 많은 유연성을 제공받을 수 있습니다. 클러스터 관리 프로젝트로 마이그레이션하려면 GitLab 러너가 준비되어 있어야 하며 Helm에 익숙해져 있어야 합니다.
클러스터 관리 프로젝트로 이전하기
GitLab Managed Apps에서 Cluster Management Project로 마이그레이션하려면 아래 단계를 따르세요. 또한 예시와 함께 보는 비디오 안내도 확인하세요.
- Cluster Management Project 템플릿을 기반으로 하는 새 프로젝트를 생성합니다.
- 클러스터 내이 프로젝트를 위해 에이전트를 설치합니다.
-
.gitlab-ci.yml
의 지침에 따라KUBE_CONTEXT
CI/CD 변수를 새로 설치된 에이전트의 컨텍스트로 설정합니다. -
미리 구성된
.gitlab-ci.yml
파일을 사용하여 Helm v2 릴리스로 배포된 애플리케이션을 감지합니다:-
기본 GitLab Managed Apps 네임스페이스를 덮어쓰기 했을 경우,
.gitlab-ci.yml
을 수정하고 스크립트가 올바른 네임스페이스를 인수로 받는지 확인하세요:script: - gl-fail-if-helm2-releases-exist <your_custom_namespace>
-
기본 이름(
gitlab-managed-apps
)을 유지했을 경우, 스크립트가 이미 설정되어 있습니다.
두 방법 모두로 파이프라인을 수동으로 실행하고
detect-helm2-releases
작업 로그를 확인하여 Helm v2 릴리스가 있는지, 있으면 어떤 것들인지 확인하세요. -
-
Helm v2 릴리스가 없으면 이 단계를 건너뜁니다. 그렇지 않으면, 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
{release}-v{chart_version}
형식으로 되어 있는CHART
열에서 버전을 가져와서./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
이 실수로 덮어써지는 것을 방지할 수 있습니다. -
-
특별한 주의가 필요한 앱이 있습니다:
-
인그레스: 기존 차트 문제로 인해
./gl-helmfile
명령을 실행할 때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에서 사용하는 차트로의 중대한 변경이 도입되었습니다. 따라서 Cluster Management Project와 통합하는 유일한 방법은 실제로 이 앱을 제거하고
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 (
-
-
이전 단계를 모두 따라간 후 파이프라인을 수동으로 실행하여
apply
작업 로그를 확인하여 애플리케이션이 성공적으로 감지되었는지, 설치되었는지 및 예상치 못한 업데이트가 있는지 확인하세요.일부 어노테이션 체크섬이 업데이트되었을 것으로 예상되며, 다음 속성도 업데이트될 것으로 예상됩니다:
--- heritage: Tiller +++ heritage: Tiller
성공적인 파이프라인을 받게 되면 Cluster Management Project로 관리하려는 다른 배포된 앱에 대해 이러한 단계를 반복하세요.
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에서 클러스터 관리 프로젝트로 이주하는 방법에 대한 예제를 확인할 수 있습니다:
- 새로운 클러스터 관리 프로젝트를 사용하여 처음부터 이주하는 방법. 또한 Helm v2 앱 이주도 다룹니다.
- 기존 GitLab 관리 앱 CI/CD 프로젝트에서 이주하는 방법.