Awx-operator: Ожидание модуля postgres, хотя внешний postgres определен

Созданный на 15 апр. 2021  ·  6Комментарии  ·  Источник: ansible/awx-operator

---
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?

docs good first issue help wanted

Все 6 Комментарий

@daenney Если вы посмотрите на код, задача «Получить информацию о модуле postgres» является частью https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/migrate_data.yml#L11 который будет импортирован при соблюдении этих условий:

https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/database_configuration.yml#L90

 - 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. Проблем с учетными данными не обнаружено, пока все в порядке.

грц,
Андре

Была ли эта страница полезной?
0 / 5 - 0 рейтинги