Инсталляция Tekton


Инсталляция Tekton CLI

$ mkdir ~/tmp
$ cd ~/tmp/

$ vi tekton-setup.sh


export LATEST_VERSION=$(curl --silent "https://api.github.com/repos/tektoncd/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')

export LATEST_VERSION_SHORT=$(curl --silent "https://api.github.com/repos/tektoncd/cli/releases/latest" | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/' | cut -c 2-)

curl -LO "https://github.com/tektoncd/cli/releases/download/${LATEST_VERSION}/tkn_${LATEST_VERSION_SHORT}_$(uname -s)_$(uname -m).tar.gz"

sudo tar xvzf tkn_${LATEST_VERSION_SHORT}_$(uname -s)_$(uname -m).tar.gz -C /usr/local/bin/ tkn

$ bash tekton-setup.sh

Добавляем Tekton CRD в MiniKube

$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

$ tkn version
Client version: 0.31.0
Pipeline version: v0.48.0

$ kubectl get pods -n tekton-pipelines
NAME                                           READY   STATUS    RESTARTS   AGE
tekton-events-controller-54854b8875-t4v88      1/1     Running   0          101s
tekton-pipelines-controller-58f8d4f964-6sm7z   1/1     Running   0          101s
tekton-pipelines-webhook-7db988ddc6-jfwn5      1/1     Running   0          98s

$ kubectl get pods -n tekton-pipelines-resolvers
NAME                                                 READY   STATUS    RESTARTS   AGE
tekton-pipelines-remote-resolvers-85d9686f77-prnvh   1/1     Running   0          2m9s

$ kubectl get crds
NAME                                       CREATED AT
clustertasks.tekton.dev                    2023-05-25T18:14:16Z
customruns.tekton.dev                      2023-05-25T18:14:16Z
pipelineruns.tekton.dev                    2023-05-25T18:14:17Z
pipelines.tekton.dev                       2023-05-25T18:14:16Z
resolutionrequests.resolution.tekton.dev   2023-05-25T18:14:17Z
taskruns.tekton.dev                        2023-05-25T18:14:17Z
tasks.tekton.dev                           2023-05-25T18:14:17Z
verificationpolicies.tekton.dev            2023-05-25T18:14:17Z

Добавление Tekton Dashboard в MiniKube (Если нужно)

$ kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/release.yaml

Подключиться к dashboard

$ kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 8080:9097

$ localhost:8080

Installing Tekton Triggers (Если нужно)

// install the trigger custom resource definitions (CRDs)
$ kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/release.yaml

// An interceptor is an object that contains the logic necessary to validate and filter webhooks coming from various sources.
$ kubectl apply -f https://storage.googleapis.com/tekton-releases/triggers/latest/interceptors.yaml

$ kubectl apply -f https://raw.githubusercontent.com/tektoncd/triggers/main/examples/rbac.yaml

Now that Triggers is installed, you will be able to listen for events from GitHub, but for the webhooks to reach your cluster, you will need to expose a route to the outside world.

$ kubectl get pods -w -n tekton-pipelines
NAME                                                READY   STATUS    RESTARTS   AGE
tekton-dashboard-675769bb7c-8c5n5                   1/1     Running   0          12s
tekton-events-controller-54854b8875-mrpws           1/1     Running   0          3m48s
tekton-pipelines-controller-58f8d4f964-xl59v        1/1     Running   0          3m48s
tekton-pipelines-webhook-7db988ddc6-bhjg2           1/1     Running   0          3m47s
tekton-triggers-controller-6b6fcd7d6f-l4p8w         1/1     Running   0          2m49s
tekton-triggers-core-interceptors-b777b979c-pttxt   1/1     Running   0          2m43s
tekton-triggers-webhook-6fd5f94f75-ppvmm            1/1     Running   0          2m49s

$ tkn version
Client version: 0.31.0
Pipeline version: v0.48.0
Triggers version: v0.24.0
Dashboard version: v0.35.0