InfoGrab Docs

Kubernetes 클러스터를 GitLab에 연결하는 방법

요약

이 페이지는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 방법을 안내합니다. 완료하면 다음을 수행할 수 있게 됩니다: 이 튜토리얼을 완료하기 전에 다음이 있는지 확인합니다: kubectl로 로컬에서 접근할 수 있는 Kubernetes 클러스터.

이 페이지는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 방법을 안내합니다. GitLab Kubernetes 에이전트, 풀 기반 배포, 또는 Flux를 처음 사용하는 경우 여기서 시작해야 합니다.

완료하면 다음을 수행할 수 있게 됩니다:

  • 실시간 Kubernetes 대시보드로 Kubernetes 클러스터 상태 보기.
  • Flux로 클러스터에 업데이트 배포.
  • GitLab CI/CD로 클러스터에 업데이트 배포.

시작하기 전에#

이 튜토리얼을 완료하기 전에 다음이 있는지 확인합니다:

  • kubectl로 로컬에서 접근할 수 있는 Kubernetes 클러스터. GitLab이 지원하는 Kubernetes 버전을 확인하려면 GitLab 기능을 위한 지원되는 Kubernetes 버전을 참조합니다.

    다음을 실행하여 모든 것이 올바르게 구성되었는지 확인할 수 있습니다:

    kubectl cluster-info
    

Flux 설치 및 구성#

Flux는 GitOps 배포(풀 기반 배포라고도 함)를 위해 권장되는 도구입니다. Flux는 성숙한 CNCF 프로젝트입니다.

Flux를 설치하려면:

다음을 실행하여 Flux CLI가 올바르게 설치되었는지 확인합니다:

flux -v

개인 액세스 토큰 만들기#

Flux CLI로 인증하려면 api 범위를 가진 개인 액세스 토큰을 만듭니다:

  1. 오른쪽 상단 모서리에서 아바타를 선택합니다.
  2. 프로필 편집을 선택합니다.
  3. 왼쪽 사이드바에서 액세스 > 개인 액세스 토큰을 선택합니다.
  4. 토큰의 이름과 선택적 만료 날짜를 입력합니다.
  5. api 범위를 선택합니다.
  6. 개인 액세스 토큰 만들기를 선택합니다.

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 구성이 저장되는 폴더의 파일 경로.

부트스트랩 스크립트는 다음을 수행합니다:

  1. 배포 토큰을 만들고 Kubernetes secret으로 저장합니다.
  2. --repository 인수로 지정된 프로젝트가 없으면 빈 GitLab 프로젝트를 만듭니다.
  3. --path 인수로 지정된 폴더에 프로젝트용 Flux 정의 파일을 생성합니다.
  4. --branch 인수로 지정된 브랜치에 정의 파일을 커밋합니다.
  5. 정의 파일을 클러스터에 적용합니다.

스크립트를 실행한 후 Flux는 자체와 GitLab 프로젝트 및 경로에 추가하는 다른 리소스를 관리할 준비가 됩니다.

이 튜토리얼의 나머지 부분에서는 경로가 clusters/testing이고 프로젝트가 my-group/optional-subgroup/my-repository 아래에 있다고 가정합니다.

에이전트 연결 설정#

클러스터를 연결하려면 Kubernetes용 GitLab 에이전트를 설치해야 합니다. GitLab CLI(glab)로 에이전트를 부트스트랩하여 이 작업을 수행할 수 있습니다.

  1. GitLab CLI 설치.

    GitLab CLI가 사용 가능한지 확인하려면 다음을 실행합니다:

    glab version
    
  2. GitLab 인스턴스에 glab 인증.

  3. Flux를 부트스트랩한 리포지터리에서 glab cluster agent bootstrap 명령어를 실행합니다:

    glab cluster agent bootstrap --manifest-path clusters/testing testing
    

기본적으로 이 명령어는 다음을 수행합니다:

  1. testing을 이름으로 에이전트를 등록합니다.
  2. 에이전트를 구성합니다.
  3. 에이전트에 대한 대시보드가 있는 testing이라는 환경을 구성합니다.
  4. 에이전트 토큰을 만듭니다.
  5. 클러스터에서 에이전트 토큰으로 Kubernetes 시크릿을 만듭니다.
  6. Git 리포지터리에 Flux Helm 리소스를 커밋합니다.
  7. Flux 조정을 트리거합니다.

에이전트 구성에 대한 자세한 내용은 Kubernetes용 에이전트 설치를 참조합니다.

Kubernetes 대시보드 확인#

glab cluster agent bootstrap이 GitLab 내에 환경을 만들고 대시보드를 구성했습니다.

대시보드를 보려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 운영 > 환경을 선택합니다.
  3. 환경을 선택합니다. 예: flux-system/gitlab-agent.
  4. Kubernetes 개요 탭을 선택합니다.

