Jump to section

컨테이너 레지스트리란?

URL 복사

컨테이너 레지스트리는 컨테이너 이미지를 저장하고 액세스하는 데 사용되는 리포지토리 또는 리포지토리 컬렉션입니다. 컨테이너 레지스트리는 종종 DevOps 프로세스의 일부로 컨테이너 기반 애플리케이션 개발을 지원할 수 있습니다. 컨테이너 레지스트리는 DockerKubernetes 같은 컨테이너 오케스트레이션 플랫폼에 직접 연결할 수 있습니다. 

컨테이너 레지스트리는 시스템 간에 컨테이너 이미지를 공유하는 중개자 역할을 하여 개발자가 클라우드 네이티브 애플리케이션을 생성하고 제공하는 데 드는 귀중한 시간을 절약해 줍니다.

하나의 컨테이너 이미지에는 애플리케이션을 구성하는 파일과 구성 요소가 포함됩니다. 가상 머신(VM)과 달리 컨테이너는 Linux® 운영 체제(OS)에서 실행되는 경량화된 소프트웨어 패키지입니다. 컨테이너 이미지는 워크로드 변경에 따라 확장할 수 있습니다. 일반적으로 애자일 개발, DevOps 방법론, 지속적 통합 및 지속적 배포 (CI/CD)와 관련이 있습니다. 

컨테이너 이미지에는 앱을 실행하는 데 필요한 시스템 라이브러리, 시스템 도구 및 기타 플랫폼 설정이 포함되어 있으므로 개발자가 새로운 애플리케이션을 빠르게 확장하거나 만들 수 있는 이식성과 민첩성의 이점을 누릴 수 있습니다.

Buildah 와 같은 오픈소스 툴을 사용하면 Dockerfile 또는 기존 컨테이너 이미지 시작점을 사용하거나 사용하지 않고 OCI 및 Docker 호환 이미지를 생성할 수 있으므로 많은 추측에 기반한 작업을 제외할 수 있습니다. 

컨테이너 이미지로 개발 하려면 생성된 이미지를 저장, 공유하고 액세스할 장소가 있어야 하는데, 이때 컨테이너 레지스트리를 사용합니다. 

컨테이너 레지스트리는 기본적으로 개발자가 컨테이너 이미지를 저장하고 레지스트리에 업로드(푸시)하고쿠버네티스 클러스터와 같은 다른 시스템으로 다운로드(풀링)하는 프로세스를 통해 컨테이너 이미지를 공유하는 장소 역할을 합니다. 

이미지를 가져온 후에는 이미지에 포함된 애플리케이션을 해당 시스템에서 실행할 수 있습니다.

컨테이너 이미지 외에 API(애플리케이션 프로그래밍 인터페이스) 경로와 컨테이너 간 통신에 필요한 액세스 제어 매개 변수도 레지스트리에 저장됩니다. API는 특히 애플리케이션이 더 이상 동일한 데이터 센터에 상주하지 않는 하이브리드 클라우드 환경에서 변경을 제한하고 운영 중단의 일반적인 원인이 되는 의도하지 않은 결합을 제거하는 데 도움이 됩니다.

확장을 도와주는 컨테이너화된 서비스 간의 인프라 계층인 서비스 메쉬를 통해 컨테이너 이미지가 통신할 수도 있습니다. 마이크로서비스 아키텍처에 구축된 클라우드 네이티브 애플리케이션의 경우에는 서비스 메쉬 방식으로 대량의 개별 서비스를 정상 애플리케이션으로 구성합니다.

Cloud Native Computing Foundation에서는 컨테이너(컨테이너 이미지 및 레지스트리 포함)와 마이크로서비스 가 클라우드 네이티브 애플리케이션 개발의 기반이라고 말합니다. 컨테이너와 마이크로서비스는 완전히 독립형이므로 이식 가능한 클라우드 네이티브 애플리케이션을 생성하기 위한 강력한 툴입니다. 

컨테이너는 애플리케이션 프로세스, 런타임 파일 및 OS 종속성을 시스템의 나머지 부분에서 격리합니다. 하이브리드 클라우드 환경 전반에서 뛰어난 이식성을 보장하며 가상 시스템(VM)보다 훨씬 짧은 시간으로 배포할 수 있습니다. 이를 통해 개발자는 컨테이너 레지스트리에서 필요한 항목을 더 쉽게 푸시하고 가져올 수 있으므로 기본 인프라 또는 실행에 필요한 세부 사항을 방해하지 않고 우수한 제품을 구축하는 데 집중할 수 있습니다.

DevOps 환경에서 컨테이너(및 컨테이너 이미지/레지스트리)를 사용하면 개발자가 각 애플리케이션 서비스를 독립적으로 배포할 수 있으므로 코드 변경 사항을 병합할 필요가 없고, 테스트를 개선하고, 테스트와 프로덕션 모두에서 결함을 격리하는 데 도움이 됩니다.

컨테이너 레지스트리의 유형은 퍼블릭과 프라이빗, 두 가지입니다.

퍼블릭 레지스트리는 일반적으로 레지스트리를 최대한 빨리 시작하고 실행하려는 개인 또는 소규모 팀에서 사용합니다. 그러나 조직이 성장함에 따라 패치, 개인 정보 보호, 액세스 제어와 같은 더 복잡한 보안 문제가 발생할 수 있습니다. 

