Úprava Ingress objektov pomocou anotácií

Niekoľko príkladov užitočných anotácií pre úpravu správania sa Ingress objektov v kubernetes clusteri.
Napísal Merač June 2, 2021

Niekoľko príkladov užitočných anotácií pre úpravu správania sa Ingress objektov v kubernetes clusteri.

Vlastné nastavenie hodnoty max body size

Pre NGINX, klient dostane error 413 keď veľkosť requestu presiahne maximálnu povolenú veľkosť. Na nastavenie tohto pravidla globálne pre všetky Ingress objekty, hodnotu proxy-body-size môžeme nastaviť v NGINX ConfigMap. Vlastné hodnoty pre jednotlivé Ingress objekty môžeme zadefinovať pomocou tejto anotácie:

nginx.ingress.kubernetes.io/proxy-body-size: value

Príklad použitia body-size anotácie:

kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: "0"

V tomto prípade nastavenie proxy-body-size na 0 úplne deaktivuje kontrolu veľkosti requestu klienta.

--

Vlastné nastavenie timeoutov

Pomocou konfigurácie v NGINX ConfigMap je možné nastaviť predvolenú globálnu hodnotu timeoutu pre pripojenia k upstream serverom. V niektorých prípadoch je potrebné použiť iné hodnoty. Upraviť nastavenia timeoutov v jednotlivých prípadoch môžeme pomocou anotácií:

nginx.ingress.kubernetes.io/proxy-connect-timeout: value

nginx.ingress.kubernetes.io/proxy-send-timeout: value

nginx.ingress.kubernetes.io/proxy-read-timeout: value

Príklad použitia timeout anotácie:

kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "120"

Timeout sa nastavuje bez udania jednotiek a je v sekundách. V tomto príklade nastavenie hodnoty na 120 znamená 120 sekundový proxy read timeout.

--

Presmerovanie s použitím rewrite-target

Prichádzajúci request môžeme jednoducho presmerovať na inú url pomocou rewrite-target anotácie:

nginx.ingress.kubernetes.io/rewrite-target: value

Príklad použitia rewrite-target:

kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: https://example1.com/
  name: example-rewrite
spec:
  rules:
  - host: example2.com

V tomto prípade všetok trafic na www.example2.com je presmerovaný na https://www.example1.com/

--

Presmerovanie s použitím server-snippet

Použitím anotácie nginx.ingress.kubernetes.io/server-snippet je možné pridať vlastnú konfiguráciu do konfigurácie server blocku. Je dôležité myslieť na to že táto anotácie môže byť použitá pre každý host len raz.

Príklad použitia server-snippet na presmerovanie špecifickej url:

kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/server-snippet: |
      location ~ /b {
        rewrite / https:www.example1.sk$uri permanent;
      }
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/use-regex: "true"
  name: example-snippet
spec:
  rules:
  - host: www.example2.sk

V tomto prípade všetok trafic na www.example2.sk is smerovaný na www.example2.sk, ale www.example2.sk/b is presmerované na www.example1.sk/b.

--

Pár slov na záver

V tomto blogu som uviedol len pár príkladov. Existuje množstvo anotácií, pre úpravu správania sa Ingress objektov. Viac príkladov je možné nájsť na https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/

Company name

Pri akomkoľvek zadaní a akejkoľvek požiadavke klienta sa pozeráme ďalej a chceme urobiť pre Vás viac ako by možno iným stačilo.

Kontaktná adresa

Adaptiware, spol. s r.o.
Južná trieda 8
04001 Košice
Slovenská republika

+421 905 724 771

© 2013 - 2024 - Adaptiware, spol. s r.o.