9746478ae737972c57f3db4e33a8b09b376cc929
[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: nodegroup-management-wft
22   namespace: osm-workflows
23 spec:
24   templates:
25
26   # Create a nodegroup in AWS
27   - name: create-nodegroup
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: nodegroup_name
40       - name: nodegroup_kustomization_name
41       - name: cluster_name
42       - name: cluster_type
43       - name: providerconfig_name
44       - name: vm_size
45       - name: node_count
46       - name: cluster_location
47       - name: configmap_name
48       - name: role
49       - name: public_key_mgmt
50       - name: public_key_new_cluster
51       - name: secret_name_private_age_key_for_new_cluster
52       - name: key_name_in_secret
53         value: "agekey"
54       - name: fleet_repo_url
55       - name: sw_catalogs_repo_url
56       - name: mgmt_project_name
57         value: "osm_admin"
58       ## Do we want to skip OSM's bootstrap?
59       - name: skip_bootstrap
60         value: "false"
61       ## AKS only (otherwise, empty)
62       - name: rg_name
63         values: ""
64       ## GKE only (otherwise, empty)
65       - name: preemptible_nodes
66         values: "false"
67       # Other parameters - Recommended to keep defaults
68       - name: mgmt_cluster_name
69         value: "_management"
70       - name: base_templates_path
71         value: "cloud-resources"
72       - name: cloned_fleet_folder_name
73         value: "fleet-osm"
74       - name: cloned_sw_catalogs_folder_name
75         value: "sw-catalogs-osm"
76       # Debug?
77       - name: debug
78         value: "false"
79
80     container:
81       image: opensourcemano/osm-krm-functions:testing-daily
82       # imagePullPolicy: Always
83       env:
84       - name: PRIVATE_KEY_NEW_CLUSTER
85         valueFrom:
86           secretKeyRef:
87             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
88             key: "{{inputs.parameters.key_name_in_secret}}"
89       - name: DEBUG
90         value: "{{inputs.parameters.debug}}"
91       command: ["/app/scripts/entrypoint.sh"]
92       args:
93       - create_nodegroup
94       - "{{inputs.parameters.nodegroup_name}}"
95       - "{{inputs.parameters.nodegroup_kustomization_name}}"
96       - "{{inputs.parameters.cluster_name}}"
97       - "{{inputs.parameters.cluster_type}}"
98       - "{{inputs.parameters.providerconfig_name}}"
99       - "{{inputs.parameters.vm_size}}"
100       - "{{inputs.parameters.node_count}}"
101       - "{{inputs.parameters.cluster_location}}"
102       - "{{inputs.parameters.configmap_name}}"
103       - "{{inputs.parameters.role}}"
104       - "{{inputs.parameters.public_key_mgmt}}"
105       - "{{inputs.parameters.public_key_new_cluster}}"
106       - ''
107       - "{{inputs.parameters.rg_name}}"
108       - "{{inputs.parameters.preemptible_nodes}}"
109       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
110       - "{{inputs.parameters.fleet_repo_url}}"
111       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
112       - "{{inputs.parameters.sw_catalogs_repo_url}}"
113       - "{{inputs.parameters.skip_bootstrap}}"
114       - "{{inputs.parameters.mgmt_project_name}}"
115       - "{{inputs.parameters.mgmt_cluster_name}}"
116       - "{{inputs.parameters.base_templates_path}}"
117
118       volumeMounts:
119       - name: fleet-repo-volume
120         mountPath: '{{inputs.parameters.fleet_mount_path}}'
121       - name: sw-catalogs-repo-volume
122         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
123     volumes:
124       - name: fleet-repo-volume
125         persistentVolumeClaim:
126           claimName: '{{inputs.parameters.fleet_volume_name}}'
127       - name: sw-catalogs-repo-volume
128         persistentVolumeClaim:
129           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
130     securityContext:
131       runAsUser: 10000
132     #   runAsGroup: 10000
133     #   fsGroup: 10000
134
135   - name: scale-nodegroup
136     inputs:
137       parameters:
138       # Volumes with cloned repos
139       - name: fleet_volume_name
140       - name: fleet_mount_path
141         value: "/fleet"
142       - name: sw_catalogs_volume_name
143       - name: sw_catalogs_mount_path
144         value: "/sw-catalogs"
145
146       # Specific parameters
147       - name: nodegroup_name
148       - name: nodegroup_kustomization_name
149       - name: cluster_name
150       - name: cluster_type
151       - name: node_count
152       - name: public_key_mgmt
153       - name: public_key_new_cluster
154       - name: secret_name_private_age_key_for_new_cluster
155       - name: key_name_in_secret
156         value: "agekey"
157       - name: fleet_repo_url
158       - name: sw_catalogs_repo_url
159       - name: mgmt_project_name
160         value: "osm_admin"
161       # Other parameters - Recommended to keep defaults
162       - name: mgmt_cluster_name
163         value: "_management"
164       - name: base_templates_path
165         value: "cloud-resources"
166       - name: cloned_fleet_folder_name
167         value: "fleet-osm"
168       - name: cloned_sw_catalogs_folder_name
169         value: "sw-catalogs-osm"
170       # Debug?
171       - name: debug
172         value: "false"
173
174     container:
175       image: opensourcemano/osm-krm-functions:testing-daily
176       # imagePullPolicy: Always
177       env:
178       - name: PRIVATE_KEY_NEW_CLUSTER
179         valueFrom:
180           secretKeyRef:
181             name: "{{inputs.parameters.secret_name_private_age_key_for_new_cluster}}"
182             key: "{{inputs.parameters.key_name_in_secret}}"
183       - name: DEBUG
184         value: "{{inputs.parameters.debug}}"
185       command: ["/app/scripts/entrypoint.sh"]
186       args:
187       - scale_nodegroup
188       - "{{inputs.parameters.nodegroup_name}}"
189       - "{{inputs.parameters.nodegroup_kustomization_name}}"
190       - "{{inputs.parameters.cluster_name}}"
191       - "{{inputs.parameters.cluster_type}}"
192       - "{{inputs.parameters.node_count}}"
193       - "{{inputs.parameters.public_key_mgmt}}"
194       - "{{inputs.parameters.public_key_new_cluster}}"
195       - ''
196       - "{{inputs.parameters.fleet_mount_path}}/{{inputs.parameters.cloned_fleet_folder_name}}"
197       - "{{inputs.parameters.fleet_repo_url}}"
198       - "{{inputs.parameters.sw_catalogs_mount_path}}/{{inputs.parameters.cloned_sw_catalogs_folder_name}}"
199       - "{{inputs.parameters.sw_catalogs_repo_url}}"
200       - "{{inputs.parameters.mgmt_project_name}}"
201       - "{{inputs.parameters.mgmt_cluster_name}}"
202       - "{{inputs.parameters.base_templates_path}}"
203
204       volumeMounts:
205       - name: fleet-repo-volume
206         mountPath: '{{inputs.parameters.fleet_mount_path}}'
207       - name: sw-catalogs-repo-volume
208         mountPath: '{{inputs.parameters.sw_catalogs_mount_path}}'
209     volumes:
210       - name: fleet-repo-volume
211         persistentVolumeClaim:
212           claimName: '{{inputs.parameters.fleet_volume_name}}'
213       - name: sw-catalogs-repo-volume
214         persistentVolumeClaim:
215           claimName: '{{inputs.parameters.sw_catalogs_volume_name}}'
216     securityContext:
217       runAsUser: 10000
218     #   runAsGroup: 10000
219     #   fsGroup: 10000
220   
221   # Delete nodegroup from **ANY** cluster
222   - name: delete-nodegroup
223     inputs:
224       parameters:
225       # Volumes with cloned repos
226       - name: fleet_volume_name
227       - name: fleet_mount_path
228         value: "/fleet"
229
230       # Specific parameters
231       - name: nodegroup_kustomization_name
232       - name: cluster_name
233       - name: project_name
234         value: "osm_admin"
235
236       # Other parameters - Recommended to keep defaults
237       - name: fleet_repo_dir
238         value: "/fleet/fleet-osm/"
239       - name: mgmt_resources_dir
240         value: "{{inputs.parameters.fleet_repo_dir}}/{{inputs.parameters.project_name}}/managed-resources/_management"
241
242     container:
243       image: opensourcemano/osm-krm-functions:testing-daily
244       # imagePullPolicy: Always
245       command: ["/app/scripts/entrypoint.sh"]
246       args:
247       - delete_nodegroup
248       - "{{inputs.parameters.nodegroup_kustomization_name}}"
249       - "{{inputs.parameters.cluster_name}}"
250       - "{{inputs.parameters.project_name}}"
251       - "{{inputs.parameters.fleet_repo_dir}}"
252       - "{{inputs.parameters.mgmt_resources_dir}}"
253
254       volumeMounts:
255       - name: fleet-repo-volume
256         mountPath: '{{inputs.parameters.fleet_mount_path}}'
257     volumes:
258       - name: fleet-repo-volume
259         persistentVolumeClaim:
260           claimName: '{{inputs.parameters.fleet_volume_name}}'
261     securityContext:
262       runAsUser: 10000
263     #   runAsGroup: 10000
264     #   fsGroup: 10000