ConfigMap#

ConfigMap позволяет настраивать поведение Angie. Например, можно задать количество рабочих процессов или настроить формат журнала доступа.

Использование ConfigMap#

  1. Наши инструкции по установке с манифестами развертывают пустой ConfigMap, в то время как манифесты установки по умолчанию указывают ее в аргументах командной строки ANIC. Однако, если вы настроили манифесты, чтобы использовать ConfigMap, обязательно укажите ресурс ConfigMap для использования с помощью аргументов командной строки ANIC.

  2. Создайте файл ConfigMap с именем angie-config.yaml и установите значения, которые имеют смысл для вашей среды:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: angie-config
      namespace: angie-ingress
    data:
      proxy-connect-timeout: 10s
      proxy-read-timeout: 10s
      client-max-body-size: 2m
    

    См. в разделе Краткое описание ключей ConfigMap сведения о доступных ключах ConfigMap (таких как proxy-connect-timeout в этом примере).

  3. Создайте новый (или обновите существующий) ресурс ConfigMap:

    kubectl apply -f angie-config.yaml
    

    Конфигурация Angie будет обновлена.

ConfigMap и аннотации Ingress#

Аннотации позволяют настраивать расширенные функции Angie и менять поведение Angie.

ConfigMap применяется глобально, то есть влияет на каждый ресурс Ingress. Напротив, аннотации всегда применяются только к своему ресурсу Ingress. Аннотации позволяют переопределять некоторые ключи ConfigMap. Например, в angie.software/proxy-connect-timeout аннотации переопределяют ключ конфигурации proxy-connect-timeout.

Переопределение ConfigMap для конкретного ресурса Ingress с помощью аннотации#

Вы можете применять разные конфигурации ConfigMap к Ingress-ресурсам в зависимости от того, какое пространство имен указано в конфигурации. Аннотация angie.software/configmap позволяет задать конкретный ConfigMap для настройки ресурса Ingress. Заданный ConfigMap будет иметь приоритет над глобальным. В случае, если глобальный и заданный ConfigMap совпадают, применится заданный.

Чтобы применить конкретный ConfigMap к ресурсу Ingress:

  1. Создайте ConfigMap с указанием нужного пространства имен.

    Например:

    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: echoserver-new-config
      namespace: echoserver-new
    data:
      server-snippets: |
        location /echoserver-new-snippet {
              return 302 /echo-test-2;
        }
    
  2. Укажите аннотацию angie.software/configmap в ресурсе Ingress, к которому нужно применить этот ConfigMap.

    Например:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        angie.software/configmap: "echoserver-new/echoserver-new-config"
      name: echoserver-new
      namespace: echoserver-new
    spec:
      ingressClassName: angie
      rules:
      - host: test-new.example.com
        http:
          paths:
          - backend:
              service:
                name: echoserver-new
                port:
                  number: 8077
            pathType: ImplementationSpecific
    

    В этом примере аннотация angie.software/configmap указывает на использование конфигурации из ConfigMap echoserver-new-config. Это означает, что директивы, описанные в server-snippets из этого ConfigMap, будут применяться к запросам, обрабатываемым этим Ingress.

См. также документацию по расширенной конфигурации с помощью аннотаций.

ConfigMap и ресурсы VirtualServer, VirtualServerRoute#

ConfigMap влияет на все ресурсы VirtualServer и VirtualServerRoute. Однако поля этих ресурсов позволяют переопределять некоторые ключи ConfigMap. Например, поле connect-timeout сервера апстрима имеет приоритет над ключом ConfigMap proxy-connect-timeout.

См. документацию по ресурсам VirtualServer и VirtualServerRoute.

Краткое описание ключей ConfigMap#

Примечание

Для всех параметров типа boolean допустимы пары значений true/ false, t / f, on / off и 1 / 0. Регистр не имеет значения.

ANIC (не связанные с конфигурацией Angie)#

Ключ ConfigMap

Описание

По умолчанию

Пример

external-status-address

Задает адрес, который будет отображаться в статусе ресурсов Ingress. Требуется аргумент командной строки -report-status. Имеет приоритет над аргументом -external-service.

Н/Д

Отчет о состоянии Ingress

