Dela via


Anteckningar för Application Gateway-ingresskontrollant

Kubernetes Ingress-resursen kan kommenteras med godtyckliga nyckel/värde-par. AGIC förlitar sig på anteckningar för att programmera Application Gateway-funktioner, som inte kan konfigureras med hjälp av INKOMMANDE YAML. Ingressanteckningar tillämpas på alla HTTP-inställningar, serverdelspooler och lyssnare som härleds från en ingressresurs.

Lista över anteckningar som stöds

För att en ingressresurs ska kunna observeras av AGIC måste den kommenteras med kubernetes.io/ingress.class: azure/application-gateway. Först då fungerar AGIC med den aktuella ingressresursen.

Anteckningsnyckel Värdetyp Standardvärde Tillåtna värden
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 (sekunder) 30
appgw.ingress.kubernetes.io/cookie-based-affinity bool false
appgw.ingress.kubernetes.io/request-timeout int32 (sekunder) 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

Serverdelssökvägsprefix

Med följande kommentar kan den serverdelssökväg som anges i en ingressresurs skrivas om med prefixet som anges i den här kommentaren. Det gör det möjligt för användare att exponera tjänster vars slutpunkter skiljer sig från slutpunktsnamn som används för att exponera en tjänst i en ingressresurs.

Användning

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

Exempel

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

I föregående exempel har du definierat en ingressresurs med namnet go-server-ingress-bkprefix med en anteckning appgw.ingress.kubernetes.io/backend-path-prefix: "/test/". Kommentaren instruerar application gateway att skapa en HTTP-inställning som har en åsidosättning av sökvägsprefixet för sökvägen /hello till /test/.

Kommentar

I exemplet ovan definieras endast en regel. Anteckningarna gäller dock för hela ingressresursen, så om en användare har definierat flera regler konfigureras serverdelssökvägsprefixet för var och en av de angivna sökvägarna. Om en användare vill ha olika regler med olika sökvägsprefix (även för samma tjänst) skulle de behöva definiera olika ingressresurser.

Omdirigering av TLS

Application Gateway kan konfigureras för att automatiskt omdirigera HTTP-URL:er till sina HTTPS-motsvarigheter. När den här kommentaren finns och TLS är korrekt konfigurerad skapar Kubernetes ingresskontrollant en routningsregel med en omdirigeringskonfiguration och tillämpar ändringarna på din Application Gateway. Omdirigeringen som skapas blir HTTP 301 Moved Permanently.

Användning

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

Exempel

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

Anslut ionsdränering

connection-draining: Med den här kommentaren kan vi ange om anslutningen ska tömmas. connection-draining-timeout: Med den här kommentaren kan vi ange en timeout, varefter Application Gateway avslutar begäranden till den tömande serverdelsslutpunkten.

Användning

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

Exempel

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

Med följande kommentar kan du ange om cookiebaserad tillhörighet ska aktiveras.

Användning

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

Exempel

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

Tidsgräns för förfrågan

Med följande kommentar kan du ange tidsgränsen för begäran i sekunder, varefter Application Gateway misslyckas med begäran om svaret inte tas emot.

Användning

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

Exempel

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

Använda privat IP

Med följande kommentar kan du ange om den här slutpunkten ska exponeras på den privata IP-adressen för Application Gateway.

Kommentar

  • För Application Gateway som inte har en privat IP-adress ignoreras ingresser med appgw.ingress.kubernetes.io/use-private-ip: "true" . Detta återspeglas i kontrollantloggarna och ingresshändelserna för dessa ingresser med NoPrivateIP varning.

Användning

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

Exempel

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

Serverdelsprotokoll

Med följande kommentar kan du ange det protokoll som Application Gateway ska använda när du kommunicerar med poddarna. Protokoll som stöds är http och https.

Kommentar

Även om självsignerade certifikat stöds på Application Gateway stöder https AGIC för närvarande endast när poddar använder ett certifikat som signerats av en välkänd certifikatutfärdare.

Använd inte port 80 med HTTPS och port 443 med HTTP på poddarna.

Användning

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

Exempel

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

Skriv om regeluppsättning

Med följande kommentar kan du tilldela en befintlig omskrivningsregel inställd på motsvarande routningsregel för begäranden.

Användning

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

Exempel

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