Jump to section

멀티클라우드 GitOps란?

URL 복사

GitOps는 워크플로우를 유도하고 클라우드 네이티브 애플리케이션에 대한 지속적 배포(CD)를 구현하도록 지원하는 원칙 세트입니다. 이는 이전에 수동으로 이루어지던 프로세스에 자동화를 도입하여 클러스터 구성과 애플리케이션 배포를 관리하는 데 도움을 줍니다. 예를 들어, GitOps는 멀티 클러스터 쿠버네티스 환경 전반에서 Red Hat® OpenShift® Container Platform 클러스터를 관리하는 데 도움이 될 수 있습니다. GitOps는 복잡성 수준과 관계없이 배포를 자동화하여 애플리케이션 워크플로우를 더욱 효율적으로 만듭니다.

GitOps는 새로운 애플리케이션을 배포하거나 기존 애플리케이션을 업데이트하는 데 도움이 됩니다. 사용자가 리포지토리를 업데이트하면, GitOps 워크플로우가 나머지 모든 작업을 자동화할 수 있습니다. 

특히 GitOps는 다음을 지원합니다.

  • 퍼블릭 및 프라이빗 클라우드 전반의 하이브리드와 멀티클라우드 배포 관리
  • 클러스터 간 거버넌스 및 애플리케이션 라이프사이클 관리
  • 배포 전반에서 안전한 비밀 정보 관리

이러한 기능은 워크로드가 퍼블릭 클라우드, 프라이빗 클라우드, 심지어는 온프레미스 환경 전반에서 이동할 때 발생하는 일관성, 보안, 협업에 대한 필요성과 같이 멀티클라우드 접근 방식에 따르는 여러 문제점을 완화하는 데 도움이 됩니다. 

GitOps에서 Git 리포지토리는 시스템과 애플리케이션 구성을 위한 단일 정보 소스입니다. 또한 환경에 대한 인프라의 선언적 설명으로 구성되며, Argo CD와 같이 GitOps 툴링으로 처리되는 자동화된 프로세스와 함께 작동합니다. 이와 같은 자동화는 환경의 실제 상태를 원하는 상태와 일치시킵니다. 또한 Git 기록이 변경 추적 기능을 제공하기 때문에 리포지토리를 사용하여 시스템 상태에 대한 변경 사항 목록을 확인할 수 있습니다. 

또한 인프라와 구성을 코드로 저장하면 확산을 줄이는 데 도움이 됩니다. Git 리포지토리 내에 클러스터와 애플리케이션의 구성을 코드로 저장할 수 있습니다. 

조직은 안정적이면서도 간편하고 안전하게 오픈 하이브리드 클라우드에서 애플리케이션을 개발, 배포, 운영해야 합니다. 이를 위해 멀티클라우드 배포를 포함한 하이브리드 전략이 필요합니다. 

멀티클라우드 접근 방식에는 상당한 어려움이 있습니다. 예를 들어, 다양한 벤더가 제공하는 다양한 툴이 서로 연동되지 않을 수 있습니다. 그 결과, 워크로드 마이그레이션은 비용이 많이 들고 어려울 수 있습니다. 이식성 부족 또한 보안 리스크와 데이터 프라이버시 우려를 높일 수 있습니다. 

하지만 쿠버네티스는 이러한 문제점을 상당 부분 해결했습니다. 쿠버네티스를 활용하면 온프레미스를 포함한 다양한 클라우드 환경에서 다수의 클러스터를 실행할 수 있습니다. 워크로드는 동일한 마이그레이션을 반복하거나 보안 문제를 겪지 않고도 환경 전반에서 원활하게 이동할 수 있습니다. 

이러한 배포에서 워크로드는 프라이빗 또는 퍼블릭 클라우드를 포함한 여러 클라우드와 클러스터에서 실행할 수 있습니다. 앞서 언급한 문제들을 완화하는 이러한 전략에는 코드형 인프라 접근 방식이 필요합니다. 즉, 현대적인 멀티클라우드 전략에는 GitOps가 필요합니다. 

