5de1142824bf7a866f436f751cd21ccaeb6729d8
[osm/devops.git] /
1 #######################################################################################
2 # Copyright ETSI Contributors and Others.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #    http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13 # implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 #######################################################################################
17
18 apiVersion: argoproj.io/v1alpha1
19 kind: WorkflowTemplate
20 metadata:
21   name: cluster-management-wft
22   namespace: osm-workflows
23 spec:
24   templates:
25
26   # Create a PaaS cluster using CrossPlane (any cloud)
27   - name: create-crossplane-cluster
28     inputs:
29       parameters:
30       # Volumes with cloned repos
31       - name: fleet_volume_name
32       - name: fleet_mount_path
33         value: "/fleet"
34       - name: sw_catalogs_volume_name
35       - name: sw_catalogs_mount_path
36         value: "/sw-catalogs"
37
38       # Specific parameters
39       - name: cluster_kustomization_name
40       - name: cluster_name
41       ## As of today, one among `aks`, `eks` or `gke`:
42       - name: cluster_type
43       - name: providerconfig_name
44       - name: vm_size
45       - name: node_count
46       - name: cluster_location
47       - name: k8s_version
48       - name: public_key_mgmt
49       - name: public_key_new_cluster
50       - name: secret_name_private_age_key_for_new_cluster
51       - name: key_name_in_secret
52         value: "agekey"
53       - name: fleet_repo_url
54       - name: sw_catalogs_repo_url
55       - name: mgmt_project_name
56         value: "osm_admin"
57       ## Do we want to skip OSM's bootstrap?
58       - name: skip_bootstrap
59         value: "false"
60       ## AKS only (otherwise, empty)
61       - name: rg_name
62         values: ""
63       ## GKE only (otherwise, empty)
64       - name: preemptible_nodes
65         values: "false"
66       # Other parameters - Recommended to keep defaults
67       - name: mgmt_cluster_name
68         value: "_management"
69       - name: base_templates_path
70         value: "cloud-resources"
71       - name: cloned_fleet_folder_name
72         value: "fleet-osm"
73       - name: cloned_sw_catalogs_folder_name
74         value: "sw-catalogs-osm"
75       ## EKS only (otherwise, empty)
76       - name: cluster_iam_role
77       - name: cluster_private_subnets_id
78       - name: cluster_public_subnets_id
79       - name: cluster_subnets_configmap_name
80       # Debug?
81       - name: debug
82         value: "false"
83
84     container:
85       image: opensourcemano/osm-krm-functions:testing-daily
86       # imagePullPolicy: Always
87       env:
88       - name: PRIVATE_KEY_NEW_CLUSTER
89         valueFrom:
90           secretKeyRef:
91             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
92             key: "{{inputs.parameters.key_name_in_secret}}"
93       - name: DEBUG
94         value: "{{inputs.parameters.debug}}"
95       command: ["/app/scripts/entrypoint.sh"]
96       args:
97       - create_crossplane_cluster
98       - "{{inputs.parameters.cluster_kustomization_name}}"
99       - "{{inputs.parameters.cluster_name}}"
100       - "{{inputs.parameters.cluster_type}}"
101       - "{{inputs.parameters.providerconfig_name}}"
102       - "{{inputs.parameters.vm_size}}"
103       - "{{inputs.parameters.node_count}}"
104       - "{{inputs.parameters.cluster_location}}"
105       - "{{inputs.parameters.k8s_version}}"
106       - "{{inputs.parameters.public_key_mgmt}}"
107       - "{{inputs.parameters.public_key_new_cluster}}"
108       - ''
109       - "{{inputs.parameters.rg_name}}"
110       - "{{inputs.parameters.preemptible_nodes}}"
111       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
112       - "{{inputs.parameters.fleet_repo_url}}"
113       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
114       - "{{inputs.parameters.sw_catalogs_repo_url}}"
115       - "{{inputs.parameters.skip_bootstrap}}"
116       - "{{inputs.parameters.mgmt_project_name}}"
117       - "{{inputs.parameters.mgmt_cluster_name}}"
118       - "{{inputs.parameters.base_templates_path}}"
119       - "{{inputs.parameters.cluster_iam_role}}"
120       - "{{inputs.parameters.cluster_private_subnets_id}}"
121       - "{{inputs.parameters.cluster_public_subnets_id}}"
122       - "{{inputs.parameters.cluster_subnets_configmap_name}}"
123
124       volumeMounts:
125       - name: fleet-repo-volume
126         mountPath: '{{inputs.parameters.fleet_mount_path}}'
127       - name: sw-catalogs-repo-volume
128         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
129     volumes:
130       - name: fleet-repo-volume
131         persistentVolumeClaim:
132           claimName: '{{inputs.parameters.fleet_volume_name}}'
133       - name: sw-catalogs-repo-volume
134         persistentVolumeClaim:
135           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
136     securityContext:
137       runAsUser: 10000
138     #   runAsGroup: 10000
139     #   fsGroup: 10000
140
141
142   # Update a PaaS cluster created using CrossPlane (any cloud)
143   - name: update-crossplane-cluster
144     inputs:
145       parameters:
146       # Volumes with cloned repos
147       - name: fleet_volume_name
148       - name: fleet_mount_path
149         value: "/fleet"
150       - name: sw_catalogs_volume_name
151       - name: sw_catalogs_mount_path
152         value: "/sw-catalogs"
153
154       # Specific parameters
155       - name: cluster_kustomization_name
156       - name: cluster_name
157       ## As of today, one among `aks`, `eks` or `gke`:
158       - name: cluster_type
159       - name: providerconfig_name
160       - name: vm_size
161       - name: node_count
162       - name: cluster_location
163       - name: k8s_version
164       - name: public_key_mgmt
165       - name: public_key_new_cluster
166       - name: secret_name_private_age_key_for_new_cluster
167       - name: key_name_in_secret
168         value: "agekey"
169       - name: fleet_repo_url
170       - name: sw_catalogs_repo_url
171       - name: mgmt_project_name
172         value: "osm_admin"
173       ## AKS only (otherwise, empty)
174       - name: rg_name
175         values: ""
176       ## GKE only (otherwise, empty)
177       - name: preemptible_nodes
178         values: "false"
179       # Other parameters - Recommended to keep defaults
180       - name: mgmt_cluster_name
181         value: "_management"
182       - name: base_templates_path
183         value: "cloud-resources"
184       - name: cloned_fleet_folder_name
185         value: "fleet-osm"
186       - name: cloned_sw_catalogs_folder_name
187         value: "sw-catalogs-osm"
188       # Debug?
189       - name: debug
190         value: "false"
191
192     container:
193       image: opensourcemano/osm-krm-functions:testing-daily
194       # imagePullPolicy: Always
195       env:
196       - name: PRIVATE_KEY_NEW_CLUSTER
197         valueFrom:
198           secretKeyRef:
199             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
200             key: "{{inputs.parameters.key_name_in_secret}}"
201       - name: DEBUG
202         value: "{{inputs.parameters.debug}}"
203       command: ["/app/scripts/entrypoint.sh"]
204       args:
205       - update_crossplane_cluster
206       - "{{inputs.parameters.cluster_kustomization_name}}"
207       - "{{inputs.parameters.cluster_name}}"
208       - "{{inputs.parameters.cluster_type}}"
209       - "{{inputs.parameters.providerconfig_name}}"
210       - "{{inputs.parameters.vm_size}}"
211       - "{{inputs.parameters.node_count}}"
212       - "{{inputs.parameters.cluster_location}}"
213       - "{{inputs.parameters.k8s_version}}"
214       - "{{inputs.parameters.public_key_mgmt}}"
215       - "{{inputs.parameters.public_key_new_cluster}}"
216       - ''
217       - "{{inputs.parameters.rg_name}}"
218       - "{{inputs.parameters.preemptible_nodes}}"
219       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
220       - "{{inputs.parameters.fleet_repo_url}}"
221       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
222       - "{{inputs.parameters.sw_catalogs_repo_url}}"
223       ## Note that during upgrades, OSM's bootstrap is avoided:
224       - "true"
225       - "{{inputs.parameters.mgmt_project_name}}"
226       - "{{inputs.parameters.mgmt_cluster_name}}"
227       - "{{inputs.parameters.base_templates_path}}"
228
229       volumeMounts:
230       - name: fleet-repo-volume
231         mountPath: '{{inputs.parameters.fleet_mount_path}}'
232       - name: sw-catalogs-repo-volume
233         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
234     volumes:
235       - name: fleet-repo-volume
236         persistentVolumeClaim:
237           claimName: '{{inputs.parameters.fleet_volume_name}}'
238       - name: sw-catalogs-repo-volume
239         persistentVolumeClaim:
240           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
241     securityContext:
242       runAsUser: 10000
243     #   runAsGroup: 10000
244     #   fsGroup: 10000
245
246
247   # Create a PaaS cluster using CAPI (Openstack)
248   - name: create-capi-openstack-cluster
249     inputs:
250       parameters:
251       # Volumes with cloned repos
252       - name: fleet_volume_name
253       - name: fleet_mount_path
254         value: "/fleet"
255       - name: sw_catalogs_volume_name
256       - name: sw_catalogs_mount_path
257         value: "/sw-catalogs"
258       # Specific parameters
259       - name: cluster_kustomization_name
260       - name: cluster_name
261       - name: vm_size
262       - name: node_count
263       - name: k8s_version
264       - name: providerconfig_name
265       - name: public_key_mgmt
266       - name: public_key_new_cluster
267       - name: secret_name_private_age_key_for_new_cluster
268       - name: key_name_in_secret
269         value: "agekey"
270       - name: fleet_repo_url
271       - name: sw_catalogs_repo_url
272       - name: mgmt_project_name
273         value: "osm_admin"
274       ## CAPI and CAPI Openstack specific parameters
275       - name: control_plane_vm_size
276         value: ""
277       - name: control_plane_node_count
278         value: ""
279       - name: openstack_dns_nameservers
280         value: ""
281       - name: openstack_external_network_id
282         value: ""
283       - name: openstack_failure_domain
284         value: ""
285       - name: openstack_ssh_key_name
286         value: ""
287       - name: cluster_cni
288         value: ""
289       - name: openstack_worker_image_name
290         value: ""
291       - name: openstack_control_plane_image_name
292         value: ""
293       - name: capo_resources_namespace
294         value: "managed-resources"
295       ## Do we want to skip OSM's bootstrap?
296       - name: skip_bootstrap
297         value: "false"
298       # Other parameters - Recommended to keep defaults
299       - name: mgmt_cluster_name
300         value: "_management"
301       - name: base_templates_path
302         value: "cloud-resources/capi"
303       - name: cloned_fleet_folder_name
304         value: "fleet-osm"
305       - name: cloned_sw_catalogs_folder_name
306         value: "sw-catalogs-osm"
307       # Debug?
308       - name: debug
309         value: "false"
310
311     container:
312       image: opensourcemano/osm-krm-functions:testing-daily
313       # imagePullPolicy: Always
314       env:
315       - name: PRIVATE_KEY_NEW_CLUSTER
316         valueFrom:
317           secretKeyRef:
318             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
319             key: "{{inputs.parameters.key_name_in_secret}}"
320       - name: DEBUG
321         value: "{{inputs.parameters.debug}}"
322       command: ["/app/scripts/entrypoint.sh"]
323       args:
324       - create_capi_openstack_cluster
325       - "{{inputs.parameters.cluster_kustomization_name}}"
326       - "{{inputs.parameters.cluster_name}}"
327       - "{{inputs.parameters.vm_size}}"
328       - "{{inputs.parameters.control_plane_vm_size}}"
329       - "{{inputs.parameters.node_count}}"
330       - "{{inputs.parameters.control_plane_node_count}}"
331       - "{{inputs.parameters.k8s_version}}"
332       - "{{inputs.parameters.providerconfig_name}}"
333       - "{{inputs.parameters.openstack_dns_nameservers}}"
334       - "{{inputs.parameters.openstack_external_network_id}}"
335       - "{{inputs.parameters.openstack_failure_domain}}"
336       - "{{inputs.parameters.openstack_ssh_key_name}}"
337       - "{{inputs.parameters.cluster_cni}}"
338       - "{{inputs.parameters.openstack_worker_image_name}}"
339       - "{{inputs.parameters.openstack_control_plane_image_name}}"
340       - "{{inputs.parameters.public_key_mgmt}}"
341       - "{{inputs.parameters.public_key_new_cluster}}"
342       - ''
343       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
344       - "{{inputs.parameters.fleet_repo_url}}"
345       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
346       - "{{inputs.parameters.sw_catalogs_repo_url}}"
347       - "{{inputs.parameters.skip_bootstrap}}"
348       - "{{inputs.parameters.mgmt_project_name}}"
349       - "{{inputs.parameters.mgmt_cluster_name}}"
350       - "{{inputs.parameters.base_templates_path}}"
351       - '{{inputs.parameters.capo_resources_namespace}}'
352
353       volumeMounts:
354       - name: fleet-repo-volume
355         mountPath: '{{inputs.parameters.fleet_mount_path}}'
356       - name: sw-catalogs-repo-volume
357         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
358     volumes:
359       - name: fleet-repo-volume
360         persistentVolumeClaim:
361           claimName: '{{inputs.parameters.fleet_volume_name}}'
362       - name: sw-catalogs-repo-volume
363         persistentVolumeClaim:
364           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
365     securityContext:
366       runAsUser: 10000
367     #   runAsGroup: 10000
368     #   fsGroup: 10000
369
370
371   # Update a PaaS cluster created using CAPI (Openstack)
372   - name: update-capi-openstack-cluster
373     inputs:
374       parameters:
375       # Volumes with cloned repos
376       - name: fleet_volume_name
377       - name: fleet_mount_path
378         value: "/fleet"
379       - name: sw_catalogs_volume_name
380       - name: sw_catalogs_mount_path
381         value: "/sw-catalogs"
382       # Specific parameters
383       - name: cluster_kustomization_name
384       - name: cluster_name
385       - name: vm_size
386       - name: node_count
387       - name: k8s_version
388       - name: providerconfig_name
389       - name: public_key_mgmt
390       - name: public_key_new_cluster
391       - name: secret_name_private_age_key_for_new_cluster
392       - name: key_name_in_secret
393         value: "agekey"
394       - name: fleet_repo_url
395       - name: sw_catalogs_repo_url
396       - name: mgmt_project_name
397         value: "osm_admin"
398       ## CAPI and CAPI Openstack specific parameters
399       - name: control_plane_vm_size
400         value: ""
401       - name: control_plane_node_count
402         value: ""
403       - name: openstack_dns_nameservers
404         value: ""
405       - name: openstack_external_network_id
406         value: ""
407       - name: openstack_failure_domain
408         value: ""
409       - name: openstack_ssh_key_name
410         value: ""
411       - name: cluster_cni
412         value: ""
413       - name: openstack_worker_image_name
414         value: ""
415       - name: openstack_control_plane_image_name
416         value: ""
417       - name: capo_resources_namespace
418         value: "managed-resources"
419       # Other parameters - Recommended to keep defaults
420       - name: mgmt_cluster_name
421         value: "_management"
422       - name: base_templates_path
423         value: "cloud-resources/capi"
424       - name: cloned_fleet_folder_name
425         value: "fleet-osm"
426       - name: cloned_sw_catalogs_folder_name
427         value: "sw-catalogs-osm"
428       # Debug?
429       - name: debug
430         value: "false"
431
432     container:
433       image: opensourcemano/osm-krm-functions:testing-daily
434       # imagePullPolicy: Always
435       env:
436       - name: PRIVATE_KEY_NEW_CLUSTER
437         valueFrom:
438           secretKeyRef:
439             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
440             key: "{{inputs.parameters.key_name_in_secret}}"
441       - name: DEBUG
442         value: "{{inputs.parameters.debug}}"
443       command: ["/app/scripts/entrypoint.sh"]
444       args:
445       - update_capi_openstack_cluster
446       - "{{inputs.parameters.cluster_kustomization_name}}"
447       - "{{inputs.parameters.cluster_name}}"
448       - "{{inputs.parameters.vm_size}}"
449       - "{{inputs.parameters.control_plane_vm_size}}"
450       - "{{inputs.parameters.node_count}}"
451       - "{{inputs.parameters.control_plane_node_count}}"
452       - "{{inputs.parameters.k8s_version}}"
453       - "{{inputs.parameters.providerconfig_name}}"
454       - "{{inputs.parameters.openstack_dns_nameservers}}"
455       - "{{inputs.parameters.openstack_external_network_id}}"
456       - "{{inputs.parameters.openstack_failure_domain}}"
457       - "{{inputs.parameters.openstack_ssh_key_name}}"
458       - "{{inputs.parameters.cluster_cni}}"
459       - "{{inputs.parameters.openstack_worker_image_name}}"
460       - "{{inputs.parameters.openstack_control_plane_image_name}}"
461       - "{{inputs.parameters.public_key_mgmt}}"
462       - "{{inputs.parameters.public_key_new_cluster}}"
463       - ''
464       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
465       - "{{inputs.parameters.fleet_repo_url}}"
466       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
467       - "{{inputs.parameters.sw_catalogs_repo_url}}"
468       ## Note that during upgrades, OSM's bootstrap is avoided:
469       - "true"
470       - "{{inputs.parameters.mgmt_project_name}}"
471       - "{{inputs.parameters.mgmt_cluster_name}}"
472       - "{{inputs.parameters.base_templates_path}}"
473       - '{{inputs.parameters.capo_resources_namespace}}'
474
475       volumeMounts:
476       - name: fleet-repo-volume
477         mountPath: '{{inputs.parameters.fleet_mount_path}}'
478       - name: sw-catalogs-repo-volume
479         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
480     volumes:
481       - name: fleet-repo-volume
482         persistentVolumeClaim:
483           claimName: '{{inputs.parameters.fleet_volume_name}}'
484       - name: sw-catalogs-repo-volume
485         persistentVolumeClaim:
486           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
487     securityContext:
488       runAsUser: 10000
489     #   runAsGroup: 10000
490     #   fsGroup: 10000
491
492
493   # Create a PaaS Openshift cluster using ACM
494   - name: create-openshift-cluster
495     inputs:
496       parameters:
497       # Volumes with cloned repos
498       - name: fleet_volume_name
499       - name: fleet_mount_path
500         value: "/fleet"
501       - name: sw_catalogs_volume_name
502       - name: sw_catalogs_mount_path
503         value: "/sw-catalogs"
504       # Specific parameters
505       - name: cluster_kustomization_name
506       - name: cluster_name
507       - name: vm_size
508       - name: node_count
509       - name: k8s_version
510       - name: providerconfig_name
511       - name: public_key_mgmt
512       - name: public_key_new_cluster
513       - name: secret_name_private_age_key_for_new_cluster
514       - name: key_name_in_secret
515         value: "agekey"
516       - name: fleet_repo_url
517       - name: sw_catalogs_repo_url
518       - name: mgmt_project_name
519         value: "osm_admin"
520       ## Openshift specific parameters
521       - name: openshift_release
522       - name: infra_public_ssh_key
523       - name: control_plane_availability
524       - name: worker_cpu
525       - name: worker_memory
526       - name: worker_volume_size
527       - name: worker_storage_class
528       - name: base_domain
529       - name: mgmt_cluster_name
530       - name: hosted_clusters_project
531       - name: etcd_volume_size
532       ## Do we want to skip OSM's bootstrap?
533       - name: skip_bootstrap
534         value: "false"
535       # Other parameters - Recommended to keep defaults
536       - name: base_templates_path
537         value: "cloud-resources/capi"
538       - name: cloned_fleet_folder_name
539         value: "fleet-osm"
540       - name: cloned_sw_catalogs_folder_name
541         value: "sw-catalogs-osm"
542       # Debug?
543       - name: debug
544         value: "false"
545
546     container:
547       image: opensourcemano/osm-krm-functions:testing-daily
548       # imagePullPolicy: Always
549       env:
550       - name: PRIVATE_KEY_NEW_CLUSTER
551         valueFrom:
552           secretKeyRef:
553             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
554             key: "{{inputs.parameters.key_name_in_secret}}"
555       - name: DEBUG
556         value: "{{inputs.parameters.debug}}"
557       command: ["/app/scripts/entrypoint.sh"]
558       args:
559       - create_openshift_cluster
560       - "{{inputs.parameters.cluster_kustomization_name}}"
561       - "{{inputs.parameters.cluster_name}}"
562       - "{{inputs.parameters.k8s_version}}"
563       - "{{inputs.parameters.public_key_mgmt}}"
564       - "{{inputs.parameters.public_key_new_cluster}}"
565       - ''
566       - "{{inputs.parameters.openshift_release}}"
567       - "{{inputs.parameters.infra_public_ssh_key}}"
568       - "{{inputs.parameters.control_plane_availability}}"
569       - "{{inputs.parameters.node_count}}"
570       - "{{inputs.parameters.worker_cpu}}"
571       - "{{inputs.parameters.worker_memory}}"
572       - "{{inputs.parameters.worker_volume_size}}"
573       - "{{inputs.parameters.worker_storage_class}}"
574       - "{{inputs.parameters.base_domain}}"
575       - "{{inputs.parameters.mgmt_cluster_name}}"
576       - "{{inputs.parameters.hosted_clusters_project}}"
577       - "{{inputs.parameters.etcd_volume_size}}"
578       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
579       - "{{inputs.parameters.fleet_repo_url}}"
580       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
581       - "{{inputs.parameters.sw_catalogs_repo_url}}"
582       - "{{inputs.parameters.skip_bootstrap}}"
583       - "{{inputs.parameters.mgmt_project_name}}"
584       - "{{inputs.parameters.base_templates_path}}"
585       - ''
586       - ''
587
588       volumeMounts:
589       - name: fleet-repo-volume
590         mountPath: '{{inputs.parameters.fleet_mount_path}}'
591       - name: sw-catalogs-repo-volume
592         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
593     volumes:
594       - name: fleet-repo-volume
595         persistentVolumeClaim:
596           claimName: '{{inputs.parameters.fleet_volume_name}}'
597       - name: sw-catalogs-repo-volume
598         persistentVolumeClaim:
599           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
600     securityContext:
601       runAsUser: 10000
602     #   runAsGroup: 10000
603     #   fsGroup: 10000
604
605
606   # Update a PaaS cluster created using CAPI (Openstack)
607   - name: update-openshift-cluster
608     inputs:
609       parameters:
610       # Volumes with cloned repos
611       - name: fleet_volume_name
612       - name: fleet_mount_path
613         value: "/fleet"
614       - name: sw_catalogs_volume_name
615       - name: sw_catalogs_mount_path
616         value: "/sw-catalogs"
617       # Specific parameters
618       - name: cluster_kustomization_name
619       - name: cluster_name
620       - name: vm_size
621       - name: node_count
622       - name: k8s_version
623       - name: providerconfig_name
624       - name: public_key_mgmt
625       - name: public_key_new_cluster
626       - name: secret_name_private_age_key_for_new_cluster
627       - name: key_name_in_secret
628         value: "agekey"
629       - name: fleet_repo_url
630       - name: sw_catalogs_repo_url
631       - name: mgmt_project_name
632         value: "osm_admin"
633       ## Openshift specific parameters
634       - name: openshift_release
635       - name: infra_public_ssh_key
636       - name: control_plane_availability
637       - name: worker_cpu
638       - name: worker_memory
639       - name: worker_volume_size
640       - name: worker_storage_class
641       - name: base_domain
642       - name: mgmt_cluster_name
643       - name: hosted_clusters_project
644       - name: etcd_volume_size
645       # Other parameters - Recommended to keep defaults
646       - name: base_templates_path
647         value: "cloud-resources/capi"
648       - name: cloned_fleet_folder_name
649         value: "fleet-osm"
650       - name: cloned_sw_catalogs_folder_name
651         value: "sw-catalogs-osm"
652       # Debug?
653       - name: debug
654         value: "false"
655
656     container:
657       image: opensourcemano/osm-krm-functions:testing-daily
658       # imagePullPolicy: Always
659       env:
660       - name: PRIVATE_KEY_NEW_CLUSTER
661         valueFrom:
662           secretKeyRef:
663             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
664             key: "{{inputs.parameters.key_name_in_secret}}"
665       - name: DEBUG
666         value: "{{inputs.parameters.debug}}"
667       command: ["/app/scripts/entrypoint.sh"]
668       args:
669       - update_openshift_cluster
670       - "{{inputs.parameters.cluster_kustomization_name}}"
671       - "{{inputs.parameters.cluster_name}}"
672       - "{{inputs.parameters.k8s_version}}"
673       - "{{inputs.parameters.public_key_mgmt}}"
674       - "{{inputs.parameters.public_key_new_cluster}}"
675       - ''
676       - "{{inputs.parameters.openshift_release}}"
677       - "{{inputs.parameters.infra_public_ssh_key}}"
678       - "{{inputs.parameters.control_plane_availability}}"
679       - "{{inputs.parameters.node_count}}"
680       - "{{inputs.parameters.worker_cpu}}"
681       - "{{inputs.parameters.worker_memory}}"
682       - "{{inputs.parameters.worker_volume_size}}"
683       - "{{inputs.parameters.worker_storage_class}}"
684       - "{{inputs.parameters.base_domain}}"
685       - "{{inputs.parameters.mgmt_cluster_name}}"
686       - "{{inputs.parameters.hosted_clusters_project}}"
687       - "{{inputs.parameters.etcd_volume_size}}"
688       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
689       - "{{inputs.parameters.fleet_repo_url}}"
690       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
691       - "{{inputs.parameters.sw_catalogs_repo_url}}"
692       ## Note that during upgrades, OSM's bootstrap is avoided:
693       - "true"
694       - "{{inputs.parameters.mgmt_project_name}}"
695       - "{{inputs.parameters.base_templates_path}}"
696       - ''
697       - ''
698       volumeMounts:
699       - name: fleet-repo-volume
700         mountPath: '{{inputs.parameters.fleet_mount_path}}'
701       - name: sw-catalogs-repo-volume
702         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
703     volumes:
704       - name: fleet-repo-volume
705         persistentVolumeClaim:
706           claimName: '{{inputs.parameters.fleet_volume_name}}'
707       - name: sw-catalogs-repo-volume
708         persistentVolumeClaim:
709           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
710     securityContext:
711       runAsUser: 10000
712     #   runAsGroup: 10000
713     #   fsGroup: 10000
714
715
716   # Bootstrap remote cluster running in **ANY cloud**
717   - name: bootstrap-remote-cluster
718     inputs:
719       parameters:
720       # Volumes with cloned repos
721       - name: fleet_volume_name
722       - name: fleet_mount_path
723         value: "/fleet"
724       - name: sw_catalogs_volume_name
725       - name: sw_catalogs_mount_path
726         value: "/sw-catalogs"
727
728       # Specific parameters
729       - name: cluster_name
730       - name: cluster_kustomization_name
731       - name: public_key_mgmt
732       - name: public_key_new_cluster
733       - name: secret_name_private_age_key_for_new_cluster
734       - name: key_name_in_secret
735         value: "agekey"
736       - name: fleet_repo_url
737       - name: sw_catalogs_repo_url
738
739       # Other parameters - Recommended to keep defaults
740       - name: mgmt_project_name
741         value: "osm_admin"
742       - name: imported_cluster
743         value: "false"
744       - name: fleet_repo_dir
745         value: "/fleet/fleet-osm/"
746       - name: sw_catalogs_repo_dir
747         value: "/sw-catalogs/sw-catalogs-osm/"
748
749       # Debug/dry run?
750       - name: debug
751         value: "false"
752
753     container:
754       image: opensourcemano/osm-krm-functions:testing-daily
755       # imagePullPolicy: Always
756       env:
757       - name: PRIVATE_KEY_NEW_CLUSTER
758         valueFrom:
759           secretKeyRef:
760             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
761             key: "{{inputs.parameters.key_name_in_secret}}"
762       - name: DEBUG
763         value: "{{inputs.parameters.debug}}"
764       command: ["/app/scripts/entrypoint.sh"]
765       args:
766       - create_bootstrap_for_remote_cluster
767       - "{{inputs.parameters.cluster_name}}"
768       - "{{inputs.parameters.cluster_kustomization_name}}"
769       - "{{inputs.parameters.fleet_repo_dir}}"
770       - "{{inputs.parameters.sw_catalogs_repo_dir}}"
771       - "{{inputs.parameters.fleet_repo_url}}"
772       - "{{inputs.parameters.sw_catalogs_repo_url}}"
773       - "{{inputs.parameters.mgmt_project_name}}"
774       - "{{inputs.parameters.public_key_mgmt}}"
775       - "{{inputs.parameters.public_key_new_cluster}}"
776       - ''
777       - "{{inputs.parameters.imported_cluster}}"
778       volumeMounts:
779       - name: fleet-repo-volume
780         mountPath: '{{inputs.parameters.fleet_mount_path}}'
781       - name: sw-catalogs-repo-volume
782         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
783     volumes:
784       - name: fleet-repo-volume
785         persistentVolumeClaim:
786           claimName: '{{inputs.parameters.fleet_volume_name}}'
787       - name: sw-catalogs-repo-volume
788         persistentVolumeClaim:
789           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
790     securityContext:
791       runAsUser: 10000
792     #   runAsGroup: 10000
793     #   fsGroup: 10000
794
795
796   # Disconnect Flux in remote cluster running in **ANY cloud**
797   - name: disconnect-flux-remote-cluster
798     inputs:
799       parameters:
800       # Volumes with cloned repos
801       - name: fleet_volume_name
802       - name: fleet_mount_path
803         value: "/fleet"
804
805       # Specific parameters
806       - name: cluster_kustomization_name
807       - name: mgmt_project_name
808         value: "osm_admin"
809
810       # Other parameters - Recommended to keep defaults
811       - name: fleet_repo_dir
812         value: "/fleet/fleet-osm/"
813
814       # Debug/dry run?
815       - name: debug
816         value: "false"
817
818     container:
819       image: opensourcemano/osm-krm-functions:testing-daily
820       # imagePullPolicy: Always
821       env:
822       - name: DEBUG
823         value: "{{inputs.parameters.debug}}"
824       command: ["/app/scripts/entrypoint.sh"]
825       args:
826       - disconnect_flux_remote_cluster
827       - "{{inputs.parameters.cluster_kustomization_name}}"
828       - "{{inputs.parameters.fleet_repo_dir}}"
829       - "{{inputs.parameters.mgmt_project_name}}"
830       volumeMounts:
831       - name: fleet-repo-volume
832         mountPath: '{{inputs.parameters.fleet_mount_path}}'
833     volumes:
834       - name: fleet-repo-volume
835         persistentVolumeClaim:
836           claimName: '{{inputs.parameters.fleet_volume_name}}'
837     securityContext:
838       runAsUser: 10000
839     #   runAsGroup: 10000
840     #   fsGroup: 10000
841
842
843   # Delete cluster from **ANY** cloud
844   - name: delete-cluster
845     inputs:
846       parameters:
847       # Volumes with cloned repos
848       - name: fleet_volume_name
849       - name: fleet_mount_path
850         value: "/fleet"
851
852       # Specific parameters
853       - name: cluster_kustomization_name
854       - name: project_name
855         value: "osm_admin"
856
857       # Other parameters - Recommended to keep defaults
858       - name: fleet_repo_dir
859         value: "/fleet/fleet-osm/"
860       - name: mgmt_resources_dir
861         value: "{{inputs.parameters.fleet_repo_dir}}/{{inputs.parameters.project_name}}/managed-resources/_management"
862       - name: mgmt_cluster_name
863         value: "{{inputs.parameters.mgmt_cluster_name}}"
864
865     container:
866       image: opensourcemano/osm-krm-functions:testing-daily
867       # imagePullPolicy: Always
868       command: ["/app/scripts/entrypoint.sh"]
869       args:
870       - delete_remote_cluster
871       - "{{inputs.parameters.cluster_kustomization_name}}"
872       - "{{inputs.parameters.project_name}}"
873       - "{{inputs.parameters.fleet_repo_dir}}"
874       - "{{inputs.parameters.mgmt_resources_dir}}"
875       - "{{inputs.parameters.mgmt_cluster_name}}"
876
877       volumeMounts:
878       - name: fleet-repo-volume
879         mountPath: '{{inputs.parameters.fleet_mount_path}}'
880     volumes:
881       - name: fleet-repo-volume
882         persistentVolumeClaim:
883           claimName: '{{inputs.parameters.fleet_volume_name}}'
884     securityContext:
885       runAsUser: 10000
886     #   runAsGroup: 10000
887     #   fsGroup: 10000
888
889
890   # Purge and delete cluster from **ANY** cloud
891   - name: purge-delete-cluster
892     inputs:
893       parameters:
894       # Volumes with cloned repos
895       - name: fleet_volume_name
896       - name: fleet_mount_path
897         value: "/fleet"
898
899       # Specific parameters
900       - name: cluster_kustomization_name
901       - name: project_name
902         value: "osm_admin"
903       - name: mgmt_cluster_name
904         value: "{{inputs.parameters.mgmt_cluster_name}}"
905
906       # Is a purge needed before deleting?
907       - name: purge
908         value: "true"
909       ## Secret where the kubeconfig is stored (may not exist)
910       - name: temp_kubeconfig_secret_name
911         valueFrom:
912           expression: "kubeconfig-{{inputs.parameters.cluster_kustomization_name}}"
913
914       # Other parameters - Recommended to keep defaults
915       - name: temp_kubeconfig_secret_key
916         value: "kubeconfig"
917       - name: fleet_repo_dir
918         value: "/fleet/fleet-osm/"
919       - name: mgmt_resources_dir
920         value: "{{inputs.parameters.fleet_repo_dir}}/{{inputs.parameters.project_name}}/managed-resources/_management"
921
922     container:
923       image: opensourcemano/osm-krm-functions:testing-daily
924       # imagePullPolicy: Always
925       command: ["/app/scripts/entrypoint.sh"]
926       args:
927       - delete_remote_cluster
928       - "{{inputs.parameters.cluster_kustomization_name}}"
929       - "{{inputs.parameters.project_name}}"
930       - "{{inputs.parameters.fleet_repo_dir}}"
931       - "{{inputs.parameters.mgmt_resources_dir}}"
932       - "{{inputs.parameters.mgmt_cluster_name}}"
933       - ''
934       - ''
935       - ''
936       - ''
937       - ''
938       - "{{inputs.parameters.purge}}"
939
940       volumeMounts:
941       - name: fleet-repo-volume
942         mountPath: '{{inputs.parameters.fleet_mount_path}}'
943       - name: kubeconfig-volume
944         mountPath: '/app/.kube'
945     volumes:
946       - name: fleet-repo-volume
947         persistentVolumeClaim:
948           claimName: '{{inputs.parameters.fleet_volume_name}}'
949       - name: kubeconfig-volume
950         secret:
951           secretName: '{{inputs.parameters.temp_kubeconfig_secret_name}}'
952           optional: true
953           items:
954             - key: '{{inputs.parameters.temp_kubeconfig_secret_key}}'
955               path: 'config'
956     securityContext:
957       fsGroup: 10000
958       # runAsUser: 10000
959       # runAsGroup: 10000