배포 보안#

지금까지 .gitlab/agents/testing/config.yaml 파일을 사용하여 에이전트를 배포했습니다. 이 구성은 에이전트 배포를 위해 구성된 서비스 계정을 사용한 사용자 액세스를 활성화합니다. 사용자 액세스는 Kubernetes 대시보드 및 로컬 액세스에 사용됩니다.

배포를 안전하게 유지하려면 GitLab 사용자를 가장하도록 이 설정을 변경해야 합니다. 이 경우 일반 Kubernetes 역할 기반 액세스 제어(RBAC)를 통해 클러스터 리소스에 대한 액세스를 관리할 수 있습니다.

사용자 가장을 활성화하려면:

  1. .gitlab/agents/testing/config.yaml 파일에서 user_access.access_as.agent: {}user_access.access_as.user: {}로 교체합니다.

  2. 구성된 Kubernetes 대시보드로 이동합니다. 액세스가 제한되면 대시보드에 오류 메시지가 표시됩니다.

  3. 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
    
  4. 몇 초 동안 기다려 Flux가 추가된 매니페스트를 적용한 다음 Kubernetes 대시보드를 다시 확인합니다. 모든 GitLab 사용자에게 읽기 액세스를 부여하는 배포된 클러스터 역할 바인딩 덕분에 대시보드가 정상으로 돌아와야 합니다.

사용자 액세스에 대한 자세한 내용은 사용자에게 Kubernetes 액세스 부여를 참조합니다.

최신 상태 유지#

설치 후 Flux 및 agentk를 업그레이드해야 할 수 있습니다.

이를 위해:

  • flux bootstrap gitlabglab cluster agent bootstrap 명령어를 다시 실행합니다.

다음 단계#

에이전트를 등록하고 Flux 매니페스트를 저장한 프로젝트에서 클러스터로 직접 배포할 수 있습니다. 에이전트는 멀티 테넌시를 지원하도록 설계되었으며, 구성된 에이전트 및 Flux 설치를 통해 다른 프로젝트와 그룹으로 구성을 확장할 수 있습니다.

후속 튜토리얼인 Kubernetes에 배포 시작을 진행하는 것을 고려해 보세요. GitLab에서 Kubernetes 사용에 대한 자세한 내용은 다음을 참조하세요:

Kubernetes 클러스터를 GitLab에 연결하는 방법

Tier: Premium, Ultimate
원문 보기
요약

이 페이지는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 방법을 안내합니다. 완료하면 다음을 수행할 수 있게 됩니다: 이 튜토리얼을 완료하기 전에 다음이 있는지 확인합니다: kubectl로 로컬에서 접근할 수 있는 Kubernetes 클러스터.

이 페이지는 단일 프로젝트에서 기본적인 Kubernetes 통합을 설정하는 방법을 안내합니다. GitLab Kubernetes 에이전트, 풀 기반 배포, 또는 Flux를 처음 사용하는 경우 여기서 시작해야 합니다.

완료하면 다음을 수행할 수 있게 됩니다:

  • 실시간 Kubernetes 대시보드로 Kubernetes 클러스터 상태 보기.
  • Flux로 클러스터에 업데이트 배포.
  • GitLab CI/CD로 클러스터에 업데이트 배포.

시작하기 전에#

이 튜토리얼을 완료하기 전에 다음이 있는지 확인합니다:

  • kubectl로 로컬에서 접근할 수 있는 Kubernetes 클러스터. GitLab이 지원하는 Kubernetes 버전을 확인하려면 GitLab 기능을 위한 지원되는 Kubernetes 버전을 참조합니다.

    다음을 실행하여 모든 것이 올바르게 구성되었는지 확인할 수 있습니다:

    kubectl cluster-info
    

Flux 설치 및 구성#

Flux는 GitOps 배포(풀 기반 배포라고도 함)를 위해 권장되는 도구입니다. Flux는 성숙한 CNCF 프로젝트입니다.

Flux를 설치하려면:

다음을 실행하여 Flux CLI가 올바르게 설치되었는지 확인합니다:

flux -v

개인 액세스 토큰 만들기#

Flux CLI로 인증하려면 api 범위를 가진 개인 액세스 토큰을 만듭니다:

  1. 오른쪽 상단 모서리에서 아바타를 선택합니다.
  2. 프로필 편집을 선택합니다.
  3. 왼쪽 사이드바에서 액세스 > 개인 액세스 토큰을 선택합니다.
  4. 토큰의 이름과 선택적 만료 날짜를 입력합니다.
  5. api 범위를 선택합니다.
  6. 개인 액세스 토큰 만들기를 선택합니다.

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 구성이 저장되는 폴더의 파일 경로.

