0. B.G
KRE(Kubernetes Response Engine) 이란 보안 위협으로부터 보안 이벤트를 발생시켜주는 playbook이다.
serverless framework 이란 k8s에서 별도의 application을 위한 container(pod, deployment)를 실행하지 않고, 함수만 작성하여 서비스를 제공할 수 있도록 하는 기술.
Serverless 이란 서버리스 클라우드 컴퓨팅 모델은 개발자의 생산성을 높이고 운영 비용을 절감할 수 있다. 실제로 서버가 존재하지 않는다기 보다는 개발자나 관리자가 서버인프라에 대해 신경쓰지 않아도 된다는 뜻이다.(장점 : 함수가 호출된 만큼만 비용이 청구, 비용절약, 인프라 관리 필요 없음 / 단점 : 각 함수에서 사용할 수 있는 자원이 제한됨, 벤더에 강한 의존성을 가짐, 로컬 데이터 사용 불가능)
cloud native ecosystem 이란 클라우드 네이티브 관련 오픈 소스들과 이를 설치 관리 운영하는 생태계를 의미
FaaS(Function as a Service) 서버리스 솔루션
Kubernetes Response Engine, Part 3: Falcosidekick + Knative | Falco
AWS 람다란 애플리케이션을 실행하기 위한 별도의 서버 셋업 없이 곧바로 코드를 실행해주는 서비스 이다. AWS 람다는 컨테이너를 지원하지 않지만, AWS에서는 람다와 별개로 컨테이너 기반의 서버리스 서비스 AWS 파게이트를 제공하고 있다. AWS 람다와 유사한 컴퓨팅 서비스로는 MS Azure Functions, GCP Cloud Functions, GCP Cloud Run, K8s Knatvie 등이 존재한다.
1. Kubeless
vmware-archive/kubeless: Kubernetes Native Serverless Framework (github.com)
Kubernetes Response Engine, Part 1: Falcosidekick + Kubeless | Falco
kubernetes-natvie serverless framework으로 아래 구성에 관계없이 사용가능
kubernetes의 auto-scaling, API routing, monitoring, troubleshooting등의 기능을 제공
2. OpenFaaS
Home | OpenFaaS - Serverless Functions Made Simple
코드 없이 이벤트 기반 함수와 마이크로서비스를 배포할 수 있게 해주는 serverless 툴
오픈 소스 프레임워크, 어떤 언어로든 함수 작성 가능, Docker/OCI-format 컨테이너로 패키징 가능, 쉬운 사용(UI 제공, CLI, 원클릭 설치 제공), scale 조정
3. Knative (★ Prd 목표)
Knative(케이네이티브) 개념, 장단점, 구성요소, 사례 및 비교 (redhat.com)
Knative란? (basic) - 호롤리한 하루 (gruuuuu.github.io)
서버리스 오픈소스 - knative #1 소개 & Serving (tistory.com)
knative는 서버리스 클라우드 네이티브 애플리케이션을 배포, 실행, 관리하기 위해 쿠버네티스에 구성 요소를 추가하는 오픈소스.
기능 : knative는 서버 프로비저닝 및 관리 태스크를 제거한다.
---
구성요소 : 구축, 제공, 이벤트
knative는 knative serving과 knative eventing으로 구성된다.
- Knative Serving : serverless application이나 function들을 배포하고 서빙하는 역활 수행 프레임워크. 간단하게 웹서비스 컨테이너만 배포하면, 로드밸런서의 배치, 오토 스케일링, 복잡한 배포(롤링/카날리)등을 지원, 서비스 매쉬 솔루션인 Istio와 통합을 통해서 다양한 모니터링을 제공
- Serverless 컨테이너의 빠른 배포
- 자동 scale up & down(오토 스케일링)
- Istio 기반 라우팅 & 네트워크 프로그래밍
- 배포된 코드와 config의 스냅샷기능
---
-
- Serving은 쿠버네티스 CRD(Custom Resource Definition)으로 정의된 4개의 오브젝트로 구성
- Service : Configuration과 Route 리소스의 추상화된 집합체. 워크로드의 lifecycle을 관리하는 역활
- Configuration : Serving으로 배포되는 서비스를 정의. 컨테이너 경로, 환경변수 등의 설정 정의
- Revision : 코드와 config의 스냅샷
- Route : User Service의 네트워크 엔드포인트를 제공. 하나 이상의 Revision을 가지며 서비스로 들어오는 트래픽을 Revision으로 라우팅할 수 있다.
- Serving은 쿠버네티스 CRD(Custom Resource Definition)으로 정의된 4개의 오브젝트로 구성
- Knative Eventing(Broker + Trigger)
- 비동기 메시지 처리를 위한 모듈. 이벤트들을 Knative에 event source에 등록되고 해당 이벤트가 발생되면 지정된 knative 서비스로 이벤트 메시지를 전송하는 루틴으로 동작.
-
- Broker : 이벤트 소스로부터 메시지를 받아 저장하는 버킷역활
- Trigger : 특정 메시지 패턴만 서비스로 보낼 수 있게 하는 조건 역활
- Subscriber : 이벤트를 수신하여 처리하는 객체
4. Tekton
Tekton이란? - 호롤리한 하루 (gruuuuu.github.io)
Kubernetes Response Engine, Part 4: Falcosidekick + Tekton | Falco
Tekton : CI/CD 파이프라인을 빠르게 구축하기 위한 프레임워크를 제공하는 CN 오픈 소스
특징
- 재사용 : 모든 task들은 다른 pipeline과 완전히 독립적으로 사용가능
- 표준화 : Tekton은 K8s의 Custom Resource를 사용해 정의
- 기능의 확장성 : Tekton Hub를 통해 Tekton 커뮤니티에서 제작한 여러 종류의 task 들을 사용가능
- step < task < pipeline
사용 처
Jenkins X의 pipeline으로 Tekton 사용, Openshift에서도 pipeline 서비스로 Tekton 추가
5. Argo
Kubernetes Response Engine, Part 5: Falcosidekick + Argo | Falco
컨테이너 기반 워크플로우 솔루션 Argo (tistory.com)
쿠버네티스 Argo workflow 소개 | 커피고래의 노트 (coffeewhale.com)
Argo
argo는 컨테이너 워크플로우 솔루션이다. 컨테이너 기반의 빅데이터 분석, CI/CD, 머신러닝 파이프라인을 만들때 유용하게 사용할 수 있는 오픈 소스 솔루션이다. argo의 경우는 워크플로우를 시작하면서 컨테이너를 배포하고, 워크플로우 작업이 끝나면 컨테이너가 종료되기 때문에, 실행할때만 컨테이너를 통해서 컴퓨팅 자원을 점유하기 때문에 자원 활용면에서 장점이 있다. (다른 것들은 컴포넌트가 이미 돌고 있음을 전제로 하고, 각각의 컴포넌트를 흐름에 따라서 호출하는데 목적이 맞추어져 있다) 또, 원하는 Job(컨테이너 단위) 을 실행할 수 있고 각 Job 간의 종속성을 부여하여 순서대로 실행할 수 있으며 병렬로 여러 Job을 동시에 실행할 수 있다. CRD(CustomResourceDefinition)을 정의하고 YAML 파일을 만들어 쿠버네티스에 호출한다.
---
Argo Events: Falcosidekick에서 이벤트를 받게 된다. 그리고 이를 knative의 broker와 유사한 bus에 넣게된다.
Argo Workflow: 특정 기준에 걸리는 event가 발생하면 event bus에서 해당 내용을 trigger 해온다.
장점
- 컨테이너 단위이기 때문에 고립성/독립성이 좋다.
- 하나의 역활을 맡는 Job을 단일하게 개발할 수 있기 때문에 재사용성을 무척 높일 수 있다
단점
- Pod 생성, 삭제 비용이 크다.
6. Cloud Run & Cloud Functions
Kubernetes Response Engine, Part 6: Falcosidekick + Cloud Run | Falco
Cloud Run : Falcosidekick을 위해 GCP환경에서 돌리는 KRE
Cloud Run은 컨테이너 기반으로 서비스를 제공한다. 컨테이너 환경으로 구동 가능한 어떤 것이든 서비스가 가능하다는 장점.
7. Cloud Functions
[구글 클라우드 플랫폼] GCP : Cloud Functions (tistory.com)
Kubernetes Response Engine, Part 7: Falcosidekick + Cloud Functions | Falco
Cloud Functions는 직접 코드를 올려서 서비스를 제공한다. 코드 제약이 생기지만 보다 다양한 GCP의 기능들을 제공한다.
9. 비교
Kubeless |
|
|
OpenFaas |
|
|
Knatvie |
|
|
Tekton |
|
|
Argo |
|
|
Cloud Run |
|
|
Cloud Functions |
|
|
'Development(Web, Server, Cloud) > 22) LINUX - Cloud' 카테고리의 다른 글
Google Cloud Study Jam 신청과 학습방법 알아보기 (0) | 2022.09.20 |
---|---|
ss 2일차 (0) | 2022.07.25 |
ss 1일차 (0) | 2022.07.21 |
클라우드 76일차 (0) | 2022.05.17 |
클라우드 75일차 (0) | 2022.05.16 |