위에서 설명한 대로 GitOps는 Git 리포지토리를 단일 정보 소스로 사용하여 코드형 인프라를 제공합니다. 제출된 코드는 먼저 지속적 통합(CI) 프로세스를 거치고, 지속적 제공(CD) 프로세스는 요구 사항을 점검하고 적용합니다. 코드의 모든 변경 사항은 추적되어 익숙한 버전 관리와 수정 기능을 제공합니다. 

이런 식으로 GitOps는 개발 프로세스를 가속화하기 위해 인프라 팀 간의 협업을 지원합니다. 비용이 많이 들고 인적 오류의 위험이 있는 수동 프로세스와 달리, 이는 자동화된 프로세스를 통해 멀티클라우드 접근 방식에 일관성을 제공합니다. 

따라서 멀티클라우드 접근 방식을 구현하는 조직은 환경 전반에서 일관성과 보안이 필요합니다. Red Hat OpenShift GitOps와 같은 GitOps 솔루션이 필요합니다.

Red Hat OpenShift GitOps는 사용자를 대신해 Argo CD 인스턴스를 설치하고 구성하는 오퍼레이터입니다. 인프라 구성과 애플리케이션 배포를 관리하여 이와 같은 구성 리포지토리를 중심으로 배포 프로세스를 구성합니다. 다음과 같은 두 개 이상의 리포지토리가 항상 이 프로세스의 중심 역할을 합니다.

  • 소스 코드를 포함하는 애플리케이션 리포지토리
  • 원하는 애플리케이션 상태를 정의하는 환경 구성 리포지토리

Red Hat OpenShift GitOps는 클러스터 리소스를 유지 관리하기 위해 애플리케이션의 지속적 통합/지속적 배포(CI/CD)에서 지속적 배포 부분에 대한 오픈소스 툴인 Argo CD를 사용합니다. 다시 말해, Argo CD는 Git 리포지토리에 정의된 대로 애플리케이션 상태 설명과 구성을 모니터링하여 Red Hat OpenShift GitOps에 대한 컨트롤러 역할을 합니다. Argo CD는 정의된 상태와 실제 상태를 비교하며, 명시된 설명에서 벗어나는 구성을 보고합니다. 

관리자는 이러한 보고에 기반하여 구성을 정의된 상태로 다시 동기화할 수 있습니다. 이러한 재동기화는 수동 또는 자동으로 수행할 수 있습니다. 자동화의 경우, 구성은 기본적으로 "자가 치유(self-healing)"됩니다.

따라서 Red Hat OpenShift GitOps와 자동화된 프로세스는 다음을 지원합니다.

  • 클러스터가 구성, 모니터링, 스토리지에 대해 유사한 상태를 갖도록 보장
  • 다수의 클러스터에 대해 구성 변경 사항을 적용하거나 이전 상태로 복원
  • 템플릿 기반 구성과 다양한 환경 연계
  • 스테이징에서 프로덕션까지 클러스터 전반에 애플리케이션 배포

오퍼레이터는 OpenShift 컨테이너 플랫폼 컨트롤 플레인 상에서 많이 사용하는 서비스 패키징, 배포, 관리 방법입니다. 예를 들어, GitOps Primer는 쿠버네티스 오브젝트를 내보내는 오퍼레이터로, 여러 클러스터, 팀, 환경 전반에서 쿠버네티스 오브젝트를 공유할 수 있게 합니다. 이는 GitOps가 멀티클라우드 접근 방식에 일관성, 보안, 협업을 제공하는 방법 중 하나입니다. 

GitOps는 쿠버네티스 API 및 커맨드라인 인터페이스(CLI) 툴과 통합되어 애플리케이션 모니터링, 상태 점검 수행, 무선(OTA) 업데이트 관리, 그리고 애플리케이션의 지정된 상태 유지 등을 지원합니다.

OpenShift 컨테이너 플랫폼에서는 목적에 따라 두 가지 각기 다른 시스템이 오퍼레이터를 관리합니다.

