GitLab Managed Apps에서 Cluster Management Projects로 이관(폐기됨)
GitLab Managed Apps는 GitLab 14.0에서 폐기되었으며 사용자가 제어하는 Cluster Management 프로젝트를 선호합니다. 프로젝트를 통해 클러스터 애플리케이션을 관리하면 GitLab Managed Apps보다 더 유연하게 클러스터를 관리할 수 있습니다. 클러스터 관리 프로젝트로 마이그레이션하려면 GitLab Runners가 필요하며 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 문서를 참조하여 Helm v2에서 Helm v3로 마이그레이션하는 방법을 따르고 성공적으로 마이그레이션된 것이 확실한 후 Helm v2 릴리스를 정리합니다.
-
이 단계에서는 이미 Helm v3 릴리스만 존재해야 합니다. 이 프로젝트로 관리하려는 애플리케이션의 경로를 주석 처리된
./helmfile.yaml
에서 언커멘트하세요. 한 번에 모두 언커멘트할 수는 있지만 각 앱에 대해 아래 단계를 별도로 반복하여 프로세스 중에 혼란스럽지 않도록 해야 합니다. -
사용 중인 앱에 배포된 차트 버전과 일치하도록
applications/{app}/helmfiles.yaml
를 편집하세요. GitLab Runner 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
{릴리스}-v{차트_버전}
형식인CHART
열에서 버전을 가져와서./applications/gitlab-runner/helmfile.yaml
의version:
속성을 배포한 버전과 일치하도록 편집하세요. 이는 이 마이그레이션 중에 버전을 업그레이드하는 것을 방지하기 위한 안전한 단계입니다. 위 명령의 릴리스를 다른 네임스페이스에 배포한 경우 위 명령에서gitlab-managed-apps
을 해당 커맨드에 교체하세요. -
앱에 연관된
applications/{app}/values.yaml
를 편집하여 배포된 값을 일치시키세요. 예를 들어, GitLab Runner의 경우:-
다음 명령의 출력을 복사하세요(크기가 큰 경우가 있을 수 있습니다):
helm get values runner -n gitlab-managed-apps -a --output yaml
-
이전 명령의 출력으로
applications/gitlab-runner/values.yaml
를 덮어쓰세요.
이 안전한 단계는 예기치 않은 기본 값이 배포된 값을 덮어쓰지 않도록 보장합니다. 예를 들어, GitLab Runner의
gitlabUrl
또는runnerRegistrationToken
이 실수로 덮어쓰일 수 있습니다. -
-
일부 앱은 특별한 주의가 필요합니다:
-
Ingress: 기존의 차트 문제로 인해
./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 프로젝트에서 이전하는 방법.