Написать в техподдержку Позвонить нам
Админпанель Выход

Содержание статьи:

    Расширенное управление Ingress Controller

    При создании нового кластера Kubernetes уже имеется предустановленный Ingress Controller:

    После выполнения шагов по созданию кластера в разделе "Виртуальные сети - Балансировщики нагрузки" автоматически создается балансировщик для Ingress Controller:

    Такая возможность исключает отдельное действие по созданию балансировщика для кластера.

    Внимание

    Определенные параметры могут быть сконфигурированы только с помощью ConfigMap, либо только с помощью аннотаций.

    Опции Nginx Ingress Controller

    Можно управлять различными опциями NGINX Ingress Controller с помощью ConfigMap или аннотаций. В случае использования ConfigMap, данные параметры будут применены глобально ко всем ресурсам Ingress, в случае аннотаций - только к тому Ingress, в котором использована эту аннотацию. Следующая таблица показывает соответствие между доступными аннотациями и ключами ConfigMap.

    Соответствие аннотаций

    Аннотация Ключ ConfigMap Описание Значение по умолчанию
    kubernetes.io/ingress.class N/A Определяет, какой контроллер Ingress должен обрабатывать ресурс Ingress. Установите значение nginx, чтобы контроллер NGINX Ingress обрабатывал его. N/A
    nginx.org/proxy-connect-timeout proxy-connect-timeout Устанавливает значение директивы proxy_connect_timeout. 60s
    nginx.org/proxy-read-timeout proxy-read-timeout Устанавливает значение директивы proxy_read_timeout. 60s
    nginx.org/client-max-body-size client-max-body-size Устанавливает значение директивы client_max_body_size. 1m
    nginx.org/proxy-buffering proxy-buffering Включает или отключает буферизацию ответов от прокси-сервера. True
    nginx.org/proxy-buffers proxy-buffers Устанавливает значение директивы proxy_buffers. Depends on the platform.
    nginx.org/proxy-buffer-size proxy-buffer-size Устанавливает значение директивы proxy_buffer_size Depends on the platform.
    nginx.org/proxy-max-temp-file-size proxy-max-temp-file-size Устанавливает значение директивы proxy_max_temp_file_size. 1024m
    nginx.org/proxy-hide-headers proxy-hide-headers Устанавливает значение одной или нескольких директив proxy_hide_header. Пример: «nginx.org/proxy-hide-headers»: «header-a, header-b» N/A
    nginx.org/proxy-pass-headers proxy-pass-headers Устанавливает значение одной или нескольких директив proxy_pass_header. Пример: «nginx.org/proxy-pass-headers»: «header-a, header-b» N/A
    N/A server-names-hash-bucket-size Устанавливает значение директивы server_names_hash_bucket_size. Depends on the size of the processor’s cache line.
    N/A server-names-hash-max-size Устанавливает значение директивы server_names_hash_max_size. 512
    N/A http2 Включает HTTP / 2 на серверах с включенным SSL. False
    nginx.org/redirect-to-https redirect-to-https Устанавливает правило перенаправления 301 на основе значения http_x_forwarded_protoheader в блоке сервера, чтобы заставить входящий трафик проходить через HTTPS. Полезно при завершении SSL в балансировщике нагрузки перед контроллером Ingress - см. 115 False
    ingress.kubernetes.io/ssl-redirect ssl-redirect Устанавливает безусловное правило перенаправления 301 для всего входящего HTTP-трафика, чтобы принудительно использовать входящий трафик по HTTPS. True
    N/A log-format Устанавливает собственный формат журнала логирования. See thetemplate file.
    nginx.org/hsts hsts Включает строгую транспортную безопасность HTTP (HSTS): заголовок HSTS добавляется к ответам от бэкэндов. Директива preload включена в заголовок. False
    nginx.org/hsts-max-age hsts-max-age Устанавливает значение директивы max-age заголовка HSTS. 2592000(1 month)
    nginx.org/hsts-include-subdomains hsts-include-subdomains Добавляет директиву includeSubDomains в заголовок HSTS. False
    N/A ssl-protocols Устанавливает значение директивы ssl_protocols. TLSv1 TLSv1.1 TLSv1.2
    N/A ssl-prefer-server-ciphers Включает или отключает директиву ssl_prefer_server_ciphers. False
    N/A ssl-ciphers Устанавливает значение директивы ssl_ciphers. HIGH:!aNULL:!MD5
    N/A ssl-dhparam-file Устанавливает содержимое файла dhparam. Контроллер создаст файл и установит значение директивы ssl_dhparam с путем к файлу. N/A
    N/A set-real-ip-from Устанавливает значение директивы set_real_ip_from. N/A
    N/A real-ip-header Устанавливает значение директивы real_ip_header. X-Real-IP
    N/A real-ip-recursive Включает или отключает директиву real_ip_recursive. False
    nginx.org/server-tokens server-tokens Включает или отключает server_tokensdirective. Кроме того, с помощью NGINX Plus можно указать настраиваемое строковое значение, включая пустое строковое значение, которое отключает выдачу поля «Сервер». True
    N/A main-snippets Устанавливает настраиваемый фрагмент в основном контексте. N/A
    N/A http-snippets Устанавливает настраиваемый фрагмент в контексте http. N/A
    nginx.org/location-snippets location-snippets Устанавливает настраиваемый фрагмент в контексте местоположения. N/A
    nginx.org/server-snippets server-snippets Устанавливает настраиваемый фрагмент в контексте сервера. N/A
    nginx.org/lb-method lb-method Устанавливает метод балансировки нагрузки. По умолчанию "" определяет метод циклического перебора. ""
    nginx.org/listen-ports N/A Настраивает HTTP-порты, которые NGINX будет прослушивать. [80]
    nginx.org/listen-ports-ssl N/A Настраивает порты HTTPS, которые будет прослушивать NGINX. [443]
    N/A worker-processes Устанавливает значение директивы worker_processes. auto
    N/A worker-rlimit-nofile Устанавливает значение директивы worker_rlimit_nofile. N/A
    N/A worker-connections Устанавливает значение директивы worker_connections. 1024
    N/A worker-cpu-affinity Устанавливает значение директивы worker_cpu_affinity. N/A
    N/A worker-shutdown-timeout Устанавливает значение директивы worker_shutdown_timeout. N/A
    nginx.org/keepalive keepalive Устанавливает значение директивы keepalive. Обратите внимание, что proxy_set_header Connection ""; добавляется в сгенерированную конфигурацию, когда значение> 0. 0
    N/A proxy-protocol Включает протокол PROXY для входящих соединений. False
    nginx.org/rewrites N/A Настройка перезаписи URL. N/A
    nginx.org/ssl-services N/A Активирует HTTPS при подключении к конечным точкам сервисов. N/A
    nginx.org/websocket-services N/A Активирует вебсокеты для сервера. N/A
    nginx.org/max-fails max-fails Устанавливает значение параметра max_fails директивы сервера. 1
    nginx.org/fail-timeout fail-timeout Устанавливает значение параметра fail_timeout директивы сервера. 10s

    Конфигурация с помощью ConfigMaps

    Следует отредактировать файл nginx-config.yaml, установив необходимые параметры.

    Далее следует применить данный файл на кластере Kubernetes:

    $ kubectl apply -f nginx-config.yaml

    После этого конфигурация NGINX Ingress Controller будет изменена.

    Если необходимо обновить некоторые параметры, надо изменить файл nginx-config.yaml и выполнить следующую команду еще раз:

    $ kubectl apply -f nginx-config.yaml

    Конфигурация с помощью аннотаций

    Если необходимо настроить параметры для конкретного Ingress, проще всего использовать аннотации. Значения, используемые в аннотациях имеют больший приоритет, чем ConfigMap.

    Например (cafe-ingress-with-annotations.yaml):

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress-with-annotations
      annotations:
        nginx.org/proxy-connect-timeout: "30s"
        nginx.org/proxy-read-timeout: "20s"
        nginx.org/client-max-body-size: "4m"
        nginx.org/location-snippets: |
            if ($ssl_client_verify = SUCCESS) {
                set $auth_basic off;
            }
            if ($ssl_client_verify != SUCCESS) {
                set $auth_basic "Restricted";
            }
            auth_basic $auth_basic;
            auth_basic_user_file "/var/run/secrets/nginx.org/auth-basic-file";
        nginx.org/server-snippets: |
            ssl_verify_client optional;
    spec:
      rules:
      - host: cafe.example.com
        http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80

    Полезна ли была эта статья?