Создание кастомных страниц ошибок#
В ANIC можно настроить кастомные страницы ошибок, например c более информативными сообщениями для пользователей (для статусов наподобие 502).
Добавить кастомную страницу можно двумя способами:
пересобрать образ ANIC с новой страницей;
настроить ConfigMap без пересборки образа ANIC.
Пересборка образа ANIC с кастомной страницей#
Этот вариант предполагает создание нового Docker-образа ANIC, который включает кастомную страницу ошибки. Такой вариант подойдет, если кастомная страница ошибки редко меняется и ее удобно включить в образ.
Выполните следующие шаги:
Создайте Dockerfile и добавьте в него новую страницу ошибки:
FROM anic.docker.angie.software/anic:latest COPY 502.html /usr/share/angie/html/
Соберите и загрузите новый образ в кластер (см. Установка с помощью Helm).
Разверните обновленный образ в кластере.
Добавьте в Ingress-ресурс аннотацию для использования кастомной страницы ошибки:
annotations: angie.software/server-snippets: | error_page 502 /502.html; location = /502.html { root /usr/share/angie/html; internal; }
Примечание
Также можно использовать ConfigMap, тогда правило будет применяться ко всем серверам.
Этот способ подходит как для Ingress-ресурса, так и для VirtualServer.
Использование ConfigMap без пересборки образа#
Если нет возможности пересобрать образ ANIC, можно поместить страницу ошибки в под через ConfigMap. Также этот способ удобен, если требуется оперативно менять содержимое страницы ошибки.
Выполните следующие шаги:
Создайте ConfigMap с HTML-страницей ошибки:
apiVersion: v1 kind: ConfigMap metadata: name: error-page namespace: angie data: 502.html: | <!DOCTYPE html> <html> <head> <title>ERROR PAGE</title> </head> <body> ERROR PAGE </body> </html>
Добавьте в файл
values.yaml
эту ConfigMap:volumes: - name: error-page configMap: name: error-page ## The volumeMounts of the Ingress Controller pods. volumeMounts: [] - name: error-page mountPath: /usr/share/angie/html/custom_error
Добавьте в Ingress-ресурс аннотацию:
annotations: angie.software/server-snippets: | error_page 502 /502.html; location = /502.html { root /usr/share/angie/html/custom_error; internal; }
Этот способ подходит как для Ingress-ресурса, так и для VirtualServer.