Общая настройка#

Ключ ConfigMap

Описание

По умолчанию

Пример

proxy-connect-timeout

Задает значение директив proxy_connect_timeout и grpc_connect_timeout.

60s

proxy-read-timeout

Задает значение директив proxy_read_timeout и grpc_read_timeout.

60s

proxy-send-timeout

Задает значение директив proxy_send_timeout и grpc_send_timeout.

60s

client-max-body-size

Задает значение директивы client_max_body_size.

1m

proxy-buffering

Включает или отключает буферизацию ответов от проксируемого сервера.

True

proxy-buffers

Задает значение директивы proxy_buffers.

Зависит от платформы.

proxy-buffer-size

Задает значение директив proxy_buffer_size и grpc_buffer_size.

Зависит от платформы.

proxy-max-temp-file-size

Задает значение директивы proxy_max_temp_file_size.

1024m

set-real-ip-from

Задает значение директивы set_real_ip_from.

Н/Д

real-ip-header

Задает значение директивы real_ip_header.

X-Real-IP

real-ip-recursive

Включает или отключает директиву real_ip_recursive.

False

default-server-return

Настраивает директиву return на сервере по умолчанию, которая обрабатывает клиентский запрос, если ни один из узлов ресурсов Ingress или VirtualServer не совпадает. Значение по умолчанию настраивает в Angie возврат страницы с ошибкой 404. Вы можете настроить фиксированный ответ или перенаправление. Например, значение default-server-return: 302 https://mysite.ru:samp:` перенаправит клиент на `https://mysite.ru.

404

server-tokens

Включает или отключает директиву server_tokens.

True

worker-processes

Задает значение директивы worker_processes.

auto

worker-rlimit-nofile

Задает значение директивы worker_rlimit_nofile.

Н/Д

worker-connections

Задает значение директивы worker_connections.

1024

worker-cpu-affinity

Задает значение директивы worker_cpu_affinity.

Н/Д

worker-shutdown-timeout

Задает значение директивы worker_shutdown_timeout.

Н/Д

server-names-hash-bucket-size

Задает значение директивы server_names_hash_bucket_size.

256

server-names-hash-max-size

Задает значение директивы server_names_hash_max_size.

1024

map-hash-bucket-size

Задает значение директивы map_hash_bucket_size.

256

map-hash-max-size

Задает значение директивы map_hash_max_size.

2048

resolver-addresses

Задает значение адресов resolver.

Н/Д

resolver-ipv6

Включает разрешение IPv6 в распознавателе.

True

resolver-timeout

Задает значение resolver_timeout для разрешения имен.

30s

keepalive-timeout

Задает значение директивы keepalive_timeout.

65s

keepalive-requests

Задает значение директивы keepalive_requests.

100

variables-hash-bucket-size

Задает значение директивы variables_hash_bucket_size.

256

variables-hash-max-size

Задает значение директивы variables_hash_max_size.

1024

Ведение журнала#

Ключ ConfigMap

Описание

По умолчанию

Пример

error-log-level

Задает глобальный уровень журнала ошибок для Angie.

notice

access-log-off

Отключает журнал доступа.

False

default-server-access-log-off

Отключает журнал доступа для сервера по умолчанию. Если журнал доступа отключен глобально (access-log-off: "True"), то журнал доступа к серверу по умолчанию всегда отключен.

False

log-format

Задает настраиваемый формат журнала для HTTP- и HTTPS-трафика. Для удобства можно определить формат журнала в нескольких строках (строки разделяются символом n). В этом случае ANIC заменит каждый символ n символом пробела. Все символы ' должны быть экранированы.

log-format-escaping

Задает экранирующие символы для переменных формата журнала. Поддерживаемые значения: json (экранирование JSON), default (экранирование по умолчанию), none (отключает экранирование).

default

stream-log-format

Задает настраиваемый формат журнала <s_log_format> для сквозного трафика TCP, UDP и TLS. Для удобства можно определить формат журнала в нескольких строках (строки разделяются символом n). В этом случае ANIC заменит каждый символ n символом пробела. Все символы ' должны быть экранированы.

stream-log-format-escaping

