✔︎ Openshift 란 ?
- 오픈시프트는 컨테이너 기반 소프트웨어의 배포 및 관리를 위한 레드헷의 제품이다.
- kubernetes는 하나의 물리 환경에서 여러개의 서비스를 제공할 수 있으나, 네트워크 bottleneck이 생기는 등 운영 관리에 대한 기회 비용과 관련한 문제가 발생해 많은 벤더들이 만든 소프트웨어가 있고, 그 중 하나가 오픈시프트이다.
- kubernetes로 서비스 제공을 하고 운영을 위해 opneshift (혹은 다른툴)를 사용한다.
- 오픈시프트의 목표는 '신속한 어플리케이션 개발을 위해 도커 컨테이너와 DevOps 도구를 사용해 kubernetes를 지원하는 운영환경을 제공하는 것'이다.
✔︎ Openshift 기능
- 개발자를 위한 소스 관리, 빌드, 배포를 위한 기능을 제공한다.
- UI, CLI, API 등 다양한 인터페이스를 제공한다. → 클러스터/컨테이너 조절이 비교적 쉽다.
- 운영을 위한 조직 관리 기능을 제공한다.
- Redhat의 기술 지원으로써 보안 업데이트, 검증된 도커 이미지를 사용할 수 있다.
✔︎ Openshift 특징
컨테이너 이미지
다양한 미들웨어 및 DB 이미지 사용 가능
DevOps
Eclipse IDE Plugin을 통한 개발/테스트 지원
Git과 Jenkins를 통한 CI/CD 구성 지원
App 배포
빌드 배포 및 자동화 지원
Roll back 방법 제공
서비스 확장
HA Proxy기반의 Load Balancing 제공
Auto Scaler를 통한 부하상황에 알맞은 확장 제공
모니터링
애플리케이션 로그 모니터링 제공
Pod Cpu, Memory 모니터링 제공
DevOps
S2I 빌드 및 배포
Git과 Jenkins를 통한 CI/CD 구성 지원
CI (Continuous Integration) : 여러명의 개발자가 개발한 소스를 지속적으로 통합하는 것
CD (Continuous Delivery) : 빌드 결과물을 지속적으로 전달해서 제품의 질적 향상을 꾀하는 것
개발/스테이징에 빌드, 테스트, 배포를 자동화
배포 내역 관리 및 편리한 Rollback
특정 시점으로 롤백이 가능하다.
Auto-Scaling 기능을 제공
서비스를 수행하는 Pod에 부하가 발생해 cpu 사용률이 증가한다면 자동으로 pod를 추가로 생성하여 확장한다.
✔︎ Openshift 분류
Openshift origin
Openshift의 오픈소스 업스트림 프로젝트
CentOS, RHEL에 설치 가능
Openshift container platform
private 환경에 직접 설치해서 사용한다.
Openshift online
호스팅형 PaaS
클라우드에서 어플리케이션 개발, 구축, 배포, 호스팅 솔루션을 제공한다.
Openshift dedicated
public 환경, Redhat에서 관리해주는 서비스이다.
클러스터는 Redhat을 통해 관리한다.
필요에 따라 추가 리소스를 제공
✔︎ Openshift Architecture
- 오픈시스트에 구축되는 시스템 환경은 여러 Node(RHEL - RedHat Enterprise Linux)로 구성된다.
- 각 Node에는 N개의 Pod를 배치한다.
- 개발자는 SCM의 커밋 이벤트(hook)를 통해 어플리케이션을 자동으로 Docker 이미지에 빌드 및 배포 가능하다.
- 라우팅 레이어를 통해 어플리케이션에 접속 가능하다.
✔︎ Openshift vs Kubernetes
1. OpenShift product vs kubernetes project
kubernetes는 오픈소스 프로젝트(또는 프레임워크)이지만, Openshift는 다양한 엔터프라이즈 기능이 포함된 제품이다.
Openshift Container Platform 은 Subscription 구매 시 유상 지원을 포함하는 인프라에 설치할 수 있는 제품이다.
k8s는 많은 배포판(distribution)을 가지고 있지만 그것은 단지 프로젝트일 뿐이며 이슈/장애가 발생하면 커뮤니티나 외부 전문가에 의존할 수 밖에 없다.
2. OpenShift limited installation vs. install Kubernetes (almost) anywhere
OpenShift를 설치하기로 결정한 경우 OpenShift Container Platform용 Red Hat Enterprise Linux (또는 Red Hat Atomic)를 사용하고 OKD용 CentOS를 추가로 사용해야 한다. 다른 Linux 배포판에는 설치가 어렵다.
반면 kubernetes는 데비안, 우분투 및 기타 많은 리눅스 배포판에 대부분 설치할 수 있다.
3. OpenShift는 Kubernetes보다 엄격한 보안 정책을 가지고 있음
OpenShift 제품의 고객이 기업이기 때문일 수도 있지만 사실 Kubernetes보다 기본 정책이 엄격하다.
예를 들어, Docker Hub에서 사용할 수 있는 대부분의 컨테이너 이미지는 OpenShift에서는 실행되지 않는다.
root로 컨테이너를 실행하는 것을 금지하고 많은 공식적인 이미지들조차도 이 요구 사항을 충족하지 못하기 때문이다.
4. OpenShift 템플릿이 Kubernetes Helm 차트보다 flexibility가 낮음
5. Routers on OpenShift vs. Ingress on Kubernetes
6. 배포에 대한 접근
OpenShift에는 Controller가 아닌 DeploymentConfig라는 유사한 객체가 있지만 전체 프로세스를 제어하는 전용 Pod를 기반으로 하는 정교한 로직이 있다.
실행중인 많은 인스턴스와의 조정이 쉽지 않기 때문에 InitContainers는 동일하지 않다는 단점이 있으나 데이터베이스 스키마 변경 같은 업데이트를 위해 환경을 준비하기 위한 후크(Hook)를 사용할 수 있다는 장점이 있다.
7. Better management of container images
OpenShift는 컨테이너 이미지 관리를 위한 ImageStream 기능이 있어 Container Registry에서 이미지의 태그를 변경하는 것이 쉽다.
ImageStream을 사용하면 컨테이너 이미지를 한번 올린 다음 OpenShift에서 내부적으로 가상 태그를 관리할 수 있다.
하나의 프로젝트에서 devel 태그를 사용하고 내부적으로 참조만 변경하면 stable이나 prod 태그를 사용하고 내부적으로 관리할 수 있다. OpenShift에서는 레지스트리를 다루지 않는다.
8. Integrated CI/CD with Jenkins
Red Hat은 Kubernetes 프로젝트가 발견되기 훨씬 전에 OpenShift를 만들었으며 처음부터 PaaS 플랫폼이었다.
OpenShift의 추가 기능을 사용하면 CI/CD 파이프라인을 사용해 어플리케이션을 쉽게 배포할 수 있다.
9. OpenShift projects are more than Kubernetes namespaces
OpenShift에는 추가 기능이 있는 namespace 이상의 프로젝트가 있다.
설명 및 표시 이름과 같은 사소한 것 외에도 (수십 개가 있을 때 도움이 될 수 있음) 프로젝트는 몇 가지 기본 개체를 추가한다.
현재 프로젝트와 함께 몇 가지 역할 (정확한 역할 정의 객체)이 만들어 지지만 기본 프로젝트 템플릿을 수정하고 이를 사용하여 다른 객체를 프로비저닝 할 수 있다.
참고
'Study' 카테고리의 다른 글
데이터센터 관련 용어 (0) | 2023.05.08 |
---|---|
모니터링(Monitoring) (0) | 2023.02.08 |
ARN이란 ? (0) | 2022.10.18 |
SSH Proxy/Tunneling 개념 및 종류 (0) | 2022.04.05 |
APM이란 ? (0) | 2022.03.14 |
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!