Sdílet prostřednictvím


Poznámky pro kontroler příchozího přenosu dat služby Application Gateway

Prostředek příchozího přenosu dat Kubernetes se dá anotovat pomocí libovolných párů klíč/hodnota. AGIC spoléhá na poznámky k programování funkcí služby Application Gateway, které není možné konfigurovat pomocí YAML příchozího přenosu dat. Poznámky příchozího přenosu dat se použijí pro všechna nastavení HTTP, back-endové fondy a naslouchací procesy odvozené z prostředku příchozího přenosu dat.

Seznam podporovaných poznámek

Aby prostředek příchozího přenosu dat byl pozorován službou AGIC, musí být opatřen poznámkamikubernetes.io/ingress.class: azure/application-gateway. Pouze pak AGIC pracuje s daným prostředkem příchozího přenosu dat.

Klíč poznámky Typ hodnoty Výchozí hodnota Povolené hodnoty
appgw.ingress.kubernetes.io/backend-path-prefix string nil
appgw.ingress.kubernetes.io/ssl-redirect bool false
appgw.ingress.kubernetes.io/connection-draining bool false
appgw.ingress.kubernetes.io/connection-draining-timeout int32 (sekundy) 30
appgw.ingress.kubernetes.io/cookie-based-affinity bool false
appgw.ingress.kubernetes.io/request-timeout int32 (sekundy) 30
appgw.ingress.kubernetes.io/use-private-ip bool false
appgw.ingress.kubernetes.io/backend-protocol string http http, https
appgw.ingress.kubernetes.io/rewrite-rule-set string nil

Předpona cesty back-endu

Následující poznámka umožňuje, aby se back-endová cesta zadaná v prostředku příchozího přenosu dat přepsala s předponou zadanou v této poznámce. Umožňuje uživatelům zveřejnit služby, jejichž koncové body se liší od názvů koncových bodů používaných k zveřejnění služby v prostředku příchozího přenosu dat.

Využití

appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-bkprefix
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

V předchozím příkladu jste definovali prostředek příchozího přenosu dat s názvem go-server-ingress-bkprefix anotací appgw.ingress.kubernetes.io/backend-path-prefix: "/test/". Poznámka říká službě Application Gateway, aby vytvořila nastavení HTTP, které má přepsání předpony cesty pro cestu /hello ./test/

Poznámka:

V předchozím příkladu je definováno pouze jedno pravidlo. Poznámky se ale vztahují na celý prostředek příchozího přenosu dat, takže pokud uživatel definoval více pravidel, bude předpona back-endové cesty nastavena pro každou zadanou cestu. Pokud chce uživatel různá pravidla s různými předponami cesty (i pro stejnou službu), museli by definovat různé prostředky příchozího přenosu dat.

Přesměrování protokolu TLS

Službu Application Gateway je možné nakonfigurovat tak, aby automaticky přesměrovala adresy URL HTTP na jejich protějšky HTTPS. Pokud je tato poznámka přítomen a protokol TLS je správně nakonfigurovaný, řadič příchozího přenosu dat Kubernetes vytvoří pravidlo směrování s konfigurací přesměrování a použije změny ve službě Application Gateway. Vytvořené přesměrování bude HTTP 301 Moved Permanently.

Využití

appgw.ingress.kubernetes.io/ssl-redirect: "true"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-redirect
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
   - hosts:
     - www.contoso.com
     secretName: testsecret-tls
  rules:
  - host: www.contoso.com
    http:
      paths:
      - backend:
          service:
            name: websocket-repeater
            port:
              number: 80

vyprazdňování Připojení

connection-draining: Tato poznámka nám umožňuje určit, jestli se má povolit vyprazdňování připojení. connection-draining-timeout: Tato poznámka nám umožňuje určit časový limit, po kterém služba Application Gateway ukončí požadavky na vyprázdnění back-endového koncového bodu.

Využití

appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-drain
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/connection-draining: "true"
    appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

Následující poznámka umožňuje určit, zda se má povolit spřažení na základě souborů cookie.

Využití

appgw.ingress.kubernetes.io/cookie-based-affinity: "true"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-affinity
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

Časový limit požadavku

Následující poznámka umožňuje zadat časový limit požadavku v sekundách, po kterém application Gateway požadavek selže, pokud odpověď není přijata.

Využití

appgw.ingress.kubernetes.io/request-timeout: "20"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/request-timeout: "20"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

Použití privátní IP adresy

Následující poznámka umožňuje určit, jestli se má tento koncový bod zveřejnit na privátní IP adrese služby Application Gateway.

Poznámka:

  • U služby Application Gateway, která nemá privátní IP adresu, se příchozí přenos dat appgw.ingress.kubernetes.io/use-private-ip: "true" ignoruje. To se projeví v protokolech kontroleru a v událostech příchozího přenosu dat pro tyto příchozí přenosy dat s upozorněním NoPrivateIP .

Využití

appgw.ingress.kubernetes.io/use-private-ip: "true"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

Protokol back-endu

Následující poznámka umožňuje zadat protokol, který by služba Application Gateway měla používat při komunikaci s pody. Podporované protokoly jsou http a https.

Poznámka:

Zatímco certifikáty podepsané svým držitelem jsou podporovány ve službě Application Gateway, AGIC v současné době podporuje https pouze v případě, že pody používají certifikát podepsaný dobře známou certifikační autoritou.

Nepoužívejte port 80 s HTTPS a portem 443 s HTTP na podech.

Využití

appgw.ingress.kubernetes.io/backend-protocol: "https"

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-timeout
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 443

Přepsání sady pravidel

Následující poznámka umožňuje přiřadit stávající přepsat pravidlo nastavené k odpovídajícímu pravidlu směrování požadavků.

Využití

appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>

Příklad

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-bkprefix
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/rewrite-rule-set: add-custom-response-header
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 8080