我们在之前的(安装和构建ci)实践中,用到都是tekton cli,查看ci执行情况都是通过logs,不是很友好。 tekton dashboard提供了很多的ui界面。这里我们来安装并使用。
-
创建dashboard.yaml
apiVersion: v1
kind: Namespace
metadata:
labels:
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboardapiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: extensions.dashboard.tekton.dev
spec:
group: dashboard.tekton.dev
names:
categories:
- tekton
- tekton-dashboard
kind: Extension
plural: extensions
shortNames:
- ext
- exts
preserveUnknownFields: false
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.apiVersion
name: API version
type: string
- jsonPath: .spec.name
name: Kind
type: string
- jsonPath: .spec.displayname
name: Display name
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
type: object
x-kubernetes-preserve-unknown-fields: true
served: true
storage: true
subresources:
status: {}apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboard
namespace: tekton-pipelinesapiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
labels:
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboard-info
namespace: tekton-pipelines
rules:- apiGroups:
- ""
resourceNames: - dashboard-info
resources: - configmaps
verbs: - get
- ""
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboard-backend
rules:- apiGroups:
- apiextensions.k8s.io
resources: - customresourcedefinitions
verbs: - get
- list
- apiextensions.k8s.io
- apiGroups:
- security.openshift.io
resources: - securitycontextconstraints
verbs: - use
- security.openshift.io
- apiGroups:
- tekton.dev
resources: - clustertasks
verbs: - get
- list
- watch
- tekton.dev
- apiGroups:
- triggers.tekton.dev
resources: - clusterinterceptors
- clustertriggerbindings
verbs: - get
- list
- watch
- triggers.tekton.dev
- apiGroups:
- ""
resources: - serviceaccounts
verbs: - get
- list
- watch
- ""
- apiGroups:
- dashboard.tekton.dev
resources: - extensions
verbs: - create
- update
- delete
- patch
- dashboard.tekton.dev
- apiGroups:
- tekton.dev
resources: - clustertasks
verbs: - create
- update
- delete
- patch
- tekton.dev
- apiGroups:
- triggers.tekton.dev
resources: - clusterinterceptors
- clustertriggerbindings
verbs: - create
- update
- delete
- patch
- triggers.tekton.dev
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboard-tenant
rules:- apiGroups:
- dashboard.tekton.dev
resources: - extensions
verbs: - get
- list
- watch
- dashboard.tekton.dev
- apiGroups:
- ""
resources: - events
- namespaces
- pods
- pods/log
verbs: - get
- list
- watch
- ""
- apiGroups:
- tekton.dev
resources: - tasks
- taskruns
- pipelines
- pipelineruns
- customruns
verbs: - get
- list
- watch
- tekton.dev
- apiGroups:
- triggers.tekton.dev
resources: - eventlisteners
- interceptors
- triggerbindings
- triggers
- triggertemplates
verbs: - get
- list
- watch
- triggers.tekton.dev
- apiGroups:
- tekton.dev
resources: - tasks
- taskruns
- pipelines
- pipelineruns
- customruns
verbs: - create
- update
- delete
- patch
- tekton.dev
- apiGroups:
- triggers.tekton.dev
resources: - eventlisteners
- interceptors
- triggerbindings
- triggers
- triggertemplates
verbs: - create
- update
- delete
- patch
- triggers.tekton.dev
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
labels:
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: tekton-dashboard-info
namespace: tekton-pipelines
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: tekton-dashboard-info
subjects:- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authenticated
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
rbac.dashboard.tekton.dev/subject: tekton-dashboard
name: tekton-dashboard-backend
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-dashboard-backend
subjects:- kind: ServiceAccount
name: tekton-dashboard
namespace: tekton-pipelines
apiVersion: v1
data:
version: v0.42.0
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
name: dashboard-info
namespace: tekton-pipelinesapiVersion: v1
kind: Service
metadata:
labels:
app: tekton-dashboard
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/name: dashboard
app.kubernetes.io/part-of: tekton-dashboard
app.kubernetes.io/version: v0.42.0
dashboard.tekton.dev/release: v0.42.0
version: v0.42.0
name: tekton-dashboard
namespace: tekton-pipelines
spec:
ports:
- name: http
port: 9097
protocol: TCP
targetPort: 9097
selector:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/name: dashboard
app.kubernetes.io/part-of: tekton-dashboard
type: LoadBalancerapiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: tekton-dashboard
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/name: dashboard
app.kubernetes.io/part-of: tekton-dashboard
app.kubernetes.io/version: v0.42.0
dashboard.tekton.dev/release: v0.42.0
version: v0.42.0
name: tekton-dashboard
namespace: tekton-pipelines
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/name: dashboard
app.kubernetes.io/part-of: tekton-dashboard
template:
metadata:
labels:
app: tekton-dashboard
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/name: dashboard
app.kubernetes.io/part-of: tekton-dashboard
app.kubernetes.io/version: v0.42.0
name: tekton-dashboard
spec:
containers:
- args:
- --port=9097
- --logout-url=
- --pipelines-namespace=tekton-pipelines
- --triggers-namespace=tekton-pipelines
- --read-only=false
- --log-level=info
- --log-format=json
- --namespace=
- --namespaces=
- --stream-logs=true
- --external-logs=
env:
- name: INSTALLED_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: registry.cn-hangzhou.aliyuncs.com/acs-demo-ns/tekton-dashboard:v0.42.0
livenessProbe:
httpGet:
path: /health
port: 9097
name: tekton-dashboard
ports:
- containerPort: 9097
readinessProbe:
httpGet:
path: /readiness
port: 9097
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsGroup: 65532
runAsNonRoot: true
runAsUser: 65532
seccompProfile:
type: RuntimeDefault
serviceAccountName: tekton-dashboard
volumes: []
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
labels:
app.kubernetes.io/component: dashboard
app.kubernetes.io/instance: default
app.kubernetes.io/part-of: tekton-dashboard
rbac.dashboard.tekton.dev/subject: tekton-dashboard
name: tekton-dashboard-tenant
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: tekton-dashboard-tenant
subjects:- kind: ServiceAccount
name: tekton-dashboard
namespace: tekton-pipelines
- apiGroups:
-
安装dashboard
kubectl apply -f dashboard.yaml
-
查看dashboard
kubectl get deploy -n tekton-pipelines | grep dashboard
kubectl get svc -n tekton-pipelines | grep dashboard
我的输出为:
carawang@ci %kubectl get svc -n tekton-pipelines | grep dashboard
tekton-dashboard LoadBalancer 10.103.207.156 <pending> 9097:30755/TCP 4m52s
因为我用的是minikube,没有endpoint可以供访问,需要forward一下。
-
forward dashboard
kubectl port-forward -n tekton-pipelines service/tekton-dashboard 9097:9097
不报错的话,就可以访问http://localhost:9097
- 查看pipelineruns等
可以看到界面很友好。