프라이빗 레지스트리를 이용하면 원격 또는 온프레미스에서 호스팅되는 엔터프라이즈 컨테이너 이미지 스토리지에 보안 및 개인 정보 보호를 통합할 수 있습니다. 이러한 프라이빗 레지스트리에는 고급 보안 기능과 기술 지원이 함께 제공되는 경우가 많습니다.

대부분의 클라우드 제공업체는 프라이빗 이미지 레지스트리 서비스를 제공합니다.Google 은 Google Container Registry, AWS 는 Amazon Elastic Container Registry(ECR), Microsoft는 Azure Container Registry를 제공합니다.

프라이빗 내부 레지스트리를 사용하면 보안 및 구성을 최대한 활용할 수 있지만 레지스트리의 인프라와 액세스 제어가 조직 내에서 유지되도록 세심하게 관리하고 보장해야 합니다.

기업용 프라이빗 컨테이너 레지스트리 서비스를 선택할 때 고려해야 할 중요한 사항은 다음을 포함합니다.

  • 다수의 인증 시스템 지원

  • 로컬 이미지에 대한 RBAC(역할 기반 액세스 제어 관리)

  • 보안 및 구성 강화를 위한 취약점 스캔 기능

  • 사용 기록을 감사 로그에 저장하여 단일 사용자의 활동까지 추적 가능

  • 자동화하기에 최적의 서비스

프라이빗 레지스트리의 엔터프라이즈급 기능을 통해 조직은 안전하고 효율적인 방식으로 컨테이너 이미지에 내부적으로 액세스할 수 있습니다. 여러 인증 시스템에서 저장된 컨테이너 이미지를 확인하기 위한 조치를 취합니다.

예를 들어와 같이 이미지를 업로드하는 사람이 디지털 서명해야 레지스트리에 푸시할 수 있을 뿐만 아니라 활동 추적을 활성화하고 무단 사용자 업로드를 방지할 수 있습니다.

RBAC는 개인의 역할에 따라 허용되는 사용자 작업을 관리합니다. 개발자는 레지스트리에 대한 업로드 및 다운로드 권한이 필요한 반면, 팀원이나 테스터에게는 다운로드 권한만 있으면 됩니다. AD(Active Directory) 또는 LDAP(Lightweight Directory Access Protocol ) 와 같은 사용자 관리 시스템이 있으면 이러한 시스템을 컨테이너 레지스트리에 직접 연결하여 RBAC에 사용할 수 있습니다.

기업은 자체 컨테이너 레지스트리를 생성하고 배포하는 쪽을 선택하거나 시중에 출시된 프라이빗 레지스트리 서비스를 이용할 수 있습니다. 

Red Hat® OpenShift®는 하이브리드 클라우드, 멀티클라우드, 엣지 배포를 관리하는 등 모든 클라우드 인프라에서 일관성을 제공하는 엔터프라이즈 수준의 쿠버네티스 컨테이너 플랫폼입니다. Red Hat OpenShift를 통해 새로운 마이크로서비스 또는 애플리케이션을 위한 환경을 몇 분 만에 프로비저닝할 수 있습니다. 미들웨어, 언어, 프레임워크, 데이터베이스와 같은 다른 클라우드 서비스 외에도 컨테이너 이미지를 관리하기 위한 기본 기능을 제공하는 프라이빗 레지스트리가 이미 포함되어 있습니다. 

프라이빗 레지스트리는 Red Hat의 풍부한 파트너 에코시스템에서 클라우드 공급자에 Red Hat OpenShift 관리 서비스의 일부로 배포되어 Azure, Amazon Web Services(AWS), IBM Cloud 또는 Google Cloud에서 원활한 경험을 제공할 수 있습니다. Red Hat OpenShift는 JFrog의 Artifactory, Sonatype Nexus와 같이 기업이 현재 사용하고 있는 다른 프라이빗 레지스트리와의 통합을 지원합니다.

또한 Red Hat은 하이브리드 클라우드 기반에 강화된 보안 기능과 데이터 센터에서 사용할 수 있는 추가 소프트웨어 요소를 기반으로 구축된 자체 관리형 서비스를 제공합니다. 고급 보안 및 기술 지원 기능이 더 필요한 경우Red Hat Quay를 확장 가능한 독립형 엔터프라이즈 레지스트리 옵션으로 사용할 수 있습니다.

추가 자료

문서

스테이트풀과 스테이트리스 비교

스테이트풀과 스테이트리스는 상호 작용 상태가 얼마나 오래 기록되는지, 해당 정보가 어떤 식으로 저장되는지를 기준으로 구별할 수 있습니다.

문서

Quarkus란?

Quarkus는 Java 가상 머신(Java Virtual Machine, JVM)과 네이티브 컴파일을 위해 만들어진 쿠버네티스 네이티브 Java 스택으로, 특히 컨테이너에 Java를 최적화합니다.

문서

서버리스란?

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다.

클라우드 네이티브 애플리케이션에 대한 자세한 내용

제품

선택한 인프라에서 애플리케이션 출시 테스트를 완료한 통합 서비스 세트를 포함하는 엔터프라이즈 애플리케이션 플랫폼입니다.

여러 서비스를 서로 분리하여 독립적으로 생성, 확장, 배포할 수 있게 하는 분산형 클라우드 네이티브 통합 플랫폼입니다.

리소스

e-book

클라우드 네이티브와 하이브리드 클라우드의 융합: 전략 가이드

E-book

클라우드 네이티브 애플리케이션 구현을 위한 과정

교육

무료 교육 과정

Developing Cloud-Native Applications with Microservices Architectures