Kubernetes 클러스터를 GitLab에 연결하는 방법
GitLab v19.5요약
이 페이지에서는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 과정을 안내합니다. 이 과정을 마치면 다음을 할 수 있습니다. 이 튜토리얼을 진행하기 전에 다음을 준비합니다. 로컬에서 kubectl로 접근할 수 있는 Kubernetes 클러스터.
이 페이지에서는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 과정을 안내합니다. GitLab agent for Kubernetes, 풀 기반 배포 또는 Flux를 처음 사용한다면 여기에서 시작합니다.
이 과정을 마치면 다음을 할 수 있습니다.
- 실시간 Kubernetes 대시보드로 Kubernetes 클러스터의 상태를 확인합니다.
- Flux로 클러스터에 업데이트를 배포합니다.
- GitLab CI/CD로 클러스터에 업데이트를 배포합니다.
시작하기 전에#
이 튜토리얼을 진행하기 전에 다음을 준비합니다.
-
로컬에서
kubectl로 접근할 수 있는 Kubernetes 클러스터. GitLab 이 지원하는 Kubernetes 버전은 GitLab 기능에 대해 지원되는 Kubernetes 버전을 참고합니다.다음 명령을 실행하여 모든 설정이 올바른지 확인할 수 있습니다.
kubectl cluster-info
Flux 설치 및 구성#
Flux는 GitOps 배포(풀 기반 배포라고도 함)에 권장되는 도구입니다. Flux는 성숙한 CNCF 프로젝트입니다.
Flux를 설치하려면 다음 단계를 수행합니다.
- Flux 문서의 Flux CLI 설치 단계를 완료합니다.
다음 명령을 실행하여 Flux CLI가 올바르게 설치되었는지 확인합니다.
flux -v
개인 액세스 토큰 만들기#
Flux CLI로 인증하려면 api 범위를 가진 개인 액세스 토큰을
만듭니다.
- 오른쪽 위 모서리에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- 왼쪽 사이드바에서 Access > Personal access tokens를 선택합니다.
- 토큰의 이름과 선택 사항인 만료 날짜를 입력합니다.
api범위를 선택합니다.- Create personal access token을 선택합니다.
api 범위와 maintainer 권한을 가진 프로젝트 액세스 토큰 또는 그룹 액세스 토큰을 사용할 수도 있습니다.
Flux 부트스트랩#
이 섹션에서는 flux bootstrap 명령으로
비어 있는 GitLab 리포지터리에 Flux를 부트스트랩합니다.
Flux 설치를 부트스트랩하려면 다음 단계를 수행합니다.
-
flux bootstrap gitlab명령을 실행합니다. 예시는 다음과 같습니다.flux bootstrap gitlab \ --hostname=gitlab.example.org \ --owner=my-group/optional-subgroup \ --repository=my-repository \ --branch=main \ --path=clusters/testing \ --deploy-token-auth
bootstrap의 인수는 다음과 같습니다.
| 인수 | 설명 |
|---|---|
hostname |
GitLab 인스턴스의 호스트명. |
owner |
Flux 리포지터리를 포함하는 GitLab 그룹. |
repository |
Flux 리포지터리를 포함하는 GitLab 프로젝트. |
branch |
변경 사항이 커밋되는 Git 브랜치. |
path |
Flux 구성이 저장되는 폴더의 파일 경로. |
부트스트랩 스크립트는 다음을 수행합니다.
- 배포 토큰을 만들고 Kubernetes
secret으로 저장합니다. --repository인수로 지정한 프로젝트가 없으면 비어 있는 GitLab 프로젝트를 만듭니다.--path인수로 지정한 폴더에 프로젝트용 Flux 정의 파일을 생성합니다.--branch인수로 지정한 브랜치에 정의 파일을 커밋합니다.- 정의 파일을 클러스터에 적용합니다.
스크립트를 실행하고 나면 Flux는 자기 자신과 해당 GitLab 프로젝트 및 경로에 추가하는 다른 리소스를 관리할 준비가 됩니다.
이 튜토리얼의 나머지 부분에서는 경로가 clusters/testing 이고 프로젝트가 my-group/optional-subgroup/my-repository 아래에 있다고 가정합니다.
에이전트 연결 설정#
클러스터를 연결하려면 GitLab agent for Kubernetes를 설치해야 합니다.
GitLab CLI(glab)로 에이전트를 부트스트랩하여 설치할 수 있습니다.
-
GitLab CLI를 사용할 수 있는지 확인하려면 다음을 실행합니다.
glab version -
GitLab 인스턴스에
glab을 인증합니다. -
Flux를 부트스트랩한 리포지터리에서
glab cluster agent bootstrap명령을 실행합니다.glab cluster agent bootstrap --manifest-path clusters/testing testing
이 명령은 기본적으로 다음을 수행합니다.
testing이라는 이름으로 에이전트를 등록합니다.- 에이전트를 구성합니다.
- 에이전트용 대시보드가 포함된
testing환경을 구성합니다. - 에이전트 토큰을 만듭니다.
- 클러스터에 에이전트 토큰이 담긴 Kubernetes 시크릿을 만듭니다.
- Flux Helm 리소스를 Git 리포지터리에 커밋합니다.
- Flux 재조정을 트리거합니다.
에이전트 구성에 대한 자세한 내용은 Kubernetes 용 에이전트 설치를 참고합니다.
Kubernetes 대시보드 확인#
glab cluster agent bootstrap은 GitLab 안에 환경을 만들고 대시보드를 구성했습니다.
대시보드를 보려면 다음 단계를 수행합니다.
- 상단 표시줄에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Operate > Environments를 선택합니다.
- 환경을 선택합니다. 예를 들면
flux-system/gitlab-agent입니다. - Kubernetes overview 탭을 선택합니다.
배포 보안#
여기까지 .gitlab/agents/testing/config.yaml 파일을 사용하여 에이전트를 배포했습니다.
이 구성은 에이전트 배포에 설정된 서비스 계정을 사용하여 사용자 접근을 허용합니다. 사용자 접근은 Kubernetes 대시보드와 로컬 접근에 사용됩니다.
배포를 안전하게 유지하려면 이 설정을 GitLab 사용자를 가장하도록 변경합니다. 이 경우 일반적인 Kubernetes 역할 기반 접근 제어(RBAC)를 통해 클러스터 리소스에 대한 접근을 관리할 수 있습니다.
사용자 가장을 활성화하려면 다음 단계를 수행합니다.
-
.gitlab/agents/testing/config.yaml파일에서user_access.access_as.agent: {}를user_access.access_as.user: {}로 바꿉니다. -
구성한 Kubernetes 대시보드로 이동합니다. 접근이 제한되면 대시보드에 오류 메시지가 표시됩니다.
-
clusters/testing/gitlab-user-read.yaml에 다음 코드를 추가합니다.apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: gitlab-user-view roleRef: name: view kind: ClusterRole apiGroup: rbac.authorization.k8s.io subjects: - name: gitlab:user kind: Group -
Flux가 추가된 매니페스트를 적용하도록 몇 초 기다린 다음 Kubernetes 대시보드를 다시 확인합니다. 모든 GitLab 사용자에게 읽기 접근을 부여하는 클러스터 역할 바인딩이 배포되어 대시보드가 정상 상태로 돌아옵니다.
사용자 접근에 대한 자세한 내용은 사용자에게 Kubernetes 접근 권한 부여를 참고합니다.
최신 상태 유지#
설치 후 Flux와 agentk를 업그레이드해야 할 수 있습니다.
업그레이드하려면 다음 단계를 수행합니다.
flux bootstrap gitlab및glab cluster agent bootstrap명령을 다시 실행합니다.
다음 단계#
에이전트를 등록하고 Flux 매니페스트를 저장한 프로젝트에서 클러스터로 직접 배포할 수 있습니다. 에이전트는 멀티테넌시를 지원하도록 설계되었으며, 구성한 에이전트와 Flux 설치를 다른 프로젝트와 그룹으로 확장할 수 있습니다.
이어지는 튜토리얼인 Kubernetes 배포 시작하기도 함께 진행해 보기 바랍니다. GitLab에서 Kubernetes를 사용하는 방법에 대한 자세한 내용은 다음을 참고합니다.
- Kubernetes와의 GitLab 통합 사용 모범 사례
- 운영 컨테이너 스캐닝에 에이전트 사용
- 엔지니어를 위한 원격 워크스페이스 제공