---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
namespace: awx
spec:
tower_postgres_configuration_secret: awx-postgres-configuration
tower_old_postgres_configuration_secret: awx-old-postgres-configuration
$ kubectl -n awx get secrets
NAME TYPE DATA AGE
[..]
awx-old-postgres-configuration Opaque 5 21m
[..]
awx-postgres-configuration Opaque 5 21m
[..]
Оператор регистрирует следующее:
TASK [installer : Get the postgres pod information] ****************************\r\ntask path: /opt/ansible/roles/installer/tasks/migrate_data.yml:11\nfatal: [localhost]: FAILED! => {\"msg\": \"The conditional check 'postgres_pod['resources'][0]['status']['phase'] == 'Running'' failed. The error was: error while evaluating conditional (postgres_pod['resources'][0]['status']['phase'] == 'Running'): list object has no element 0\"}\n\r\nPLAY RECAP
*********************************************************\r\nlocalhost : ok=29 changed=0 unreachable=0 failed=1 skipped=13 rescued=0 ignored=0 \r\n\n","job":"2740376916591569721","name":"awx","namespace":"awx","error":"exit status 2","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\ngithub.com/operator-framework/operator-sdk/pkg/ansible/runner.(*runner).Run.func1\n\tsrc/github.com/operator-framework/operator-sdk/pkg/ansible/runner/runner.go:239"}
--------------------------- Ansible Task Status Event StdOut -----------------
PLAY RECAP *********************************************************************
localhost : ok=29 changed=0 unreachable=0 failed=1 skipped=13 rescued=0 ignored=0
-------------------------------------------------------------------------------
{"level":"error","ts":1618494205.2788725,"logger":"controller-runtime.controller","msg":"Reconciler error","controller":"awx-controller","request":"awx/awx","error":"event runner on failed","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\tpkg/mod/github.com/go-logr/[email protected]/zapr.go:128\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:258\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:232\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).worker\n\tpkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:211\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.Until\n\tpkg/mod/k8s.io/[email protected]/pkg/util/wait/wait.go:90"}
Учитывая, что секреты соединения postgres определены и переданы, почему оператор, по-видимому, ожидает (и, следовательно, ошибается) доступности модуля postgres?
@daenney Если вы посмотрите на код, задача «Получить информацию о модуле postgres» является частью https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/migrate_data.yml#L11 который будет импортирован при соблюдении этих условий:
- name: Migrate data from old Openshift instance
import_tasks: migrate_data.yml
when:
- old_pg_config['resources'] is defined
- old_pg_config['resources'] | length
- this_awx['resources'][0]['status']['towerMigratedFromSecret'] is not defined
Итак, вы пытаетесь перейти с локально управляемого экземпляра Postgres
на внешний экземпляр? Если да, то есть ли у вас модуль PostgreSQL? Можем ли мы получить на выходе kubectl describe pod <pgsql-managed>
?
Если это так, возможно, ваш локальный управляемый модуль PostgreSQL не соответствует ожидаемым меткам, и поскольку задача согласования запускается после database_configuration
вы сталкиваетесь с этой ошибкой.
Нет, postgres, управляемого локально, не существует. В обоих случаях он удален (RDS). Мне было непонятно, что можно обновить только локально управляемый экземпляр.
Старый экземпляр предшествовал выпуску 18.x, и документы по миграции подсказали мне, что мы должны это сделать. На основании https://github.com/ansible/awx-operator/blob/devel/docs/migration.md там не было ничего, что указывало бы на то, что он не может обновиться со старой удаленной базы данных.
@daenney, я понимаю твою точку зрения. Такая конфигурация позволит вам перемещать базу данных из одного места в другое (подробнее см. Https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/database_configuration.yml#L90-L95 и https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/migrate_data.yml#L59-L70)
Итак, в вашем случае удалите из своего вида awx
старый tower_old_postgres_configuration_secret
и схему базы данных следует обновить с помощью https://github.com/ansible/awx-operator/blob/devel/roles /installer/tasks/main.yml#L98 -L108
Сообщите нам, если это сработает, и я согласен, документация требует небольшой доработки, чтобы прояснить ее.
Если вы хотите отправить PR, добро пожаловать!
Спасибо за объяснение. Я попытался указать его на существующую внешнюю базу данных, и все сработало отлично. Я пришлю PR завтра с некоторыми обновлениями документов!
@tchellomello и @daenney ,
великолепно, вы всего на несколько часов опередили меня в моей попытке обновить с 18.0.0 до 19.0.0 с помощью внешней базы данных Postgres!
У меня была такая же проблема сегодня вечером на k8s ........ У меня также есть удаленная база данных Postgres, которую невозможно проверить:
Из логов awx-operator (0.8.0)
_ "msg": "Не удалось выполнить условную проверку 'postgres_pod [' resources '] [0] [' status '] [' phase '] ==' Running ''. Ошибка: ошибка при оценке условного (postgres_pod ['resources '] [0] [' status '] [' phase '] ==' Running '): объект списка не имеет элемента 0 "_
Я удалил строку «tower_old_postgres_configuration_secret» из my-awx.yml, как было предложено, и это сработало для меня.
Простое и понятное обновление и рабочий экземпляр AWX 19.0.0. Проблем с учетными данными не обнаружено, пока все в порядке.
грц,
Андре