ConfigMap

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

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

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

  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 и ресурсы VirtualServer, VirtualServerRoute

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

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

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

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 перенаправит клиент на 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). В этом случае Ingress Controller заменит каждый символ \n символом пробела. Все символы ' должны быть экранированы.

log-format-escaping

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

default

stream-log-format

Задаёт настраиваемый формат журнала для сквозного трафика TCP, UDP и TLS. Для удобства можно определить формат журнала в нескольких строках (строки разделяются символом \n). В этом случае Ingress Controller заменит каждый символ \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 в системе балансировки нагрузки перед Ingress Controller

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. Следует использовать только в том случае, если в балансировщике нагрузки (прокси-сервере) перед Ingress Controller настроено терминирование 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.

False

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.

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