blob: ea6b181d70c59ab701b5ad0f9f14e9ceeac677ee [file] [log] [blame]
# Copyright (c) 2022 VEXXHOST, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# NOTE(mnaser): We should get rid of this task eventually as it is suspending
# the old HelmRelease and removing it to avoid uninstalling the
# Helm chart.
- name: Uninstall the legacy HelmRelease
run_once: true
block:
- name: Suspend the existing HelmRelease
kubernetes.core.k8s:
state: patched
api_version: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: "{{ magnum_helm_release_name }}"
namespace: "{{ magnum_helm_release_namespace }}"
definition:
spec:
suspend: true
- name: Remove the existing HelmRelease
kubernetes.core.k8s:
state: absent
api_version: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
name: "{{ magnum_helm_release_name }}"
namespace: "{{ magnum_helm_release_namespace }}"
- name: Deploy cluster api
kubernetes.core.k8s:
kubeconfig: /etc/kubernetes/admin.conf
state: present
template:
- path: 'templates/capi-bootstrap.yml.j2'
- path: 'templates/capi-control-plane.yml.j2'
- path: 'templates/capi-core.yml.j2'
- path: 'templates/capi-provider.yml.j2'
- path: 'templates/capi-rbac.yml.j2'
run_once: true
changed_when: false
- name: Deploy Helm chart
run_once: true
kubernetes.core.helm:
name: "{{ magnum_helm_release_name }}"
chart_ref: "{{ magnum_helm_chart_ref }}"
release_namespace: "{{ magnum_helm_release_namespace }}"
create_namespace: true
kubeconfig: /etc/kubernetes/admin.conf
values: "{{ _magnum_helm_values | combine(magnum_helm_values, recursive=True) }}"
- name: Create Ingress
ansible.builtin.include_role:
name: openstack_helm_ingress
vars:
openstack_helm_ingress_endpoint: container_infra
openstack_helm_ingress_service_name: magnum-api
openstack_helm_ingress_service_port: 9511
openstack_helm_ingress_annotations: "{{ magnum_ingress_annotations }}"
- name: Deploy magnum registry
kubernetes.core.k8s:
state: present
definition:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
application: magnum
component: registry
name: magnum-registry
namespace: "{{ magnum_helm_release_namespace }}"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
- apiVersion: apps/v1
kind: Deployment
metadata:
labels:
application: magnum
component: registry
name: magnum-registry
namespace: "{{ magnum_helm_release_namespace }}"
spec:
replicas: 1
selector:
matchLabels:
application: magnum
component: registry
strategy:
type: Recreate
template:
metadata:
labels:
application: magnum
component: registry
spec:
containers:
- name: registry
env:
- name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
value: /var/lib/registry
- name: REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED
value: "true"
image: "{{ atmosphere_images['magnum_registry'] | vexxhost.atmosphere.docker_image('ref') }}"
ports:
- containerPort: 5000
name: registry
protocol: TCP
livenessProbe:
httpGet:
path: /
port: 5000
scheme: HTTP
readinessProbe:
httpGet:
path: /
port: 5000
scheme: HTTP
volumeMounts:
- mountPath: /var/lib/registry
name: magnum-registry
nodeSelector:
openstack-control-plane: enabled
volumes:
- name: magnum-registry
persistentVolumeClaim:
claimName: magnum-registry
- apiVersion: v1
kind: Service
metadata:
labels:
application: magnum
component: registry
name: magnum-registry
namespace: "{{ magnum_helm_release_namespace }}"
spec:
ports:
- name: magnum
port: 5000
protocol: TCP
targetPort: 5000
selector:
application: magnum
component: registry
type: ClusterIP
- apiVersion: batch/v1
kind: Job
metadata:
name: magnum-registry-init
namespace: "{{ magnum_helm_release_namespace }}"
labels:
application: magnum
component: registry
spec:
backoffLimit: 5
template:
metadata:
labels:
application: magnum
spec:
restartPolicy: OnFailure
containers:
- name: loader
image: "{{ atmosphere_images['magnum_api'] | vexxhost.atmosphere.docker_image('ref') }}"
command:
- magnum-cluster-api-image-loader
- --insecure
- --repository
- magnum-registry.openstack.svc.cluster.local:5000
nodeSelector:
openstack-control-plane: enabled
- name: Create magnum registry Ingress
ansible.builtin.include_role:
name: openstack_helm_ingress
vars:
openstack_helm_ingress_endpoint: container_infra_registry
openstack_helm_ingress_service_name: magnum-registry
openstack_helm_ingress_service_port: 5000
openstack_helm_ingress_annotations: "{{ _magnum_registry_ingress_annotations | combine(magnum_registry_ingress_annotations) }}"
- name: Upload images
ansible.builtin.include_role:
name: glance_image
loop: "{{ magnum_images }}"
vars:
glance_image_name: "{{ item.name }}"
glance_image_url: "{{ item.url }}"
glance_image_container_format: "{{ magnum_image_container_format }}"
glance_image_disk_format: "{{ magnum_image_disk_format }}"