1+ apiVersion : halkyon.io/v1alpha1
2+ kind : Platform
3+ metadata :
4+ name : ingress-tekton
5+ namespace : platform
6+ spec :
7+ version : 0.1.0
8+ description : " A platform installing: nginx ingress, cert manager, tekton & tekton dashboard and exposing the ui at the address https://tekton.localtest.me:8443"
9+ packages :
10+ - name : nginx-ingress
11+ description : " nginx-ingress package"
12+ pipeline :
13+ steps :
14+ - name : install
15+ image : dtzar/helm-kubectl
16+ namespace :
17+ name : default
18+ helm :
19+ chart :
20+ repoUrl : https://kubernetes.github.io/ingress-nginx
21+ name : ingress-nginx
22+ version : 4.12.2
23+ values : |
24+ controller:
25+ hostPort:
26+ enabled: true
27+ service:
28+ type: NodePort
29+ ingress:
30+ enabled: true
31+
32+ - name : cert-manager
33+ description : " cert-manager package"
34+ pipeline :
35+ steps :
36+ # Due to this problem: https://github.com/cert-manager/cert-manager/issues/7502 with the acquisition of the leader election which is taking time and stops the process to create cert manager resources
37+ # we will switch to Helm
38+ #
39+ # - name: install
40+ # image: dtzar/helm-kubectl
41+ # manifest:
42+ # url: https://github.com/cert-manager/cert-manager/releases/download/v1.16.3/cert-manager.yaml
43+
44+ - name : install
45+ image : dtzar/helm-kubectl
46+ namespace :
47+ name : kube-system
48+ helm :
49+ chart :
50+ repoUrl : https://charts.jetstack.io
51+ name : cert-manager
52+ version : v1.17.3
53+ release :
54+ name : cert-manager
55+ values : |
56+ global:
57+ leaderElection:
58+ namespace: kube-system # see: https://github.com/cert-manager/cert-manager/issues/7502
59+ crds:
60+ enabled: true
61+
62+ - name : self-signed
63+ description : " Generate a self signed root CA and issuer"
64+ pipeline :
65+ steps :
66+ # - name: init
67+ # image: dtzar/helm-kubectl
68+ # namespace:
69+ # name: cert-manager
70+ # waitCondition:
71+ # type: service
72+ # endpoint:
73+ # name: cert-manager-webhook
74+ # port: 443
75+ # protocol: https
76+ # path: validate
77+
78+ - name : init
79+ image : dtzar/helm-kubectl
80+ namespace :
81+ name : kube-system
82+ waitCondition :
83+ resource : deployment
84+ name : cert-manager-webhook
85+ type : rollout # rollout is only applicable for resources of type: deployment, daemonset or statefulset
86+ timeout : 90s
87+
88+ - name : init
89+ image : dtzar/helm-kubectl
90+ namespace :
91+ name : kube-system
92+ waitCondition :
93+ resource : deployment
94+ name : cert-manager-cainjector
95+ type : rollout
96+ timeout : 90s
97+
98+ - name : init
99+ image : dtzar/helm-kubectl
100+ namespace :
101+ name : kube-system
102+ waitCondition :
103+ resource : deployment
104+ name : cert-manager
105+ type : rollout
106+ timeout : 90s
107+
108+ - name : install
109+ image : dtzar/helm-kubectl
110+ script : |
111+ cat <<EOF | kubectl apply -f -
112+ ---
113+ apiVersion: cert-manager.io/v1
114+ kind: ClusterIssuer
115+ metadata:
116+ name: selfsigned
117+ spec:
118+ selfSigned: {}
119+ ---
120+ apiVersion: cert-manager.io/v1
121+ kind: Certificate
122+ metadata:
123+ name: selfsigned-ca
124+ namespace: kube-system
125+ spec:
126+ isCA: true
127+ commonName: selfsigned-ca
128+ secretName: root-secret
129+ privateKey:
130+ algorithm: ECDSA
131+ size: 256
132+ duration: 8760h
133+ renewBefore: 720h
134+ issuerRef:
135+ name: selfsigned
136+ kind: ClusterIssuer
137+ group: cert-manager.io
138+ EOF
139+
140+ - name : uninstall
141+ image : dtzar/helm-kubectl
142+ script : |
143+ kubectl delete clusterissuer/selfsigned
144+
145+ - name : tekton
146+ description : " Tekton package"
147+ pipeline :
148+ steps :
149+ # - name: init
150+ # image: dtzar/helm-kubectl
151+ # namespace:
152+ # name: default
153+ # waitCondition:
154+ # type: service
155+ # endpoint:
156+ # name: ingress-nginx-controller-admission
157+ # port: 443
158+ # path: /healthz
159+
160+ - name : init
161+ image : dtzar/helm-kubectl
162+ namespace :
163+ name : default
164+ waitCondition :
165+ resource : deployment
166+ name : ingress-nginx-controller
167+ type : rollout # rollout is only applicable for resources of type: deployment, daemonset or statefulset
168+ timeout : 90s
169+
170+ - name : install
171+ image : dtzar/helm-kubectl
172+ manifest :
173+ url : https://storage.googleapis.com/tekton-releases/pipeline/previous/v1.1.0/release.yaml
174+
175+ - name : tekton-dashboard
176+ description : " Tekton dashboard package"
177+ pipeline :
178+ steps :
179+ - name : install
180+ image : dtzar/helm-kubectl
181+ manifest :
182+ url : https://storage.googleapis.com/tekton-releases/dashboard/previous/v0.58.0/release-full.yaml
183+
184+ - name : install
185+ image : dtzar/helm-kubectl
186+ script : |
187+ cat <<EOF | kubectl apply -f -
188+ apiVersion: networking.k8s.io/v1
189+ kind: Ingress
190+ metadata:
191+ annotations:
192+ cert-manager.io/cluster-issuer: selfsigned
193+ nginx.ingress.kubernetes.io/ssl-redirect: "true"
194+ name: tekton-ui
195+ namespace: tekton-pipelines
196+ spec:
197+ ingressClassName: nginx
198+ tls:
199+ - hosts:
200+ - tekton.localtest.me
201+ secretName: ingress-tekton-cert
202+ rules:
203+ - host: tekton.localtest.me
204+ http:
205+ paths:
206+ - backend:
207+ service:
208+ name: tekton-dashboard
209+ port:
210+ number: 9097
211+ path: /
212+ pathType: Prefix
213+ EOF
214+
215+ - name : uninstall
216+ image : dtzar/helm-kubectl
217+ script : |
218+ kubectl delete -n tekton-pipelines ingress/tekton-ui
0 commit comments