Skip to main content

local-development

Set up a local development environment for tekton-pruner. Use when onboarding, bootstrapping a kind cluster, deploying the operator locally, or iterating on controller and webhook changes. Covers kind, ko, Tekton Pipelines, and the observability stack (Prometheus + Jaeger).

Quellinformationen

Repository
tektoncd/pruner
Letzte Quellaktivität
8. Juni 2026 um 07:46
Erkannte Sprache von SKILL.md
Englisch
Sterne
6
Forks
20

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
local-development
description
Set up a local development environment for tekton-pruner. Use when onboarding, bootstrapping a kind cluster, deploying the operator locally, or iterating on controller and webhook changes. Covers kind, ko, Tekton Pipelines, and the observability stack (Prometheus + Jaeger).
license
Apache-2.0
compatibility
Requires go, kind, ko, kubectl, docker (or podman)
metadata
{"project":"tekton-pruner","maintainers":"tektoncd"}
allowed-tools
Bash(kind:*) Bash(ko:*) Bash(kubectl:*) Bash(docker:*) Bash(make:*) Read
# Local Development tekton-pruner is a Kubernetes controller and admission webhook that prunes Tekton `PipelineRun` and `TaskRun` resources based on TTL or history limits configured via a `ConfigMap` or per-namespace annotations. ## Prerequisites Install the following tools before proceeding: | Tool | Purpose | |------|---------| | `go` (≥ 1.26) | Build language | | `kind` | Local Kubernetes cluster | | `ko` | Build and push Go container images | | `kubectl` | Interact with the cluster | | `docker` or `podman` | Container runtime (podman sets `CONTAINER_RUNTIME=podman`) | ## Quick-Start: Full Cluster Setup The recommended path for a fresh local environment: ```bash cd hack/dev/kind/ ./install.sh ``` This script: 1. Starts a local container registry on port `5000` (`kind-registry`) 2. Creates a `kind` cluster named `kind` (override with `KIND_CLUSTER_NAME`) 3. Wires the cluster to the registry 4. Sets `KUBECONFIG` to `~/.kube/config.kind` 5. Deploys Tekton Pipelines and the pruner controller via `ko apply` After it completes, verify: ```bash export KUBECONFIG=~/.kube/config.kind kubectl get pods -n tekton-pipelines ``` ## Deploy Only the Pruner If you already have a cluster with Tekton Pipelines running: ```bash export KO_DOCKER_REPO=<your-registry> # e.g. ko.local or localhost:5000 ko apply -f config/ ``` To redeploy individual components after code changes: ```bash # Controller only ko apply -f config/controller.yaml # Webhook only ko apply -f config/webhook.yaml ``` ## Observability Stack (Optional) For metrics and tracing during development: ```bash ./hack/setup-observability-dev.sh ``` Endpoints after setup: | Service | URL | |---------|-----| | Prometheus | http://localhost:9091 | | Jaeger (tracing) | http://localhost:16686 | | Pruner metrics | http://localhost:9090/metrics | ## Iterating on Code 1. Edit Go source under `pkg/` or `cmd/`. 2. Run unit tests to verify: `make test-unit` 3. Format code: `make fmt` 4. Rebuild and redeploy (ensure `KO_DOCKER_REPO` is set — see "Deploy Only the Pruner" above): `ko apply -f config/controller.yaml` 5. Check controller logs: ```bash kubectl -n tekton-pipelines logs deployment/tekton-pruner-controller -f ``` ## Tear Down ```bash ko delete -f config/ # or to destroy the entire kind cluster: kind delete cluster --name kind ``` ## Environment Variables | Variable | Default | Purpose | |----------|---------|---------| | `KO_DOCKER_REPO` | _(required)_ | Image registry for ko builds | | `KIND_CLUSTER_NAME` | `kind` | Name of the kind cluster | | `CONTAINER_RUNTIME` | `docker` | Set to `podman` for rootless builds | ## Common Issues - **`ko` not found**: Run `make apply` — it auto-installs `ko` into `.bin/`. - **Registry not reachable**: Ensure `kind-registry` container is running: `docker ps | grep kind-registry` - **Webhook TLS errors**: The webhook cert is managed by the operator. If invalid, delete the `Secret` and restart the webhook pod.
Auf GitHub ansehen