부트스트랩 스크립트는 다음을 수행합니다:

  1. 배포 토큰을 만들고 Kubernetes secret으로 저장합니다.
  2. --repository 인수로 지정된 프로젝트가 없으면 빈 GitLab 프로젝트를 만듭니다.
  3. --path 인수로 지정된 폴더에 프로젝트용 Flux 정의 파일을 생성합니다.
  4. --branch 인수로 지정된 브랜치에 정의 파일을 커밋합니다.
  5. 정의 파일을 클러스터에 적용합니다.

스크립트를 실행한 후 Flux는 자체와 GitLab 프로젝트 및 경로에 추가하는 다른 리소스를 관리할 준비가 됩니다.

이 튜토리얼의 나머지 부분에서는 경로가 clusters/testing이고 프로젝트가 my-group/optional-subgroup/my-repository 아래에 있다고 가정합니다.

에이전트 연결 설정#

클러스터를 연결하려면 Kubernetes용 GitLab 에이전트를 설치해야 합니다. GitLab CLI(glab)로 에이전트를 부트스트랩하여 이 작업을 수행할 수 있습니다.

  1. GitLab CLI 설치.

    GitLab CLI가 사용 가능한지 확인하려면 다음을 실행합니다:

    glab version
    
  2. GitLab 인스턴스에 glab 인증.

  3. Flux를 부트스트랩한 리포지터리에서 glab cluster agent bootstrap 명령어를 실행합니다:

    glab cluster agent bootstrap --manifest-path clusters/testing testing
    

기본적으로 이 명령어는 다음을 수행합니다:

  1. testing을 이름으로 에이전트를 등록합니다.
  2. 에이전트를 구성합니다.
  3. 에이전트에 대한 대시보드가 있는 testing이라는 환경을 구성합니다.
  4. 에이전트 토큰을 만듭니다.
  5. 클러스터에서 에이전트 토큰으로 Kubernetes 시크릿을 만듭니다.
  6. Git 리포지터리에 Flux Helm 리소스를 커밋합니다.
  7. Flux 조정을 트리거합니다.

에이전트 구성에 대한 자세한 내용은 Kubernetes용 에이전트 설치를 참조합니다.

Kubernetes 대시보드 확인#

glab cluster agent bootstrap이 GitLab 내에 환경을 만들고 대시보드를 구성했습니다.

대시보드를 보려면:

  1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 왼쪽 사이드바에서 운영 > 환경을 선택합니다.
  3. 환경을 선택합니다. 예: flux-system/gitlab-agent.
  4. Kubernetes 개요 탭을 선택합니다.

배포 보안#

지금까지 .gitlab/agents/testing/config.yaml 파일을 사용하여 에이전트를 배포했습니다. 이 구성은 에이전트 배포를 위해 구성된 서비스 계정을 사용한 사용자 액세스를 활성화합니다. 사용자 액세스는 Kubernetes 대시보드 및 로컬 액세스에 사용됩니다.

배포를 안전하게 유지하려면 GitLab 사용자를 가장하도록 이 설정을 변경해야 합니다. 이 경우 일반 Kubernetes 역할 기반 액세스 제어(RBAC)를 통해 클러스터 리소스에 대한 액세스를 관리할 수 있습니다.

사용자 가장을 활성화하려면:

  1. .gitlab/agents/testing/config.yaml 파일에서 user_access.access_as.agent: {}user_access.access_as.user: {}로 교체합니다.

  2. 구성된 Kubernetes 대시보드로 이동합니다. 액세스가 제한되면 대시보드에 오류 메시지가 표시됩니다.

  3. 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
    
  4. 몇 초 동안 기다려 Flux가 추가된 매니페스트를 적용한 다음 Kubernetes 대시보드를 다시 확인합니다. 모든 GitLab 사용자에게 읽기 액세스를 부여하는 배포된 클러스터 역할 바인딩 덕분에 대시보드가 정상으로 돌아와야 합니다.

사용자 액세스에 대한 자세한 내용은 사용자에게 Kubernetes 액세스 부여를 참조합니다.

최신 상태 유지#

설치 후 Flux 및 agentk를 업그레이드해야 할 수 있습니다.

이를 위해:

  • flux bootstrap gitlabglab cluster agent bootstrap 명령어를 다시 실행합니다.

다음 단계#

에이전트를 등록하고 Flux 매니페스트를 저장한 프로젝트에서 클러스터로 직접 배포할 수 있습니다. 에이전트는 멀티 테넌시를 지원하도록 설계되었으며, 구성된 에이전트 및 Flux 설치를 통해 다른 프로젝트와 그룹으로 구성을 확장할 수 있습니다.

후속 튜토리얼인 Kubernetes에 배포 시작을 진행하는 것을 고려해 보세요. GitLab에서 Kubernetes 사용에 대한 자세한 내용은 다음을 참조하세요: