Отладка проблем с оператором fas2discourse

Рабочая нагрузка

Оператор работает в пространстве имён fas2discourse-operator как на тестовом, так и на производственном кластерах OpenShift.

Запущен один под. В первую очередь следует изучить его журналы.

По умолчанию подробность журналов низкая. Чтобы повысить её до уровня отладки, добавьте следующую аннотацию к объекту Fas2DiscourseConfig в пространстве имён fas2discourse-operator:

apiVersion: fas2discourse.apps.fedoraproject.org/v1alpha1
kind: Fas2discourseConfig
metadata:
  annotations:
    ansible.sdk.operatorframework.io/verbosity: '5'

Это включит полный вывод журналирования, что может помочь в отладке.

Внутри оператора содержится следующий список задач. Этот список повторяется в цикле согласования, который в настоящее время настроен на запуск каждые 20 минут. Цикл согласования можно настроить в файле watches.yaml.

# файл задач для Fas2discourseConfig

- include_tasks: retrieve_openshift_secrets.yml  # Получает секреты, такие как ключ API Discourse и т.д., и заполняет переменные для последующих задач
- include_tasks: kerberos_auth.yml               # Аутентификация в fasjson через keytab
- include_tasks: retrieve_discourse_groups.yml   # Обращается к API Discourse, получает список групп и список пользователей в каждой группе
- include_tasks: retrieve_ipa_groups.yml         # Обращается к fasjson, используя список групп Discourse, получает состав участников каждой группы в IPA
- include_tasks: sync_group_membership.yml       # С помощью функций множеств определяет, кто отсутствует в группе Discourse, но есть в IPA: добавляет их. Кто есть в Discourse, но отсутствует в IPA: удаляет их.

Результаты каждого вызова в рабочем процессе выводятся в журнал. Если какая-либо задача завершается ошибкой, весь цикл останавливается и повторяется.

Участники

Простое руководство по устранению неисправностей в контейнерах CodeReady.

  • Внесите изменение

  • Пометьте тегом, создайте новый образ и отправьте в реестр

    Откройте Makefile и увеличьте версию make podman push quay.io/fedora/fas2discourse-operator:<ВЕРСИЯ>

    Если у вас нет прав на отправку в репозитории в пространстве имён fedora, отправьте образ в своё пространство имён в quay.io и извлеките его в CRC оттуда.

  • Запустите CRC и войдите

    crc start oc login -u kubeadmin https://api.crc.testing:6443

  • Разверните контроллер в кластере k8s: make deploy

  • Удалите развёртывание и разверните заново

    oc get deployments oc delete <ИМЯ_РАЗВЁРТЫВАНИЯ> make deploy

  • Проверьте, находитесь ли вы в правильном проекте

    oc project fas2discourse-operator

  • Примените пользовательский ресурс Fas2DiscourseConfig

    oc apply -f config/samples/_v1alpha1_fas2discourseconfig.yaml

  • Проверьте журналы:

    oc get pods oc logs -f <ИМЯ_ПОДА>

Локальное тестирование или разработка

Руководство выше будет работать только при запуске в кластере. Для локального тестирования необходимо создать секрет. Для этого нужно создать [ключ API Discourse] (https://meta.discourse.org/t/create-and-configure-an-api-key/230124) (вероятно, на тестовом экземпляре Discourse) и действующий билет Kerberos.

Создание секрета

С помощью команды oc create secret generic. Назовём его fas2discourse-operator-discourse-apikey-secret.

FAS2DISCOURSE_API_KEY=<вставьте ваш ключ API Discourse> DISCOURSE_HOST=https://askfedora.staged-by-discourse.com/ KEYTAB_NAME=<вставьте имя файла keytab> KEYTAB_PATH=<вставьте путь к файлу keytab>

Например: oc create secret generic fas2discourse-operator-discourse-apikey-secret -n fas2discourse-operator --from-literal fas2discourse-discourse-apikey=$FAS2DISCOURSE_API_KEY --from-literal discourse-host="$DISCOURSE_HOST"

oc create secret generic fas2discourse-operator-keytab-secret --from-file=$KEYTAB_NAME="$KEYTAB_PATH"

Чтобы подтвердить создание секрета, выполните: oc get secrets

Продолжите применение пользовательского ресурса Fas2DiscourseConfig.