Создание кастомных страниц ошибок#

В ANIC можно настроить кастомные страницы ошибок, например c более информативными сообщениями для пользователей (для статусов наподобие 502).

Добавить кастомную страницу можно двумя способами:

  • пересобрать образ ANIC с новой страницей;

  • настроить ConfigMap без пересборки образа ANIC.

Пересборка образа ANIC с кастомной страницей#

Этот вариант предполагает создание нового Docker-образа ANIC, который включает кастомную страницу ошибки. Такой вариант подойдет, если кастомная страница ошибки редко меняется и ее удобно включить в образ.

Выполните следующие шаги:

  1. Создайте Dockerfile и добавьте в него новую страницу ошибки:

    FROM anic.docker.angie.software/anic:latest
    COPY 502.html /usr/share/angie/html/
    
  2. Соберите и загрузите новый образ в кластер (см. Установка с помощью Helm).

  3. Разверните обновленный образ в кластере.

  4. Добавьте в 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. Также этот способ удобен, если требуется оперативно менять содержимое страницы ошибки.

Выполните следующие шаги:

  1. Создайте 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>
    
  2. Добавьте в файл 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
    
  3. Добавьте в Ingress-ресурс аннотацию:

    annotations:
      angie.software/server-snippets: |
        error_page 502 /502.html;
        location = /502.html {
          root /usr/share/angie/html/custom_error;
          internal;
        }
    

Этот способ подходит как для Ingress-ресурса, так и для VirtualServer.