티스토리 뷰
Tekton은 Kubernetes 기반의 오픈소스 CI/CD 프레임워크입니다. 즉, **소프트웨어를 자동으로 빌드(build), 테스트(test), 배포(deploy)**하기 위한 파이프라인을 Kubernetes 리소스로 정의하고 실행할 수 있게 해줍니다.
✅ 핵심 요약
항목설명
무엇인가요? | Kubernetes 상에서 작동하는 CI/CD 파이프라인 도구 |
누가 만들었나요? | Google 주도 → 현재는 CD Foundation 소속 오픈소스 |
어디에 쓰이나요? | 코드 빌드, 테스트, 컨테이너 이미지 생성, 배포 자동화 등 |
어떤 특징이 있나요? | 선언적, 컨테이너 기반, 확장성 높음, 클라우드 네이티브 설계 |
📦 주요 구성 요소
구성요소설명
Task | 하나의 작업 단위 (예: 코드 빌드, 테스트, 이미지 푸시 등) |
Step | Task 내부에서 실행되는 실제 명령 (컨테이너 단위로 실행) |
Pipeline | 여러 Task를 순서대로 연결한 실행 흐름 |
PipelineRun | 실제로 파이프라인을 실행한 기록 |
Trigger | Git push 등 이벤트에 따라 Pipeline 실행 (웹훅 기반) |
Workspace | 여러 Task 간 데이터를 공유하기 위한 볼륨 공간 |
💡 동작 예시
yaml
복사편집
apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: build-app spec: steps: - name: build image: golang script: | go build -o app main.go
이런 방식으로 Kubernetes YAML 리소스 형태로 파이프라인을 구성하고, kubectl이나 Tekton CLI(tkn)로 실행합니다.
✅ Tekton의 장점
- Kubernetes 네이티브: 클러스터 환경에서 완벽하게 통합
- 확장성: 필요에 따라 커스텀 Task, 파이프라인 가능
- 클라우드에 적합: GitOps, DevOps, Cloud CI/CD 전략과 잘 맞음
- 보안 격리: 각 Step이 컨테이너로 실행되어 환경 격리 쉬움
❗ Tekton vs Jenkins
항목TektonJenkins
구조 | 쿠버네티스 네이티브, 선언형 | 독립 서버, GUI 중심 |
확장성 | 높은 유연성 (CRD 기반: Custom Resource Definition ) | 플러그인 중심 |
배포 | 클라우드에 적합 | 온프레미스에 적합 |
Tekton은 GitOps, Argo CD, Knative, Flux, OpenShift Pipelines 같은 툴들과도 잘 통합됩니다.
*CRD : Custom Resource Definition
Kubernetes에서는 기본적으로 Pod, Service, Deployment 같은 **기본 리소스 종류(Resource types)**가 존재합니다.
하지만 사용자가 **자신만의 새로운 리소스 타입(Custom Resource)**을 만들 수 있도록 해주는 기능이 바로 CRD입니다.
즉, CRD는:
"쿠버네티스 API에 새로운 리소스 종류를 추가하는 방법"
🔧 예시
예를 들어, Tekton은 쿠버네티스에 다음과 같은 자체 리소스 타입을 CRD로 등록해서 사용합니다:
yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: build-app
kind: Task
metadata:
name: build-app
여기서 Task, Pipeline, PipelineRun 등은 Kubernetes 기본 리소스가 아니라, Tekton이 정의한 CRD입니다.
✅ CRD의 장점
- 유연성: 자신만의 오브젝트 정의 가능
- Kubernetes 생태계 통합: kubectl, RBAC, 이벤트, 모니터링 등 모두 활용 가능
- 오퍼레이터 패턴의 기반 기술
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로젝트명변경
- 진열사랑
- $.extend
- PostgreSQL
- excel
- JQuery
- border-collapse
- getter
- Keycode
- 전후방탐색
- draw.io
- @ExceptionHandler
- caniuse
- object key
- QueryDSL
- element위치
- 여러 컬럼 update
- ul li로 테이블
- CSS
- DatePicker
- springboot
- setter
- devtools
- Javascript
- sumifs
- spring
- lombok
- oracle
- 정규식
- $.each
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함