Tekton 이란?
Tekton은 지속적 통합 및 배포(CI/CD) 시스템을 만들 수 있는 강력하면서도 유연한 Kubernetes 기반 오픈소스 프레임워크
쿠버네티스의 CRD(Custom Resource Definition)를 활용하여 쿠버네티스 제어판에서 파이프라인 태스크를 실행. 또한 Tekton은 Jenkins, Jenkins X, Skaffold, Knative와 같은 기존 CI/CD 툴과 효과적으로 연동
재사용 | tekton의 모든 task들은 다른 pipeline과 완전히 독립적으로 사용할 수 있다. 모듈화가 잘 돼있어 여러 pipeline에서 필요한 task를 갖다 쓸 수 있다. |
표준화 | Tekton은 Kubernetes의 Custom Resource를 사용해 정의된다. |
기능의 확장성 | Tekton Hub를 통해 Tekton커뮤니티에서 제작한 여러 종류의 task들을 사용할 수 있다. |
Tekton 구조
Step |
|
Task |
|
Pipeline |
|
TaskRun |
|
PipelineRun |
|
Tekton trigger 란?
특정 이벤트가 발생할 때마다 이벤트를 web hook으로 받아 등록된 pipeline을 자동으로 실행 시키는 역할
EventListener |
Pod로 실행되며, 서비스를 노출시켜 HTTP기반의 event를 받아 trigger로 전달 |
Trigger | 전달된 이벤트에 대한 검증, 파싱 로직을 실행시킨 뒤 Trigger Template과 Trigger Binding을 연결 |
Trigger Binding |
EventListener로 부터 받은 데이터를 Trigger Template의 파라미터와 매핑 |
Trigger Template |
Trigger Binding/EventListener로 부터 어떤 파라미터를 받을건지, 어떤 파이프라인을 실행시킬건지 정의 |
용어
CI/CD
- CI/CD
- 애플리케이션 개발 단계를 자동화 하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법
- 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포
- CI
- 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미
- CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.
- CD
- 지속적인 서비스 제공(Continuous Delivery) 및/또는 지속적인 배포(Continuous Deployment)를 의미
- 지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리(예: GitHub 또는 컨테이너 레지스트리)에 자동으로 업로드되는 것을 의미
- 지속적인 배포란 개발자의 변경 사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리스하는 것을 의미
- 개발자들이 코드를 계속 작성하면, 사용자 및 내부 사용자들이 계속 쓸 수 있게 만드는것
CRD
- 사용자에게 필요한 자원으로 쿠버네티스 안에서 정의해 사용하는 것
- 쿠버네티스는 사용자가 원하는 모든 기능을 기본 기능으로 제공하는 것이 비효율적이라 판단해 자신이 필요한 기능을 직접 추가해서 사용하는 사용자 정의 자원과 사용자 정의 컨트롤러를 제공
- 사용자 정의 컨트롤러
- 사용자 정의 자원을 이용해서 원하는 동작을 하려면 사용자 정의 컨트롤러로 API를 만들어야 한다.
- 사용자 정의 자원으로 원하는 상태를 선언하면 사용자 정의 컨트롤러가 해당 상태를 맞추는데 필요한 처리를 한다.
- 대표적인 사용 방법으로 K네이티브가 있다.
- 사용자 정의 자원 정의(주로 CRD를 만드는 방법을 사용)
- CRD
- Aggregated API
K네이티브
- 서버리스 클라우드 네이티브 애플리케이션을 배포, 실행, 관리하기 위해 쿠버네티스에 구성 요소를 추가하는 오픈소스 커뮤니티 프로젝트
- 특징
- kubernetes 위에서 기동
- 특정 클라우드 종속성이 없음
- On-Premise(자체적으로 보유한 전산 서버)에서도 설치 가능
'클라우드 > Kubernetes(쿠버네티스)' 카테고리의 다른 글
[kubernetes] 사용자 권한 (keycloak) (0) | 2021.07.25 |
---|---|
[kubernetes] Jenkins vs Jenkins X (0) | 2021.07.25 |
[쿠버네티스] Helm (0) | 2021.07.08 |
[쿠버네티스] 시크릿 (0) | 2021.06.11 |
[쿠버네티스] 컨피그맵 (0) | 2021.06.09 |