GitLab은 하나의 플랫폼 안에서 DevSecOps 라이프사이클의 모든 단계를 아우르는 광범위한 기능을 제공합니다. GitLab은 이러한 장점을 극대화하기 위해 다양한 기능 확장, GitLab과 외부 도구의 손쉬운 연동을 지원하는데요. 오늘 살펴볼 ‘Kubernetes 대시보드’ 기능이 그 예입니다.

Kubernetes 대시보드는 GitLab에서도 Kubernetes 환경 개발과 운영을 효율화하도록 돕습니다. 이 대시보드를 사용하면, 추가 도구 설치와 별도 접속 정보 없이 GitLab 안에서 클러스터 상태를 쉽게 모니터링할 수 있습니다. 또 로그 스트리밍 기능으로 Pod의 실시간 로그도 간편하게 확인할 수 있습니다.

GitLab의 Kubernetes 대시보드는 별도 모니터링 도구 설치와 컨텍스트 스위칭 부담을 크게 줄여줍니다. 이로써 엔지니어의 DevSecOps 업무 환경을 효율적이고, 편리하게 개선하죠. 이 글에서는 Kubernetes 대시보드의 주요 기능과 대시보드 구성 방법을 단계별로 살펴보겠습니다.

Kubernetes 대시보드 주요 기능

GitLab의 Kubernetes 대시보드는 직관적인 시각적 인터페이스로 클러스터의 상태를 쉽게 파악하도록 지원합니다. 이 대시보드는 ‘CI/CD 또는 GitOps로 배포했는지’ 여부와 관계없이 연결된 모든 Kubernetes 클러스터에서 작동합니다. 이는 각 프로젝트의 Environment 페이지에 통합됐으며, Environment와 관련된 리소스를 보여줍니다. 아래 세 가지 유형의 Kubernetes 리소스를 사용할 수 있습니다.

  • Kubernetes namespace로 필터링된 Pod 정보
  • Service 정보
  • FluxCD 리소스 정보

GitLab은 이러한 리소스의 이름, 상태, 생성 시간 등 정보를 Kubernetes 대시보드로 보여줍니다. 이는 Kubernetes 클러스터에서 실행할 때 kubectl 명령이 표시하는 것과 유사하게 나타납니다. 각 리소스를 클릭하면 자세한 내용을 확인할 수 있습니다.

우측 메뉴 바에는 레이블, 어노테이션, 상태, 사양 정보 목록이 ‘읽기 전용 YAML 코드 블록’으로 표시됩니다. 제공받은 정보는 배포 상태를 시각화하고, 문제를 발견하며, 결함이 있는 배포를 바로 디버깅하는 데 도움이 됩니다.

다음은 GitLab의 Kubernetes 대시보드 화면입니다.

  1. 특정 Namespace의 Pod, Service 목록, 상태 실시간 확인 화면

    출처=GitLab | 인포그랩 GitLab
    출처=GitLab

  2. 특정 Pod의 현재 구성된 매니페스트 정보 확인 화면 - Kind, Labels, Spec, Events

    2024-10-02-gitlab-kubernetes-1 | 인포그랩 GitLab
  3. 특정 Pod의 실시간 로그 정보 확인 화면

    2024-10-02-gitlab-kubernetes-2 | 인포그랩 GitLab

Kubernetes 대시보드 구성하기

GitLab의 Kubernetes 대시보드 기능은 현재(2024년 10월 1일 기준) 베타 버전입니다. Free, Premium, Ultimate 이용자 누구나 이 기능을 사용할 수 있고요. Kubernetes 대시보드는 GitLab.com(SaaS), Self-managed(자체 관리형), GitLab Dedicated에 모두 지원됩니다.

