2장. OpenShift Container Platform 개요
OpenShift Container Platform은 클라우드 기반 Kubernetes 컨테이너 플랫폼입니다. OpenShift Container Platform의 기초는 Kubernetes를 기반으로 하므로 동일한 기술을 공유합니다. 애플리케이션 및 애플리케이션을 지원하는 데이터센터를 몇 대의 머신 및 애플리케이션에서 수백만 클라이언트에 서비스를 제공하는 수천 대의 컴퓨터로 확장 가능하도록 설계되었습니다.
OpenShift Container Platform을 사용하면 다음을 수행할 수 있습니다.
- 개발자와 IT 조직에 안전하고 확장 가능한 리소스에 애플리케이션을 배포하는 데 사용할 수 있는 클라우드 애플리케이션 플랫폼을 제공합니다.
- 최소한의 구성 및 관리 오버헤드가 필요합니다.
- Kubernetes 플랫폼을 고객 데이터 센터 및 클라우드에 가져옵니다.
- 보안, 개인 정보 보호, 컴플라이언스 및 거버넌스 요구 사항을 충족합니다.
Kubernetes에 기반을 둔 OpenShift Container Platform은 대규모 통신, 스트리밍 비디오, 게임, 뱅킹 및 기타 애플리케이션의 엔진 역할을 하는 동일한 기술을 통합합니다. Red Hat의 오픈 기술로 구현하면 컨테이너화된 애플리케이션을 단일 클라우드에서 온프레미스 및 다중 클라우드 환경으로 확장할 수 있습니다.
2.1. OpenShift Container Platform의 일반 용어집
이 용어집은 일반적인 Kubernetes 및 OpenShift Container Platform 용어를 정의합니다. 이러한 용어는 문서의 내용 및 기타 부분에 대해 사용자에게 도움이 됩니다.
- Kubernetes
- Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 컨테이너 오케스트레이션 엔진입니다.
- 컨테이너
- 컨테이너는 작업자 노드의 OCI 호환 컨테이너에서 실행되는 애플리케이션 인스턴스 및 구성 요소입니다. 컨테이너는 OCI(Open Container Initiative) 호환 이미지의 런타임입니다. 이미지는 바이너리 애플리케이션입니다. 작업자 노드는 여러 컨테이너를 실행할 수 있습니다. 노드 용량은 클라우드, 하드웨어 또는 가상화 여부에 관계없이 기본 리소스의 메모리 및 CPU 기능과 관련이 있습니다.
- Pod
Pod는 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너입니다. 볼륨 및 IP 주소와 같은 공유 리소스가 있는 배치된 컨테이너 그룹으로 구성됩니다. Pod는 정의, 배포 및 관리되는 최소 컴퓨팅 단위이기도 합니다.
OpenShift Container Platform에서 Pod는 개별 애플리케이션 컨테이너를 배포 가능한 가장 작은 단위로 교체합니다.
Pod는 OpenShift Container Platform의 오케스트레이션된 단위입니다. OpenShift Container Platform은 동일한 노드의 Pod에 있는 모든 컨테이너를 예약하고 실행합니다. 복잡한 애플리케이션은 각각 자체 컨테이너가 있는 여러 Pod로 구성됩니다. 외부적으로 상호 작용하고 OpenShift Container Platform 환경 내부와도 상호 작용합니다.
- 복제본 세트 및 복제 컨트롤러
- Kubernetes 복제본 세트 및 OpenShift Container Platform 복제 컨트롤러를 모두 사용할 수 있습니다. 이 구성 요소의 작업은 지정된 수의 Pod 복제본이 항상 실행 중인지 확인하는 것입니다. Pod가 종료되거나 삭제되면 복제 세트 또는 복제 컨트롤러가 더 많이 시작됩니다. 필요한 것보다 많은 Pod가 실행 중인 경우 복제 세트는 지정된 복제 수와 일치하도록 필요한 수만큼 삭제됩니다.
- 배포 및 배포 구성
OpenShift Container Platform은 Kubernetes
Deployment
오브젝트와 OpenShift Container PlatformDeploymentConfigs
오브젝트를 모두 구현합니다. 사용자는 둘 중 하나를 선택할 수 있습니다.Deployment
오브젝트는 애플리케이션을 pod로 롤아웃하는 방법을 제어합니다. 레지스트리에서 가져올 컨테이너 이미지의 이름을 확인하고 노드에 pod로 배포됩니다. 배포할 pod 복제본 수를 설정하고 프로세스를 관리할 복제본 세트를 생성합니다. 표시된 레이블은 Pod를 배포할 노드를 스케줄러에 지시합니다. 레이블 세트는 복제 세트에서 인스턴스화하는 pod 정의에 포함되어 있습니다.Deployment
오브젝트는Deployment
오브젝트 버전 및 허용 가능한 애플리케이션 가용성 관리를 위한 다양한 롤아웃 전략을 기반으로 작업자 노드에 배포된 Pod를 업데이트할 수 있습니다. OpenShift Container PlatformDeploymentConfig
오브젝트는 새 컨테이너 이미지 버전을 사용할 수 있는 경우 새로운 버전의Deployment
오브젝트를 자동으로 생성할 수 있는 변경 트리거의 추가 기능을 추가합니다.- 서비스
서비스는 pod의 논리 세트와 액세스 정책을 정의합니다. Pod가 생성되고 삭제될 때 사용할 다른 애플리케이션의 영구 내부 IP 주소 및 호스트 이름을 제공합니다.
서비스 계층은 애플리케이션 구성 요소를 연결합니다. 예를 들어 프런트 엔드 웹 서비스는 서비스와 통신하여 데이터베이스 인스턴스에 연결합니다. 서비스를 통해 애플리케이션 구성 요소 간에 간단한 내부 로드 밸런싱이 가능합니다. OpenShift Container Platform은 쉽게 검색할 수 있도록 실행 중인 컨테이너에 서비스 정보를 자동으로 삽입합니다.
- 경로
- 경로는 www.example.com과 같이 외부에 연결할 수 있는 호스트 이름을 지정하여 서비스를 노출하는 방법입니다. 각 경로는 경로 이름, 서비스 선택기 및 보안 구성(선택 사항)으로 구성됩니다. 라우터는 정의된 경로와 서비스에 의해 식별된 엔드포인트를 사용하여 외부 클라이언트가 애플리케이션에 도달할 수 있는 이름을 제공할 수 있습니다. 완전한 다중 계층 애플리케이션을 쉽게 배포할 수는 있지만 OpenShift Container Platform 환경 외부의 모든 위치에서의 트래픽은 라우팅 계층 없이 애플리케이션에 연결할 수 없습니다.
- Build
-
빌드는 입력 매개변수를 결과 오브젝트로 변환하는 프로세스입니다. 대부분의 경우 프로세스는 입력 매개변수 또는 소스 코드를 실행 가능한 이미지로 변환하는 데 사용됩니다.
BuildConfig
오브젝트는 전체 빌드 프로세스에 대한 정의입니다. OpenShift Container Platform은 빌드 이미지에서 컨테이너를 생성하고 이를 통합 레지스트리로 푸시함으로써 Kubernetes를 활용합니다. - 프로젝트
OpenShift Container Platform은 프로젝트를 사용하여 사용자 또는 개발자 그룹이 함께 작업할 수 있도록 하여 격리 및 협업 단위 역할을 합니다. 리소스 범위를 정의하고, 프로젝트 관리자와 협업을 통해 리소스를 관리하고, 할당량 및 제한을 사용하여 사용자 리소스를 제한 및 추적할 수 있습니다.
프로젝트는 추가 주석이 있는 Kubernetes 네임스페이스입니다. 일반 사용자를 위한 리소스에 대한 액세스를 관리하는 핵심 수단입니다. 사용자 커뮤니티는 프로젝트를 통해 다른 커뮤니티와 별도로 콘텐츠를 구성하고 관리할 수 있습니다. 사용자는 관리자로부터 프로젝트에 대한 액세스 권한을 받아야 합니다. 그러나 클러스터 관리자는 개발자가 자신의 프로젝트를 만들 수 있도록 허용할 수 있으며, 이 경우 사용자는 자신의 프로젝트에 대한 액세스 권한이 자동으로 제공됩니다.
각 프로젝트에는 고유한 오브젝트, 정책, 제약 조건 및 서비스 계정이 있습니다.
프로젝트는 네임스페이스라고도 합니다.
- Operator
Operator는 Kubernetes 네이티브 애플리케이션입니다. Operator의 목표는 운영 지식을 소프트웨어에 배치하는 것입니다. 이전에는 이러한 지식에는 관리자, 다양한 조합 또는 쉘 스크립트 또는 Ansible과 같은 자동화 소프트웨어만 있었습니다. Kubernetes 클러스터 외부에 있었고 통합하기 어려웠습니다. Operator를 사용하면 이러한 모든 사항이 변경됩니다.
Operator는 애플리케이션에 맞게 설계되었습니다. Kubernetes 개념 및 API와 기본적으로 통합되어 Kubernetes 클러스터 내부에서 실행되는 소프트웨어에서 설치 및 구성과 같은 일반적인 1일차(Day 1) 작업 및 2일차(Day 2) 작업(스케일업/다운, 재구성, 업데이트, 백업, 페일오버 및 복원)을 구현하고 자동화합니다. 이를 Kubernetes 네이티브 애플리케이션이라고 합니다.
Operator에서는 애플리케이션을 Pod, 배포, 서비스 또는 구성 맵과 같은 기본 컬렉션으로 취급해서는 안 됩니다. 대신 애플리케이션에 적합한 옵션을 노출하는 단일 오브젝트로 Operator를 처리해야 합니다.