2장. OpenShift Container Platform 아키텍처
2.1. OpenShift Container Platform 소개
OpenShift Container Platform은 컨테이너화된 애플리케이션을 개발하고 실행하기 위한 플랫폼입니다. 애플리케이션 및 애플리케이션을 지원하는 데이터센터를 몇 대의 머신 및 애플리케이션에서 수백만 클라이언트에 서비스를 제공하는 수천 대의 컴퓨터로 확장 가능하도록 설계되었습니다.
Kubernetes에 기반을 둔 OpenShift Container Platform은 대규모 통신, 스트리밍 비디오, 게임, 뱅킹 및 기타 애플리케이션의 엔진 역할을 하는 동일한 기술을 통합합니다. Red Hat의 오픈 기술로 구현하면 컨테이너화된 애플리케이션을 단일 클라우드에서 온프레미스 및 다중 클라우드 환경으로 확장할 수 있습니다.
2.1.1. Kubernetes 정보
컨테이너 이미지와 컨테이너 이미지에서 실행되는 컨테이너는 최신 애플리케이션 개발을 위한 기본 빌딩 블록이지만 규모에 맞게 실행하려면 안정적이고 유연한 배포 시스템이 필요합니다. Kubernetes는 컨테이너를 오케스트레이션하는 사실상의 표준입니다.
Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 컨테이너 오케스트레이션 엔진입니다. Kubernetes의 일반적인 개념은 다음과 같이 매우 간단합니다.
- 하나 이상의 작업자 노드에서 시작하여 컨테이너 워크로드를 실행합니다.
- 하나 이상의 컨트롤 플레인 노드에서 해당 워크로드의 배포를 관리합니다.
- 컨테이너를 포드라는 배포 단위로 래핑합니다. 포드를 사용하면 컨테이너에 추가 메타데이터가 제공되고 단일 배포 엔티티에서 여러 컨테이너를 그룹화할 수 있습니다.
- 특별한 종류의 자산을 생성합니다. 예를 들어 서비스는 포드 세트와 포드에 액세스하는 방법을 정의하는 정책으로 표시됩니다. 이 정책을 통해 컨테이너는 서비스에 대한 특정 IP 주소가 없어도 필요한 서비스에 연결할 수 있습니다. 복제 컨트롤러는 한 번에 실행하는 데 필요한 포드 복제본 수를 나타내는 또 다른 특수 자산입니다. 이 기능을 사용하여 현재 수요에 맞게 애플리케이션을 자동으로 확장할 수 있습니다.
불과 몇 년 만에 Kubernetes는 대규모 클라우드와 온프레미스에서 채택되었습니다. 오픈 소스 개발 모델을 사용하면 많은 사용자가 네트워킹, 스토리지 및 인증과 같은 구성 요소에 다른 기술을 구현하여 Kubernetes를 확장할 수 있습니다.
2.1.2. 컨테이너화된 애플리케이션의 이점
컨테이너화된 애플리케이션을 사용하면 기존 배포 방법을 사용하는 것보다 많은 이점이 있습니다. 애플리케이션이 모든 종속 항목을 포함하는 운영 체제에 한 번 설치될 것으로 예상되는 경우 컨테이너를 통해 애플리케이션이 해당 애플리케이션과 함께 종속 항목을 유지할 수 있습니다. 컨테이너화된 애플리케이션을 생성하면 많은 이점이 있습니다.
2.1.2.1. 운영 체제에서의 이점
컨테이너에서는 커널이 없는 소규모의 전용 Linux 운영 체제를 사용합니다. 파일 시스템, 네트워킹, cgroup, 프로세스 테이블 및 네임스페이스는 호스트 Linux 시스템과 별개이지만 필요한 경우 컨테이너를 호스트에 완벽하게 통합할 수 있습니다. 컨테이너는 Linux 기반이므로 빠르게 혁신되는 오픈 소스 개발 모델에 함께 제공되는 모든 이점을 사용할 수 있습니다.
각 컨테이너는 전용 운영 체제를 사용하므로 충돌하는 소프트웨어 종속 항목이 필요한 애플리케이션을 동일한 호스트에 배포할 수 있습니다. 각 컨테이너에서는 자체 종속 소프트웨어를 제공하고 네트워킹 및 파일 시스템과 같은 자체 인터페이스를 관리하므로 애플리케이션이 해당 자산과 경쟁할 필요가 없습니다.
2.1.2.2. 배포 및 스케일링에서의 이점
애플리케이션의 주요 릴리스 간에 롤링 업그레이드를 사용하는 경우 다운타임 없이 애플리케이션을 지속적으로 개선하고 현재 릴리스와의 호환성을 계속 유지할 수 있습니다.
기존 버전과 더불어 새 버전의 애플리케이션을 배포하고 테스트할 수도 있습니다. 컨테이너가 테스트를 통과하면 새 컨테이너를 추가로 배포하고 이전 컨테이너를 제거하면 됩니다.
애플리케이션의 모든 소프트웨어 종속 항목은 컨테이너 자체 내에서 해결되므로 데이터센터의 각 호스트에서 표준화된 운영 체제를 사용할 수 있습니다. 애플리케이션 호스트마다 특정 운영 체제를 구성할 필요가 없습니다. 데이터센터에 더 많은 용량이 필요하다면 또 다른 일반 호스트 시스템을 배포하면 됩니다.
컨테이너화된 애플리케이션도 이와 마찬가지로 간단하게 스케일링할 수 있습니다. OpenShift Container Platform에서는 컨테이너화된 서비스를 스케일링하는 간단한 표준 방법을 제공합니다. 예를 들어, 대규모 모놀리식 애플리케이션이 아닌 일련의 마이크로서비스로 애플리케이션을 빌드하는 경우 요구에 맞게 각 마이크로서비스를 개별적으로 스케일링할 수 있습니다. 이 기능을 사용하면 전체 애플리케이션이 아니라 필요한 서비스만 스케일링할 수 있으므로 최소한의 리소스만 사용하여 애플리케이션 요구사항을 충족할 수 있습니다.
2.1.3. OpenShift Container Platform 개요
OpenShift Container Platform은 Kubernetes에 다음과 같은 향상된 기능을 포함한 엔터프라이즈급 개선사항을 제공합니다.
- 하이브리드 클라우드 배포. 다양한 퍼블릭 클라우드 플랫폼 또는 데이터센터에 OpenShift Container Platform 클러스터를 배포할 수 있습니다.
- 통합된 Red Hat 기술. OpenShift Container Platform의 주요 구성 요소는 RHEL(Red Hat Enterprise Linux) 및 관련 Red Hat 기술을 기반으로 합니다. OpenShift Container Platform은 Red Hat의 엔터프라이즈급 소프트웨어에 대한 강력한 테스트 및 인증 이니셔티브의 이점을 제공합니다.
- 오픈 소스 개발 모델. 개발은 공개적으로 완료되었으며 소스 코드는 공개 소프트웨어 리포지토리에서 구할 수 있습니다. 이 오픈 협업을 통해 빠른 혁신과 개발을 촉진할 수 있습니다.
Kubernetes는 애플리케이션 관리에 뛰어나지만 플랫폼 수준 요구사항 또는 배포 프로세스를 지정하거나 관리하지는 않습니다. 강력하고 유연한 플랫폼 관리 도구 및 프로세스는 OpenShift Container Platform 4.9가 제공하는 중요한 이점입니다. 다음 섹션에서는 OpenShift Container Platform의 고유한 기능과 이점에 관해 설명합니다.
2.1.3.1. 사용자 정의 운영 체제
OpenShift Container Platform은 OpenShift Container Platform에서 컨테이너화된 애플리케이션을 실행하도록 특별히 설계된 컨테이너 지향 운영 체제인 RHCOS(Red Hat Enterprise Linux CoreOS)를 사용하며 새로운 도구와 함께 작업하여 빠른 설치, Operator 기반 관리 및 단순화된 업그레이드를 제공합니다.
RHCOS는 다음을 포함합니다.
- OpenShift Container Platform이 머신을 처음 시작하고 구성하기 위한 최초 부팅 시스템 구성으로 사용하는 Ignition
- 운영 체제와 밀접하게 통합되어 효율적이고 최적화된 Kubernetes 환경을 제공하는 Kubernetes 기본 컨테이너 런타임 구현인 CRI-O. CRI-O는 컨테이너 실행, 중지 및 다시 시작 기능을 제공합니다. OpenShift Container Platform 3에서 사용하던 Docker Container Engine을 완전히 대체합니다.
- 컨테이너 시작 및 모니터링을 담당하는 Kubernetes의 기본 노드 에이전트인 Kubelet
OpenShift Container Platform 4.9에서는 모든 컨트롤 플레인 머신에 RHCOS를 사용해야 하지만 작업자 머신이라고도 하는 컴퓨팅 머신의 운영 체제로 RHEL(Red Hat Enterprise Linux)을 사용할 수 있습니다. RHEL 작업자를 사용하도록 선택한 경우 모든 클러스터 머신에 RHCOS를 사용할 때보다 시스템 유지보수를 더 많이 수행해야 합니다.
2.1.3.2. 단순화된 설치 및 업데이트 프로세스
OpenShift Container Platform 4.9를 사용하면 적절한 권한이 있는 계정이 있는 경우 단일 명령을 실행하고 몇 가지 값을 제공하여 지원되는 클라우드에 프로덕션 클러스터를 배포할 수 있습니다. 지원되는 플랫폼을 사용하는 경우 클라우드 설치를 사용자 정의하거나 데이터센터에 클러스터를 설치할 수도 있습니다.
모든 머신, 업데이트 또는 업그레이드에 RHCOS를 사용하는 클러스터의 경우 OpenShift Container Platform은 고도로 자동화된 간단한 프로세스입니다. OpenShift Container Platform은 운영 체제 자체를 포함하여 각 머신에서 실행되는 시스템 및 서비스를 중앙 컨트롤 플레인에서 완전히 제어하므로 업그레이드가 자동 이벤트가 되도록 설계되었습니다. 클러스터에 RHEL 작업자 머신이 포함된 경우 컨트롤 플레인은 간소화된 업데이트 프로세스를 통해 이점을 얻을 수 있지만 RHEL 머신을 업그레이드하려면 추가 작업을 수행해야 합니다.
2.1.3.3. 기타 주요 기능
Operator는 OpenShift Container Platform 4.9 코드 베이스의 기본 단위이자 애플리케이션에서 사용할 애플리케이션 및 소프트웨어 구성 요소를 편리하게 배포할 수 있는 방법입니다. OpenShift Container Platform에서 Operator는 플랫폼 기반 역할을 하며 운영 체제 및 컨트롤 플레인 애플리케이션을 수동으로 업그레이드할 필요가 없습니다. Cluster Version Operator 및 Machine Config Operator와 같은 OpenShift Container Platform Operator를 사용하면 중요한 구성 요소를 클러스터 전체에서 간단하게 관리할 수 있습니다.
OLM(Operator Lifecycle Manager)과 OperatorHub에서는 애플리케이션을 개발 및 배포하는 사용자에게 Operator를 저장하고 배포하는 기능을 제공합니다.
Red Hat Quay Container Registry는 대부분의 컨테이너 이미지와 Operator에 OpenShift Container Platform 클러스터를 제공하는 Quay.io 컨테이너 레지스트리입니다. Quay.io는 수백만 개의 이미지와 태그를 저장하는 Red Hat Quay의 공개 레지스트리 버전입니다.
OpenShift Container Platform의 Kubernetes의 기타 향상된 기능에는 소프트웨어 정의 네트워킹(SDN), 인증, 로그 집계, 모니터링 및 라우팅 개선이 포함됩니다. OpenShift Container Platform에서는 포괄적인 웹 콘솔과 사용자 정의 OpenShift CLI(oc
) 인터페이스도 제공합니다.
2.1.3.4. OpenShift Container Platform 라이프사이클
다음 그림에서는 기본 OpenShift Container Platform 라이프사이클을 보여줍니다.
- OpenShift Container Platform 클러스터 생성
- 클러스터 관리
- 애플리케이션 개발 및 배포
- 애플리케이션 스케일링
그림 2.1. 상위 레벨 OpenShift Container Platform 개요
2.1.4. OpenShift Container Platform 용 인터넷 액세스
OpenShift Container Platform 4.9에서 클러스터를 설치하려면 인터넷 액세스가 필요합니다.
다음의 경우 인터넷 액세스가 필요합니다.
- OpenShift Cluster Manager 에 액세스하여 설치 프로그램을 다운로드하고 서브스크립션 관리를 수행합니다. 클러스터가 인터넷에 액세스할 수 있고 Telemetry 서비스를 비활성화하지 않은 경우, 클러스터에 자동으로 권한이 부여됩니다.
- Quay.io에 액세스. 클러스터를 설치하는 데 필요한 패키지를 받을 수 있습니다.
- 클러스터 업데이트를 수행하는 데 필요한 패키지를 받을 수 있습니다.
클러스터가 직접 인터넷에 액세스할 수 없는 경우, 프로비저닝하는 일부 유형의 인프라에서 제한된 네트워크 설치를 수행할 수 있습니다. 이 프로세스 동안 필요한 콘텐츠를 다운로드하고 이를 사용하여 설치 패키지로 미러 레지스트리를 채웁니다. 설치 유형에 따라서는 클러스터를 설치하는 환경에 인터넷 액세스가 필요하지 않을 수도 있습니다. 클러스터를 업데이트하기 전에 미러 레지스트리의 내용을 업데이트합니다.