Přeskočit obsah

NGINX v ASAB Maestro

Technologie NGINX poskytuje:

  • Schopnosti aplikační brány
  • Vyvažování zátěže
  • Průzkumník služeb
  • Autorizaci pro další služby v clusteru

Servery

ASAB Maestro organizuje konfiguraci NGINX do následující struktury:

  • HTTP server: http, viz config
  • HTTPS server: https, viz config
  • Interní HTTP server na portu tcp/8890: internal, viz config
  • Upstreamy

Konfigurace NGINX v deskriptorech

Sekce nginx deskriptoru poskytuje informace o tom, jak očekává příslušná služba, že bude NGINX nakonfigurován. To znamená, že specifikuje pravidla proxy přeposílání, která zpřístupňují API mikroslužby.

Příklad deskriptoru /Site/.../Descriptors/foobar.yaml:

define:
  type: rc/descriptor

...  

nginx:

  api:
    port: 5678

  upstreams:
    upstream-foobar-extra: 1234

  https:
    location = /_introspect:
      - internal
      - proxy_method POST
      - proxy_pass http://{{UPSTREAM}}/introspect
      - proxy_ignore_headers Cache-Control Expires Set-Cookie

    location /subpath/api/foobar:
      - rewrite ^/subpath/api/(.*) /$1 break
      - proxy_pass http://upstream-foobar-extra

    server:
      - ssl_client_certificate shared/custom-certificate.pem
      - ssl_verify_client optional

Konverze konfigurace NGINX do YAML

Konfigurace NGINX v ASAB Maestro je přeložena do YAML, aby mohla být zahrnuta v modelu nebo deskriptorech.

Následující úryvek konfigurace NGINX:

location /api/myapp {
  rewrite ^/api/myapp/(.*) /myapp/$1 break;
  proxy_pass http://my-server:8080;
}

se stane v souborech YAML ASAB Maestro:

location /api/myapp:
  - rewrite ^/api/myapp/(.*) /myapp/$1 break
  - proxy_pass http://my-server:8080

Podobně můžete přidat konfiguraci do bloku serveru:

    server:
      - ssl_client_certificate shared/lmio-receiver/client-ca-cert.pem
      - ssl_verify_client optional

Sekce api

Sekce api umožňuje rychlé specifikování "hlavního" API služby. Klíč port specifikuje TCP port, na kterém je API vystaveno službou.

Tato položka vygeneruje příslušné položky location a upstream.

Plná automatizace

Sekce api může být snadno jedinou sekcí v části nginx deskriptoru služby.

Sekce upstream

Specifický upstream služby. Každá instance služby bude přidána do záznamu upstreamů v konfiguraci NGINX.

upstream odkazuje na všechny dostupné instance služby.

nginx:
  upstreams:
    upstream-foobar-extra: 1234

Služba foobar definuje další API "extra", které je dostupné na portu tcp/1234. Stane se dostupným jako upstream s názvem upstream-foobar-extra a může být použito jako http://upstream-foobar-extra v příkazech proxy_pass v lokacích.

Výsledná konfigurace upstream, předpokládající tři instance služby foobar nacházející se na třech uzlech clusteru:

upstream upstream-foobar-extra {
    keepalive 32;
    server server1:3081;
    server server2:3081;
    server server3:3081;
}

Konfigurace serveru

Další možnosti jsou implementovány pro každý server zvlášť (http, https, internal).

Dodatečné lokace mohou být specifikovány pro server.

Sekce location

Typicky, proxy konfigurace konkrétní komponenty nebo lokace staticky obsluhovaného obsahu.

Každá další lokace je přidána do konfigurace nginx jednou za službu, pokud není parametr INSTANCE_ID použit v hlavičce lokace. Pak je lokace zavedena pro každou instanci.

Sekce server

Konfigurace bloku serveru.

Konfigurace NGINX na úrovni modelu

Na úrovni modelu můžete specifikovat vlastní konfiguraci NGINX následujícím způsobem:

define:
  type: rc/model

...

nginx:
  https:
    location /my-special-location:
      - gzip_static on
      - alias /webroot/lmio-webui/dist

Tímto se přidá location "/my-special-location" na https server.

Distribuce webových aplikací

Technologie NGINX slouží pro webové aplikace. sherpa webapp-dist stahuje a instaluje webové aplikace definované v modelu. Webové aplikace budou nasazeny (pokud je to potřeba) pokaždé, když je model aplikován (tj. je vydán příkaz "up").

Příklad model.yaml:

define:
  type: rc/model

...

webapps:
  /: Moje webová aplikace
  /auth: SeaCat Auth WebUI
  /influxdb: InfluxDB UI

...

Sekce webapps v modelu předepisuje nasazení tří webových aplikací:

  1. "Moje webová aplikace" bude nasazena do umístění / na HTTPS serveru
  2. "SeaCat Auth WebUI" bude nasazena do umístění /auth na HTTPS serveru
  3. "InfluxDB UI" bude nasazena do umístění /influxdb na HTTPS serveru

Podporované typy webových aplikací: