This tutorial shows you how to
- Create a Kubernetes cluster with minikube
- Install Tekton Pipelines and Tekton Dashboard
- Import some Tekton resources
- Create a TaskRun and monitor its logs
- Create a PipelineRun and monitor its logs
Caution
This tutorial describes setting Dashboard up in READ-WRITE mode.
Anyone who can access the Dashboard can use the permissions granted to the service account. Make sure to take additional precautions if your deployment is publicly accessible.
READ-WRITE mode is not a requirement for Dashboard to operate, and can be installed in READ-ONLY mode.
- Install minikube. You only have to complete the step 1, "Installation".
- Install kubectl
Create a cluster
minikube start --profile tekton-dashboard-tutorial
The process takes a few seconds, you see an output similar to the following, depending on the minikube driver that you are using:
😄 [tekton-dashboard-tutorial] minikube v1.25.2 ✨ Using the docker driver based on existing profile 👍 Starting control plane node tekton-dashboard-tutorial in cluster tekton-dashboard-tutorial 🚜 Pulling base image ... 🔥 Creating docker container (CPUs=2, Memory=3886MB) ... 🐳 Preparing Kubernetes v1.23.3 on Docker 20.10.12 ... ▪ kubelet.housekeeping-interval=5m ▪ Generating certificates and keys ... ▪ Booting up control plane ... ▪ Configuring RBAC rules ... 🔎 Verifying Kubernetes components... ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5 🌟 Enabled addons: storage-provisioner, default-storageclass 🏄 Done! kubectl is now configured to use "tekton-dashboard-tutorial" cluster and "default" namespace by default
You can check that the cluster was successfully created with kubectl
:
kubectl cluster-info
The output confirms that Kubernetes is running:
Kubernetes control plane is running at https://127.0.0.1:39509 CoreDNS is running at https://127.0.0.1:39509/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
-
To install the latest version of Tekton Pipelines, use
kubectl
:kubectl apply --filename \ https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
-
Monitor the installation:
kubectl get pods --namespace tekton-pipelines --watch
When all components show Running
under the STATUS
column the installation
is complete.
Hit Ctrl + C to stop monitoring.
-
To install the latest version of Tekton Dashboard, use
kubectl
:kubectl apply --filename \ https://storage.googleapis.com/tekton-releases/dashboard/latest/release-full.yaml
NOTE: release-full.yaml installs dashboard in READ-WRITE mode.
-
Monitor the installation:
kubectl get pods --namespace tekton-pipelines --watch
When all components show Running
under the STATUS
column the installation
is complete.
Hit Ctrl + C to stop monitoring.
The Tekton Dashboard is not exposed outside the cluster by default, but we can access it by port-forwarding to the tekton-dashboard
Service on port 9097.
kubectl port-forward -n tekton-pipelines service/tekton-dashboard 9097:9097
You can now open the Dashboard in your browser at http://localhost:9097
The import must be executed using a ServiceAccount with permissions to create the resources being imported.
For this tutorial we will create a ClusterRole granting permission to create a number of Tekton resources, and a RoleBinding configuring this so that the default
ServiceAccount in the tekton-dashboard
namespace can create resources in the default
namespace.
kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: tekton-dashboard-tutorial
rules:
- apiGroups:
- tekton.dev
resources:
- tasks
- taskruns
- pipelines
- pipelineruns
verbs:
- get
- create
- update
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: tekton-dashboard-tutorial
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-dashboard-tutorial
subjects:
- kind: ServiceAccount
name: default
namespace: tekton-dashboard
EOF
We will import two simple Tasks and a Pipeline definition to demonstrate some of the features of the Dashboard.
- Navigate to the 'Import resources' page in the Dashboard using the link in the main navigation
- Fill in the form providing the following information:
- Repository URL:
https://github.com/tektoncd/dashboard
- Repository path:
docs/tutorial
- Target namespace:
default
- If selecting a different value, ensure the selected ServiceAccount has permission to create resources in this namespace
- Repository URL:
- Leave the default values for the rest of the fields
- Click the
Import and Apply
button
The Dashboard creates a PipelineRun to import the specified Tekton resources.
Click on the View status of this run
link to track the status of importing the Tekton resources. Alternatively, navigate to the PipelineRuns page and click on the name of the run in the table.
The Tekton resources have been imported when the PipelineRun has completed successfully. You will see the following logs for the 'import' step:
pipeline.tekton.dev/hello-goodbye created
task.tekton.dev/hello created
task.tekton.dev/goodbye created
Step completed successfully
-
Navigate to the TaskRuns page using the link in the main navigation
You will see the TaskRun that was created by the import process. Let's create another TaskRun using one of the Task definitions we just imported.
-
Click the Create button and fill in the form as follows:
- Namespace:
default
- Task:
hello
- Namespace:
-
Leave the default values for the rest of the fields
-
Click the Create button to create the TaskRun
Once the TaskRun is created you will be taken to the TaskRuns page. View the logs by clicking the TaskRun name in the table.
Wait until the TaskRun has completed successfully and you will see the following logs:
Hello World
Step completed successfully
Next let's create a PipelineRun using all of the resources we imported.
-
Navigate to the PipelineRuns page by clicking the link in the main navigation
-
Click the Create button
The form is similar to the one we saw for TaskRuns. Both forms are dynamic and provide Param fields based on the selected Task / Pipeline.
-
Fill in the form with the following information:
- Namespace:
default
- Pipeline:
hello-goodbye
- Params > hello-greeting:
Hello from the tutorial 😀
- Namespace:
-
Leave the default values for the rest of the fields
Note: If you leave the hello-greeting field empty, the default value
Hello from a Pipeline
defined in the Pipeline will be used. -
Click the Create button to create the PipelineRun
Once the PipelineRun is created you will be taken to the PipelineRuns page. View the logs by clicking the PipelineRun name in the table. On the PipelineRun details page you will see two TaskRuns, hello
and goodbye
, matching the Tasks defined in our Pipeline. Each of these has a step echo
which displays a message in the logs.
The logs for the hello
Task display the custom message we entered in the create form earlier.
Hello from the tutorial 😀
Step completed successfully
To delete the cluster that you created for this quickstart run:
minikube delete --profile tekton-dashboard-tutorial
The output confirms that your cluster was deleted:
🔥 Deleting "tekton-dashboard-tutorial" in docker ... 🔥 Deleting container "tekton-dashboard-tutorial" ... 🔥 Removing /home/user/.minikube/machines/tekton-dashboard-tutorial ... 💀 Removed all traces of the "tekton-dashboard-tutorial" cluster.
Try out some of our walk-throughs for more details on deploying and configuring the Tekton Dashboard for some common scenarios.
See Accessing the Dashboard for details of alternative methods of exposing the Dashboard outside the cluster, including guidance for authentication and authorization.