blob: 92b0dbab282f4e7dce6ea9d4e2497dd288f9d9da [file] [log] [blame]
Mohammed Naser096ade02022-12-15 09:53:33 -05001# Copyright (c) 2022 VEXXHOST, Inc.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
Mohammed Naserfef69422023-01-18 02:38:06 +000015# NOTE(mnaser): We should get rid of this task eventually as it is suspending
16# the old HelmRelease and removing it to avoid uninstalling the
17# Helm chart.
18- name: Uninstall the legacy HelmRelease
19 run_once: true
20 block:
21 - name: Suspend the existing HelmRelease
22 kubernetes.core.k8s:
23 state: patched
24 api_version: helm.toolkit.fluxcd.io/v2beta1
25 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000026 name: "{{ magnum_helm_release_name }}"
27 namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000028 definition:
29 spec:
30 suspend: true
31
32 - name: Remove the existing HelmRelease
33 kubernetes.core.k8s:
34 state: absent
35 api_version: helm.toolkit.fluxcd.io/v2beta1
36 kind: HelmRelease
Mohammed Naser2145fc32023-01-29 23:23:03 +000037 name: "{{ magnum_helm_release_name }}"
38 namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000039
okozachenko120319b530e2023-01-27 23:52:04 +110040- name: Deploy cluster api
41 kubernetes.core.k8s:
42 kubeconfig: /etc/kubernetes/admin.conf
43 state: present
44 template:
45 - path: 'templates/capi-bootstrap.yml.j2'
46 - path: 'templates/capi-control-plane.yml.j2'
47 - path: 'templates/capi-core.yml.j2'
48 - path: 'templates/capi-provider.yml.j2'
49 - path: 'templates/capi-rbac.yml.j2'
50 run_once: true
okozachenko12035b9d0f12023-01-28 01:24:40 +110051 changed_when: false
okozachenko120319b530e2023-01-27 23:52:04 +110052
Mohammed Naserfef69422023-01-18 02:38:06 +000053- name: Deploy Helm chart
54 run_once: true
55 kubernetes.core.helm:
Mohammed Naser2145fc32023-01-29 23:23:03 +000056 name: "{{ magnum_helm_release_name }}"
57 chart_ref: "{{ magnum_helm_chart_ref }}"
58 release_namespace: "{{ magnum_helm_release_namespace }}"
Mohammed Naserfef69422023-01-18 02:38:06 +000059 create_namespace: true
60 kubeconfig: /etc/kubernetes/admin.conf
Mohammed Naser2145fc32023-01-29 23:23:03 +000061 values: "{{ _magnum_helm_values | combine(magnum_helm_values, recursive=True) }}"
Mohammed Naser096ade02022-12-15 09:53:33 -050062
Mohammed Naser4c33bb52023-01-18 03:23:18 +000063- name: Create Ingress
64 ansible.builtin.include_role:
65 name: openstack_helm_ingress
66 vars:
67 openstack_helm_ingress_endpoint: container_infra
68 openstack_helm_ingress_service_name: magnum-api
69 openstack_helm_ingress_service_port: 9511
Mohammed Naser2145fc32023-01-29 23:23:03 +000070 openstack_helm_ingress_annotations: "{{ magnum_ingress_annotations }}"
Mohammed Naser4c33bb52023-01-18 03:23:18 +000071
okozachenko120319b530e2023-01-27 23:52:04 +110072- name: Deploy magnum registry
Mohammed Naser096ade02022-12-15 09:53:33 -050073 kubernetes.core.k8s:
74 state: present
75 definition:
76 - apiVersion: v1
77 kind: PersistentVolumeClaim
78 metadata:
79 labels:
80 application: magnum
81 component: registry
82 name: magnum-registry
83 namespace: openstack
84 spec:
85 accessModes:
86 - ReadWriteOnce
87 resources:
88 requests:
89 storage: 50Gi
90 storageClassName: general
91
92 - apiVersion: apps/v1
93 kind: Deployment
94 metadata:
95 labels:
96 application: magnum
97 component: registry
98 name: magnum-registry
99 namespace: openstack
100 spec:
101 replicas: 1
102 selector:
103 matchLabels:
104 application: magnum
105 component: registry
106 strategy:
107 type: Recreate
108 template:
109 metadata:
110 labels:
111 application: magnum
112 component: registry
113 spec:
114 containers:
115 - name: registry
116 env:
117 - name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
118 value: /var/lib/registry
119 - name: REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED
120 value: "true"
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100121 image: "{{ atmosphere_images['magnum_registry'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500122 ports:
123 - containerPort: 5000
124 name: registry
125 protocol: TCP
126 livenessProbe:
127 httpGet:
128 path: /
129 port: 5000
130 scheme: HTTP
131 readinessProbe:
132 httpGet:
133 path: /
134 port: 5000
135 scheme: HTTP
136 volumeMounts:
137 - mountPath: /var/lib/registry
138 name: magnum-registry
139 nodeSelector:
140 openstack-control-plane: enabled
141 volumes:
142 - name: magnum-registry
143 persistentVolumeClaim:
144 claimName: magnum-registry
145
146 - apiVersion: v1
147 kind: Service
148 metadata:
149 labels:
150 application: magnum
151 component: registry
152 name: magnum-registry
153 namespace: openstack
154 spec:
155 ports:
156 - name: magnum
157 port: 5000
158 protocol: TCP
159 targetPort: 5000
160 selector:
161 application: magnum
162 component: registry
163 type: ClusterIP
164
165 - apiVersion: batch/v1
166 kind: Job
167 metadata:
168 labels:
169 application: magnum
170 component: registry
171 name: magnum-registry-init
172 namespace: openstack
173 spec:
174 backoffLimit: 5
175 template:
176 metadata:
177 labels:
178 application: magnum
179 spec:
180 restartPolicy: OnFailure
181 containers:
182 - args:
183 - copy
184 - --dest-tls-verify=false
185 - docker://docker.io/calico/cni:v3.13.1
186 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cni:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100187 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500188 name: magnum-cni-v3-13-1
189 - args:
190 - copy
191 - --dest-tls-verify=false
192 - docker://docker.io/calico/kube-controllers:v3.13.1
193 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/kube-controllers:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100194 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500195 name: magnum-kube-controllers-v3-13-1
196 - args:
197 - copy
198 - --dest-tls-verify=false
199 - docker://docker.io/calico/node:v3.13.1
200 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/node:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100201 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500202 name: magnum-node-v3-13-1
203 - args:
204 - copy
205 - --dest-tls-verify=false
206 - docker://docker.io/calico/pod2daemon-flexvol:v3.13.1
207 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/pod2daemon-flexvol:v3.13.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100208 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500209 name: magnum-pod2daemon-flexvol-v3-13-1
210 - args:
211 - copy
212 - --dest-tls-verify=false
213 - docker://docker.io/coredns/coredns:1.6.6
214 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/coredns:1.6.6
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100215 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500216 name: magnum-coredns-1-6-6
217 - args:
218 - copy
219 - --dest-tls-verify=false
220 - docker://docker.io/k8scloudprovider/cinder-csi-plugin:v1.18.0
221 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cinder-csi-plugin:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100222 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500223 name: magnum-cinder-csi-plugin-v1-18-0
224 - args:
225 - copy
226 - --dest-tls-verify=false
227 - docker://docker.io/k8scloudprovider/k8s-keystone-auth:v1.18.0
228 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/k8s-keystone-auth:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100229 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500230 name: magnum-k8s-keystone-auth-v1-18-0
231 - args:
232 - copy
233 - --dest-tls-verify=false
234 - docker://docker.io/k8scloudprovider/magnum-auto-healer:v1.18.0
235 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/magnum-auto-healer:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100236 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500237 name: magnum-magnum-auto-healer-v1-18-0
238 - args:
239 - copy
240 - --dest-tls-verify=false
241 - docker://docker.io/k8scloudprovider/openstack-cloud-controller-manager:v1.18.0
242 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/openstack-cloud-controller-manager:v1.18.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100243 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500244 name: magnum-openstack-cloud-controller-manager-v1-18-0
245 - args:
246 - copy
247 - --dest-tls-verify=false
248 - docker://docker.io/kubernetesui/dashboard:v2.0.0
249 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/dashboard:v2.0.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100250 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500251 name: magnum-dashboard-v2-0-0
252 - args:
253 - copy
254 - --dest-tls-verify=false
255 - docker://docker.io/kubernetesui/metrics-scraper:v1.0.4
256 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/metrics-scraper:v1.0.4
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100257 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500258 name: magnum-metrics-scraper-v1-0-4
259 - args:
260 - copy
261 - --dest-tls-verify=false
262 - docker://docker.io/openstackmagnum/cluster-autoscaler:v1.22.0
263 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cluster-autoscaler:v1.22.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100264 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500265 name: magnum-cluster-autoscaler-v1-22-0
266 - args:
267 - copy
268 - --dest-tls-verify=false
269 - docker://docker.io/openstackmagnum/heat-container-agent:wallaby-stable-1
270 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/heat-container-agent:wallaby-stable-1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100271 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500272 name: magnum-heat-container-agent-wallaby-stable-1
273 - args:
274 - copy
275 - --dest-tls-verify=false
276 - docker://docker.io/planetlabs/draino:abf028a
277 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/draino:abf028a
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100278 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500279 name: magnum-draino-abf028a
280 - args:
281 - copy
282 - --dest-tls-verify=false
283 - docker://docker.io/rancher/hyperkube:v1.19.11-rancher1
284 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.19.11
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100285 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500286 name: magnum-hyperkube-v1-19-11
287 - args:
288 - copy
289 - --dest-tls-verify=false
290 - docker://docker.io/rancher/hyperkube:v1.20.7-rancher1
291 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.20.7
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100292 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500293 name: magnum-hyperkube-v1-20-7
294 - args:
295 - copy
296 - --dest-tls-verify=false
297 - docker://docker.io/rancher/hyperkube:v1.21.1-rancher1
298 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/hyperkube:v1.21.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100299 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500300 name: magnum-hyperkube-v1-21-1
301 - args:
302 - copy
303 - --dest-tls-verify=false
304 - docker://gcr.io/google_containers/cluster-proportional-autoscaler-amd64:1.1.2
305 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/cluster-proportional-autoscaler-amd64:1.1.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100306 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500307 name: magnum-cluster-proportional-autoscaler-amd64-1-1-2
308 - args:
309 - copy
310 - --dest-tls-verify=false
311 - docker://gcr.io/google_containers/metrics-server-amd64:v0.3.5
312 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/metrics-server-amd64:v0.3.5
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100313 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500314 name: magnum-metrics-server-amd64-v0-3-5
315 - args:
316 - copy
317 - --dest-tls-verify=false
318 - docker://gcr.io/google_containers/node-problem-detector:v0.6.2
319 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/node-problem-detector:v0.6.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100320 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500321 name: magnum-node-problem-detector-v0-6-2
322 - args:
323 - copy
324 - --dest-tls-verify=false
325 - docker://gcr.io/google_containers/pause:3.1
326 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/pause:3.1
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100327 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500328 name: magnum-pause-3-1
329 - args:
330 - copy
331 - --dest-tls-verify=false
332 - docker://quay.io/coreos/etcd:v3.4.6
333 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/etcd:v3.4.6
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100334 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500335 name: magnum-etcd-v3-4-6
336 - args:
337 - copy
338 - --dest-tls-verify=false
339 - docker://quay.io/k8scsi/csi-attacher:v2.0.0
340 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-attacher:v2.0.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100341 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500342 name: magnum-csi-attacher-v2-0-0
343 - args:
344 - copy
345 - --dest-tls-verify=false
346 - docker://quay.io/k8scsi/csi-node-driver-registrar:v1.1.0
347 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-node-driver-registrar:v1.1.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100348 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500349 name: magnum-csi-node-driver-registrar-v1-1-0
350 - args:
351 - copy
352 - --dest-tls-verify=false
353 - docker://quay.io/k8scsi/csi-provisioner:v1.4.0
354 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-provisioner:v1.4.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100355 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500356 name: magnum-csi-provisioner-v1-4-0
357 - args:
358 - copy
359 - --dest-tls-verify=false
360 - docker://quay.io/k8scsi/csi-resizer:v0.3.0
361 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-resizer:v0.3.0
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100362 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500363 name: magnum-csi-resizer-v0-3-0
364 - args:
365 - copy
366 - --dest-tls-verify=false
367 - docker://quay.io/k8scsi/csi-snapshotter:v1.2.2
368 - docker://magnum-registry.openstack.svc.cluster.local:5000/magnum/csi-snapshotter:v1.2.2
Michiel Piscaer60d09f92023-01-20 18:58:55 +0100369 image: "{{ atmosphere_images['skopeo'] | vexxhost.atmosphere.docker_image('ref') }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500370 name: magnum-csi-snapshotter-v1-2-2
371 nodeSelector:
372 openstack-control-plane: enabled
373
Mohammed Naser096ade02022-12-15 09:53:33 -0500374- name: Create magnum registry Ingress
375 ansible.builtin.include_role:
376 name: openstack_helm_ingress
377 vars:
378 openstack_helm_ingress_endpoint: container_infra_registry
379 openstack_helm_ingress_service_name: magnum-registry
380 openstack_helm_ingress_service_port: 5000
381
382- name: Create k8s images
Mohammed Naser2145fc32023-01-29 23:23:03 +0000383 when: magnum_images | length > 0
Mohammed Naser096ade02022-12-15 09:53:33 -0500384 block:
385 - name: Wait until image service ready
386 kubernetes.core.k8s_info:
387 api_version: apps/v1
388 kind: Deployment
389 name: glance-api
390 namespace: openstack
391 wait_sleep: 10
392 wait_timeout: 600
393 wait: true
394 wait_condition:
395 type: Available
396 status: true
397
398 - name: Download images
399 ansible.builtin.get_url:
400 url: "{{ item.source_url | regex_replace('\\/$', '') }}/{{ item.image_file }}"
401 dest: "/tmp/{{ item.image_file }}"
402 mode: "0600"
Mohammed Naser2145fc32023-01-29 23:23:03 +0000403 loop: "{{ magnum_images }}"
Mohammed Naser096ade02022-12-15 09:53:33 -0500404
405 - name: Upload images
406 openstack.cloud.image:
407 cloud: atmosphere
408 name: "{{ item.name }}"
409 state: present
410 filename: "/tmp/{{ item.image_file }}"
411 container_format: "{{ item.container_format | default(omit) }}"
412 disk_format: "{{ item.disk_format | default(omit) }}"
413 properties:
414 os_distro: ubuntu-focal
Mohammed Naser2145fc32023-01-29 23:23:03 +0000415 loop: "{{ magnum_images }}"
Mohammed Naser52c3a702023-02-02 02:03:34 +0000416 # NOTE(mnaser): This often fails since the SSL certificates are not
417 # ready yet. We need to wait for them to be ready.
418 retries: 60
419 delay: 5
420 register: _result
421 until: _result is not failed