GitLab에서 Kubernetes 대시보드를 활성화하는 방법은 아래와 같습니다.

  1. 사전 필수 조건

    GitLab과 Kubernetes를 연동하려면, GitLab에서 제공하는 Agent를 ‘연결할 Kubernetes’에 설치해야 합니다. 또 user_access 설정에 특정 프로젝트나 상위 그룹 접근 권한을 부여해야 합니다.

    두 서비스가 정상적으로 연동되면, GitLab에서 특정 프로젝트의 Operate > Kubernetes clusters를 클릭할 때 아래와 같이 접근 가능한 Agent 목록이 나오는 걸 볼 수 있습니다.

    2024-10-02-gitlab-kubernetes-3 | 인포그랩 GitLab
  2. Environment 생성 또는 편집

    GitLab의 Environment는 배포 추적, 관리를 돕는 기능입니다. 이 기능으로 Kubernetes 대시보드도 확인할 수 있습니다.

    Environment를 생성하려면, 아래와 같이 GitLab에서 연동할 프로젝트의 좌측 메뉴 바에서 Operate > Environments를 클릭하고, Create an environment 버튼을 누릅니다.

    기존에 생성한 Environments에서 연동하려면, Edit 버튼을 클릭합니다.

    2024-10-02-gitlab-kubernetes-4 | 인포그랩 GitLab
  3. Kubernetes 대시보드 구성

    Environment에서 Kubernetes 대시보드를 활성화하려면, GitLab의 New environment 페이지에 아래와 같이 NameGitLab agent, Kubernetes namespace 정보를 입력합니다. GitOps 도구 중 Flux를 사용하면, Select Flux resource에 Flux resource 이름을 입력합니다. 입력 칸을 모두 채운 뒤, Save 버튼을 누릅니다.

    • Name: ‘GitLab’ 입력
    • GitLab agent: 이전에 Project에서 접근 가능한 Agent 이름 입력
    • Kubernetes namespace: 해당 Environments에 연동할 Kubernetes namespace 이름 입력
    2024-10-02-gitlab-kubernetes-5 | 인포그랩 GitLab
  4. Kubernetes 대시보드 확인

    GitLab에서 Operate > Environments를 클릭하면, 입력한 Namespace에 배포된 자원 목록을 아래와 같이 실시간 확인할 수 있습니다.

    2024-10-02-gitlab-kubernetes-6 | 인포그랩 GitLab

맺음말

GitLab은 "One Tool DevOps"라는 철학을 바탕으로 단일 플랫폼에서 개발부터 배포까지 모든 과정을 관리하고 통합하는 기능을 제공합니다. 또 Git, Pages, Container, Package, Observability, Disaster Recovery, 인공지능(AI) 등 다양한 기능과 여러 서드파티 도구 연동을 지원합니다.

GitLab은 클라우드 네이티브 환경의 보편화 트렌드를 고려해 Kubernetes 대시보드를 개발했습니다. 이 대시보드는 통합된 가시성에 기반해 DevSecOps 프로세스를 간소화하고 업무 효율성을 높여줍니다. GitLab은 이 기능을 확대해 Cluster 대시보드도 개발하고 있습니다. 저는 Kubernetes 대시보드 기능이 업그레이드되면, 그 내용을 소개하는 글로 또 찾아뵙겠습니다.

참고 자료

  1. “Dashboard for Kubernetes”, GitLab, https://docs.gitlab.com/ee/ci/environments/kubernetes_dashboard.html
  2. “Grant Users Kubernetes access”, GitLab, https://docs.gitlab.com/ee/user/clusters/agent/user_access.html
  3. Daniel Helfand, “How to stream logs through the GitLab Dashboard for Kubernetes”, GitLab, 2024.8.19, https://about.gitlab.com/blog/2024/08/19/how-to-stream-logs-through-the-gitlab-dashboard-for-kubernetes/
  4. Anna Vovchenko, “Kubernetes overview: Operate cluster data on the frontend”, GitLab, 2024.6.20, https://about.gitlab.com/blog/2024/06/20/kubernetes-overview-operate-cluster-data-on-the-frontend/

완벽한 GitLab 구축부터 성공적인 DevOps 도입까지! 인포그랩과 DevOps 라이프사이클을 함께 하세요.