오퍼레이터는 애플리케이션을 생성하여 클러스터에서 실행 중인 서비스를 모니터링할 수 있도록 지원합니다. 설치와 구성 작업을 구현하고 자동화하며, 자동 스케일링 업/다운과 백업 생성 등을 처리합니다. 이러한 활동은 모두 클러스터 내에서 실행되는 소프트웨어에서 수행됩니다.

오퍼레이터는 다음을 제공합니다.

  • 반복 가능한 설치와 업그레이드
  • 모든 시스템 구성 요소에 대한 지속적인 상태 점검
  • OpenShift 구성 요소에 대한 무선(OTA) 업데이트 
  • 현장 엔지니어의 지식을 캡슐화하여 모든 사용자에게 전파할 수 있는 위치

GitOps Primer란 OpenShift 클러스터에서 실행되는 오퍼레이터로, 개발자가 네임스페이스 내의 모든 쿠버네티스 오브젝트를 내보낼 수 있는 기능을 제공합니다. 이는 이식 가능한 .zip 파일을 생성하므로 사용자는 다음을 수행할 수 있습니다. 

GitOps Primer는 GitOps가 멀티클라우드에 제공하는 코드형 인프라 접근 방식을 지원합니다.

Git은 인프라와 애플리케이션 구성에 대한 단일 정보 소스의 역할을 합니다. 인프라 구성과 애플리케이션 구성 모두 GitOps 툴링이 해당 기능을 수행하려면 일반적으로 비밀 정보(예: 인증 토큰, 개인 키 등)라고 불리는 민감한 자산에 액세스해야 합니다.

그러나 Git 리포지토리가 프라이빗 리포지토리로 간주되며 대상을 제한하는 액세스 제어를 포함하고 있다고 하더라도 리포지토리에 비밀 정보를 저장하면 보안 취약점이 발생하기 때문에 허용하면 안됩니다. 비밀 정보가 평문(Clear-Text)에서(또는 쉽게 되돌릴 수 있는 상태에서) Git으로 푸시되면 해당 비밀 정보는 손상된 것으로 간주되어 즉시 취소되어야 합니다.

이러한 과제를 극복하기 위해 GitOps에서의 비밀 정보 관리를 위한 두 가지 주요 아키텍처 접근 방식이 있습니다.

  • 암호화된 비밀 정보
    • Git 리포지토리 내에 저장
    • 자동화된 프로세스가 이를 해독하여 쿠버네티스 비밀 정보로 렌더링
  • Git 리포지토리에 저장된 비밀 정보 참조
    • 자동화된 프로세스가 이와 같은 참조를 기반으로 비밀 정보 검색
    • 검색된 비밀 정보를 쿠버네티스 비밀 정보로 렌더링 

두 가지 접근 방식에 대한 심층 정보는 GitOps 및 쿠버네티스로 비밀 정보 관리 가이드에서 확인하시기 바랍니다.

멀티클라우드 GitOps의 개념을 이해했다면, 이제 다음과 같이 GitOps로 개발하는 방법을 학습할 수 있습니다.

다음과 같이 OpenShift GitOps와 관련된 문서를 살펴볼 수도 있습니다.

추가 자료

문서

DevSecOps란?

DevOps의 민첩성과 대응 능력을 최대한 활용하려면 IT 보안 팀이 애플리케이션의 전체 라이프사이클에서 주요 역할을 해야 합니다.

문서

CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정

CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공합니다.

문서

DevOps 엔지니어는 어떤 사람일까요?

DevOps 엔지니어는 조직 내 협업, 혁신, 문화적인 변화를 지원하는 기술 및 전문성을 두루 갖추고 있습니다.  

DevOps에 대한 자세한 내용

제품

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

리소스

팟캐스트

Command Line Heroes 시즌 1, 에피소드 4:

"DevOps: Tear down that wall"

백서

Red Hat Ansible Automation Platform으로 CI/CD 파이프라인 간소화

오퍼레이터

Red Hat® OpenShift® GitOps를 사용하여 인프라와애플리케이션 구성 관리