Задает экранирующие символы для переменных формата журнала потока. Поддерживаемые значения: json (экранирование JSON), default (экранирование по умолчанию), none (отключает экранирование).

default

Манипулирование URI и заголовками запроса#

Ключ ConfigMap

Описание

По умолчанию

Пример

proxy-hide-headers

Задает значение одной директивы proxy_hide_header или нескольких.

Н/Д

"angie.software/proxy-hide-headers": "header-a,header-b"

proxy-pass-headers

Задает значение одной директивы proxy_pass_header или нескольких.

Н/Д

"angie.software/proxy-pass-headers": "header-a,header-b"

Аутентификация, SSL, TLS#

Ключ ConfigMap

Описание

По умолчанию

Пример

redirect-to-https

Задает правило перенаправления 301 на основе значения заголовка http_x_forwarded_proto в серверном блоке, требуя, чтобы входящий трафик шел по протоколу HTTPS. Полезно при терминировании SSL в системе балансировки нагрузки перед ANIC.

False

ssl-redirect

Задает безусловное правило перенаправления 301 для всего входящего HTTP-трафика, требуя, чтобы входящий трафик шел по протоколу HTTPS.

True

hsts

Включает режим HTTP Strict Transport Security (HSTS): заголовок HSTS добавляется к ответам от проксируемых серверов. Директива preload будет включена в заголовок.

False

hsts-max-age

Задает значение директивы max-age заголовка HSTS.

2592000 (1 месяц)

hsts-include-subdomains

Добавляет директиву includeSubDomains в заголовок HSTS.

False

hsts-behind-proxy

Включает HSTS на основе значения заголовка запроса http_x_forwarded_proto. Следует использовать только в том случае, если в балансировщике нагрузки (прокси-сервере) перед ANIC настроено терминирование TLS.

Примечание

Чтобы управлять перенаправлением с HTTP на HTTPS, настройте аннотацию angie.software/redirect-to-https.

False

ssl-protocols

Задает значение директивы ssl_protocols.

TLSv1 TLSv1.1 TLSv1.2

ssl-prefer-server-ciphers

Включает или отключает директиву ssl_prefer_server_ciphers.

On

ssl-ciphers

Задает значение директивы ssl_ciphers.

HIGH:!aNULL:!MD5

ssl-dhparam-file

Задает содержимое файла dhparam. Контроллер создаст файл и установит значение директивы ssl_dhparam с указанием пути к файлу.

Н/Д

Прослушиватели#

Ключ ConfigMap

Описание

По умолчанию

Пример

http2

Включает HTTP/2 на серверах с включенным SSL.

False

proxy-protocol

Включает прокси-протокол для входящих соединений.

False

Бэкенд-сервисы (апстримы)#

Ключ ConfigMap

Описание

По умолчанию

Пример

lb-method

Задает метод балансировки нагрузки. Чтобы использовать циклический метод, укажите "round_robin".

"random two least_conn"

max-fails

Задает значение параметра max_fails директивы server.

1

upstream-zone-size

Задает размер зоны разделяемой памяти для апстримов.

fail-timeout

Задает значение параметра fail_timeout директивы server.

10s

keepalive

Задает значение директивы keepalive. Обратите внимание: если значение больше 0, в сгенерированную конфигурацию добавляется proxy_set_header Connection "";.

0

Фрагменты и пользовательские шаблоны#

Ключ ConfigMap

Описание

По умолчанию

Пример

main-snippets

Задает пользовательский фрагмент в основном контексте.

Н/Д

http-snippets

Задает пользовательский фрагмент в контексте http.

Н/Д

location-snippets

Задает пользовательский фрагмент в контексте location.

Н/Д

server-snippets

Задает пользовательский фрагмент в контексте server.

Н/Д

stream-snippets

Задает пользовательский фрагмент в контексте stream.

Н/Д

main-template

Задает основной шаблон конфигурации Angie.

По умолчанию шаблон считывается из файла в контейнере.

ingress-template

Задает шаблон конфигурации Angie для ресурса Ingress.

По умолчанию шаблон считывается из файла в контейнере.

virtualserver-template

Задает шаблон конфигурации Angie для ресурса VirtualServer.

По умолчанию шаблон считывается из файла в контейнере.