From 192611eea8b7430ddceb7943e82466840a6cb809 Mon Sep 17 00:00:00 2001 From: "Christian M. Adams" Date: Thu, 3 Feb 2022 10:11:28 -0500 Subject: [PATCH] Run database-check initContainer on postgres sts instead - This avoids issues with multple initContainers trying to mount the postgres pvc at once, as is the case when there are multiple replicas. Signed-off-by: Christian M. Adams --- roles/installer/tasks/main.yml | 3 +++ .../tasks/resources_configuration.yml | 18 ----------------- roles/installer/tasks/set_images.yml | 19 ++++++++++++++++++ roles/installer/templates/deployment.yaml.j2 | 19 ------------------ roles/installer/templates/postgres.yaml.j2 | 20 +++++++++++++++++++ 5 files changed, 42 insertions(+), 37 deletions(-) create mode 100644 roles/installer/tasks/set_images.yml diff --git a/roles/installer/tasks/main.yml b/roles/installer/tasks/main.yml index 3b2e3895..aef52bbb 100644 --- a/roles/installer/tasks/main.yml +++ b/roles/installer/tasks/main.yml @@ -36,6 +36,9 @@ - name: Include broadcast websocket configuration tasks include_tasks: broadcast_websocket_configuration.yml +- name: Include set_images tasks + include_tasks: set_images.yml + - name: Include database configuration tasks include_tasks: database_configuration.yml diff --git a/roles/installer/tasks/resources_configuration.yml b/roles/installer/tasks/resources_configuration.yml index 42487d75..3230a51b 100644 --- a/roles/installer/tasks/resources_configuration.yml +++ b/roles/installer/tasks/resources_configuration.yml @@ -47,24 +47,6 @@ set_fact: _image: "{{ _custom_image | default(lookup('env', 'RELATED_IMAGE_AWX')) | default(_default_image, true) }}" -- name: Set default awx init container image - set_fact: - _default_init_container_image: "{{ _init_container_image }}:{{ _init_container_image_version }}" - -- name: Set user provided awx init image - set_fact: - _custom_init_container_image: "{{ init_container_image }}:{{ init_container_image_version }}" - when: - - init_container_image | default([]) | length - - init_container_image_version is defined or init_container_image_version != '' - -- name: Set Init image URL - set_fact: - _init_container_image: >- - {{ _custom_init_container_image | - default(lookup('env', 'RELATED_IMAGE_AWX_INIT_CONTAINER')) | - default(_default_init_container_image, true) }} - - name: Set default redis image set_fact: _default_redis_image: "{{ _redis_image }}:{{ _redis_image_version }}" diff --git a/roles/installer/tasks/set_images.yml b/roles/installer/tasks/set_images.yml new file mode 100644 index 00000000..59d86b60 --- /dev/null +++ b/roles/installer/tasks/set_images.yml @@ -0,0 +1,19 @@ +# For disconnected environments, images must be set based on the values of `RELATED_IMAGE_` variables +--- +- name: Set default awx init container image + set_fact: + _default_init_container_image: "{{ _init_container_image }}:{{ _init_container_image_version }}" + +- name: Set user provided awx init image + set_fact: + _custom_init_container_image: "{{ init_container_image }}:{{ init_container_image_version }}" + when: + - init_container_image | default([]) | length + - init_container_image_version is defined or init_container_image_version != '' + +- name: Set Init image URL + set_fact: + _init_container_image: >- + {{ _custom_init_container_image | + default(lookup('env', 'RELATED_IMAGE_AWX_INIT_CONTAINER')) | + default(_default_init_container_image, true) }} diff --git a/roles/installer/templates/deployment.yaml.j2 b/roles/installer/templates/deployment.yaml.j2 index 4207a398..a8f9a516 100644 --- a/roles/installer/templates/deployment.yaml.j2 +++ b/roles/installer/templates/deployment.yaml.j2 @@ -34,20 +34,6 @@ spec: - name: {{ image_pull_secret }} {% endif %} initContainers: -{% if managed_database %} - - name: database-check - image: '{{ _init_container_image }}' - imagePullPolicy: '{{ image_pull_policy }}' - command: - - /bin/sh - - -c - - | - [[ -d /check-db/pgsql/data ]] && rm -rf /check-db/data && mv /check-db/pgsql/data/ /check-db/data/ && rm -rf /check-db/pgsql || true - volumeMounts: - - name: check-db-pvc - mountPath: /check-db - subPath: '' -{% endif %} {% if bundle_ca_crt or projects_persistence|bool or init_container_extra_commands %} - name: init image: '{{ _init_container_image }}' @@ -340,11 +326,6 @@ spec: {% endif %} {% endif %} volumes: -{% if managed_database %} - - name: check-db-pvc - persistentVolumeClaim: - claimName: postgres-{{ ansible_operator_meta.name }}-postgres-0 -{% endif %} {% if bundle_ca_crt %} - name: "ca-trust-extracted" emptyDir: {} diff --git a/roles/installer/templates/postgres.yaml.j2 b/roles/installer/templates/postgres.yaml.j2 index 817485c7..d7f6d4c9 100644 --- a/roles/installer/templates/postgres.yaml.j2 +++ b/roles/installer/templates/postgres.yaml.j2 @@ -37,6 +37,26 @@ spec: imagePullSecrets: - name: {{ image_pull_secret }} {% endif %} + initContainers: + - name: database-check + image: '{{ _init_container_image }}' + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: + memory: "256Mi" + cpu: "1000m" + imagePullPolicy: '{{ image_pull_policy }}' + command: + - /bin/sh + - -c + - | + [[ -d /check-db/pgsql/data ]] && rm -rf /check-db/data && mv /check-db/pgsql/data/ /check-db/data/ && rm -rf /check-db/pgsql || exit 0 + volumeMounts: + - name: postgres + mountPath: /check-db + subPath: '' containers: - image: '{{ _postgres_image }}' imagePullPolicy: '{{ image_pull_policy }}'