if(Kakao) 2021: 혼자서 퍼블릭 클라우드 전체를 배포하는 방법

심우열·2023년 1월 30일
0

OpenStack Trend

목록 보기
1/2

영상 바로가기

혼자서 퍼블릭 클라우드 전체를 배포하는 방법

쿠버네티스 기반의 CI/CD로 오픈스택을 배포하는 방법

퍼블릭클라우드

1. 기존

1. 기존에 IT 서비스를 제공하기 위해서 회사내 서버실에 물리적인 장비를 구성하고 관리
2. 서버 뿐만 아니라 네트워크 환경 구성을 위해 많은 인력, 비용, 준비기간 소모

2. 퍼블릭클라우드는?

1. 위와 같은 준비과정을 클릭 몇번으로 구성 가능
2. 물리적인 공간 없이 대규모 서비스를 위한 인프라 구성
3. 수시로 변화하는 서비스 요구사항에 맞게 변경 가능

쿠버네티스와 오픈스택

1. 오픈스택

1. 클라우드 인프라스트럭쳐에 서비스를 제공하는 소프트웨어 집합
2. 오픈스택으로 다양한 IT resource제공 가능
3. 하지만 오픈스택은 SDN, virtual machine, object storage, block storage 등등 20여개의 서비스를 배포해야함
4. 위와 같은 여러 서비스들이 microservice 처럼 rest api 통신으로 상호작용하기 때문에 오픈스택 자체의 관리가 어려움

2. 쿠버네티스

1. 위와같은 관리의 어려움을 덜어줌
2. 컨테이너화된 워크로드와 서비스를 실행하고 관리하기 위한 프레임워크
3. 애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴을 제공함

3. 쿠버네티스로 오픈스택을 관리하는 방법

1. 쿠버네티스 위에 오픈스택을 배포하는 오픈소스 프로젝트인 OpenStack-Helm을 사용
2. Cloud 네이티브한 애플리케이션: 동적인 클라우드 환경에서 실행되는 scalable 한 애플리케이션
3. Kubernetes 네이티브한 애플리케이션: 쿠버네티스 환경에서 관리되며 쿠버네티스의 이점을 누릴 수 있는 애플리케이션

4. 오픈스택 배포를 위한 CI/CD 애플리케이션

1. 오픈스택의 20여개의 서비스가 서로 다른 의존성을 갖고 있음
2. 따라서 각 서비스들 간의 의존성을 고려해서 배포할 수 있어야 함

클라우드 전체를 배포하는 방법

1. CI/CD

1. CI/CD(Git and Github)

1.Source Code Management(SCM)
2. Helm charts and Helm values

2. CI/CD(Prow를 이용한 CI)

1. chatOps, 코드리뷰
2. periodic, postsubmit, presubmit
3. 릴리즈노트 생성

3. CI/CD(Tekton을 이용한 배포 pipeline)

1. 실제로 오픈스택을 배포하기 위한 방법
2. pipeline: 클라우드
3. task(pod based): 오픈스택 서비스
4. steps(container based): 각 서비스를 위한 작업들

*Kubernetes pod?

1. Kubernetes pod 이란, Linux 컨테이너를 하나 이상 모아 놓은 것으로, 쿠버네티스 애플리케이션의 최소 단위
2. Kubernetes 시스템에서는 같은 포드에 속한 컨테이너끼리 동일한 컴퓨팅 리소스를 공유함
3. 이러한 컴퓨팅 리소스를 쿠버네티스에 풀링하여 클러스터를 만들고, 이를 바탕으로 더 강력하고 지능적으로 분산된 애플리케이션 실행 시스템을 제공할 수 있음
4. 포드와 클러스터의 관계 때문에 쿠버네티스는 직접 컨테이너를 실행하지 않음
5. 컨테이너를 그룹화하면 실제로는 어느정도 분리된 상태더라도 마치 동일한 물리 하드웨어를 공유하는 것처럼 컨테이너끼리 통신 할 수 있게 됨
6. 이처럼 컨테이너를 포드로 구성하는 것은, 쿠버네티스의 유명한 기능인 복제의 토대
7. 쿠버네티스는 복제 컨트롤러를 사용하여 필요에 따라 애플리케이션을 수평으로 스케일 할 수 있음
8. 어떠한 포드가 과부하 상태가 되면, 쿠버네티스가 이를 복제해 다음 클러스터에 배포하고,
9. 위와 같은 방법으로 과부하 상태인 포드의 정상작동을 지원하며, 지속적으로 복제되며 시스템의 내장애성을 제공

2. DEV 환경 배포

1. DEV 환경 배포(Terraform 이용)

2.DEV 환경 배포(VM 위에 Terraform 이용)

3. STAGE/PROD 환경 배포

profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글