--- id: devops-spinnaker-tekton title: Spinnaker / Tekton β€” modern CI/CD pipelines category: Coding status: draft source_trust_level: B verification_status: conceptual created_at: 2026-05-09 updated_at: 2026-05-09 tags: [devops, cicd, vibe-coding] tech_stack: { language: "YAML", applicable_to: ["DevOps"] } applied_in: [] aliases: [Spinnaker, Tekton, CI/CD pipeline, multi-cloud, continuous delivery, Netflix, K8s pipeline] --- # Spinnaker / Tekton > Modern CI/CD beyond Jenkins. **Spinnaker (multi-cloud), Tekton (K8s-native)**. ## πŸ“– 핡심 κ°œλ… - Spinnaker: Netflix 의 multi-cloud CD. - Tekton: K8s-native pipeline. - λ§€ stage = container. - GitOps μΉœν™”. ## πŸ’» μ½”λ“œ νŒ¨ν„΄ ### Spinnaker pipeline (UI / JSON) ```json { "name": "Deploy", "stages": [ { "type": "bake", "package": "my-app", "baseOs": "ubuntu" }, { "type": "deploy", "clusters": [{ "account": "aws", "region": "us-east-1" }] }, { "type": "manualJudgment", "message": "Approve prod?" }, { "type": "deploy", "clusters": [{ "account": "aws-prod" }] } ] } ``` β†’ Multi-cloud (AWS, GCP, Azure, K8s). ### Spinnaker 의 강점 ``` - Multi-cloud (이주 cluster). - Canary (Kayenta automated analysis). - Manual judgment (approval). - Trigger (Jenkins, Docker, cron). - Audit / RBAC. ``` ### Tekton (K8s-native) ```yaml apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: build-deploy spec: tasks: - name: build taskRef: { name: build-image } - name: deploy runAfter: [build] taskRef: { name: deploy-app } ``` ```yaml apiVersion: tekton.dev/v1 kind: Task metadata: name: build-image spec: steps: - name: build image: gcr.io/kaniko-project/executor args: [--dockerfile=./Dockerfile, --destination=my-image] ``` β†’ λ§€ task = pod. ### PipelineRun ```yaml apiVersion: tekton.dev/v1 kind: PipelineRun metadata: name: pr-1 spec: pipelineRef: { name: build-deploy } ``` β†’ Trigger. ### Tekton Triggers ```yaml apiVersion: triggers.tekton.dev/v1beta1 kind: EventListener metadata: name: github-listener spec: triggers: - name: github-push interceptors: - ref: { name: 'github' } bindings: - ref: { name: github-binding } template: ref: build-deploy-template ``` β†’ GitHub webhook κ°€ PipelineRun. ### vs Jenkins ``` Jenkins: - Mature. - Plugin 큰 ecosystem. - Java VM. - 큰 server. Spinnaker: - Multi-cloud first. - Canary / blue-green. - Netflix scale. Tekton: - K8s-native. - μž‘μ€ (pod 별). - GitOps. ``` β†’ K8s = Tekton. Multi-cloud / 큰 enterprise = Spinnaker. Legacy = Jenkins. ### vs GitHub Actions ``` GitHub Actions: - GitHub μΉœν™”. - Action marketplace. - μž‘μ€-쀑간 project. Tekton: - K8s-native (자체 cluster). - 큰 organization. β†’ Modern startup = GHA. 큰 enterprise + K8s = Tekton. ``` ### vs Argo Workflows ``` Argo Workflows: - K8s-native (Tekton 와 λΉ„μŠ·). - DAG-based. - 더 popular (Argo ecosystem). Tekton: - Linear pipeline. - More μž‘μ€ + simpler. β†’ Argo κ°€ 더 powerful. Tekton κ°€ 더 simple. ``` ### Spinnaker canary (Kayenta) ```json { "stages": [ { "type": "kayentaCanary", "canaryConfig": { "metricsAccountName": "datadog", "scoreThresholds": { "marginal": 75, "pass": 95 } } } ] } ``` β†’ Datadog metrics κ°€ canary 의 OK / abort. ### Tekton + ArgoCD ``` 1. PR merge β†’ Tekton build image. 2. Tekton update Helm chart (git). 3. ArgoCD detect change β†’ deploy. β†’ Build (Tekton) + Deploy (ArgoCD). ``` ### Spinnaker + ArgoCD ``` Spinnaker = orchestrator. ArgoCD = K8s sync. β†’ Spinnaker κ°€ multi-cluster orchestrate. ``` ### Production - **Netflix**: Spinnaker 의 creator. - **Google**: 자체 (similar to Tekton). - **Capital One**: Spinnaker. - **IBM**: Tekton 의 contributor. ### When NOT? ``` Spinnaker: - μž‘μ€ team (overkill). - Single cloud (simpler tool). Tekton: - μž‘μ€ / non-K8s. - GitHub-only (GHA μΆ©λΆ„). ``` ### Cost ``` Spinnaker: free (open) + 큰 운영 cost. Tekton: free + K8s cost. GitHub Actions: per-use. Jenkins: free + 운영. β†’ 운영 cost κ°€ 큰 factor. ``` ### Monitoring ``` - Pipeline duration. - Failure rate. - Queue depth. - Stage-level metric. β†’ Datadog / Prometheus. ``` ### Best practice ``` 1. Pipeline as code (git). 2. λ§€ stage 의 timeout. 3. Auto-rollback. 4. Manual approval (production). 5. Canary / blue-green. 6. Audit log. ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ | 상황 | μΆ”μ²œ | |---|---| | K8s-native | Tekton / Argo Workflows | | Multi-cloud | Spinnaker | | GitHub project | GitHub Actions | | Legacy enterprise | Jenkins | | μž‘μ€ startup | GHA / GitLab CI | | Canary auto-analysis | Spinnaker (Kayenta) | ## ❌ μ•ˆν‹°νŒ¨ν„΄ - **Spinnaker on single cloud**: overkill. - **Tekton + non-K8s**: 잘λͺ» 선택. - **λͺ¨λ“  κ±° manual approval**: slow. - **No timeout**: hang. - **No audit**: incident response 어렀움. ## πŸ€– LLM ν™œμš© 힌트 - Spinnaker = multi-cloud + Netflix-scale. - Tekton = K8s-native pipeline. - Argo Workflows = Tekton 의 popular alternative. - GitOps + Spinnaker / Tekton = production. ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ - [[DevOps_CI_CD_Pipeline_Patterns]] - [[DevOps_ArgoCD_Apps_Deep]] - [[DevOps_Argo_Rollouts]]