Udostępnij za pośrednictwem


Adnotacje dla kontrolera ruchu przychodzącego usługi Application Gateway

Możesz dodać adnotację do zasobu ruchu przychodzącego Kubernetes z dowolnymi parami klucz/wartość. Kontroler ruchu przychodzącego usługi Application Gateway (AGIC) opiera się na adnotacjach do programowania aplikacja systemu Azure funkcji bramy, które nie można skonfigurować za pośrednictwem kodu YAML ruchu przychodzącego. Adnotacje ruchu przychodzącego są stosowane do wszystkich ustawień protokołu HTTP, pul zaplecza i odbiorników pochodzących z zasobu ruchu przychodzącego.

Lista obsługiwanych adnotacji

Aby usługa AGIC obserwować zasób ruchu przychodzącego, zasób musi być oznaczony adnotacją kubernetes.io/ingress.class: azure/application-gateway.

Klucz adnotacji Typ wartości Domyślna wartość Dozwolone wartości
appgw.ingress.kubernetes.io/backend-path-prefix string nil
appgw.ingress.kubernetes.io/backend-hostname string nil
appgw.ingress.kubernetes.io/health-probe-hostname string 127.0.0.1
appgw.ingress.kubernetes.io/health-probe-port int32 80
appgw.ingress.kubernetes.io/health-probe-path string /
appgw.ingress.kubernetes.io/health-probe-status-code string 200-399
appgw.ingress.kubernetes.io/health-probe-interval int32 30 (sekundy)
appgw.ingress.kubernetes.io/health-probe-timeout int32 30 (sekundy)
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold int32 3
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/use-private-ip bool false
appgw.ingress.kubernetes.io/override-frontend-port bool false
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/hostname-extension string nil
appgw.ingress.kubernetes.io/waf-policy-for-path string nil
appgw.ingress.kubernetes.io/appgw-ssl-certificate string nil
appgw.ingress.kubernetes.io/appgw-ssl-profile string nil
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate string nil
appgw.ingress.kubernetes.io/rewrite-rule-set string nil
appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource
appgw.ingress.kubernetes.io/rule-priority int32 nil

Prefiks ścieżki zaplecza

Poniższa adnotacja umożliwia przepisanie ścieżki zaplecza określonej w zasobie ruchu przychodzącego z określonym prefiksem. Służy do uwidaczniania usług, których punkty końcowe różnią się od nazw punktów końcowych używanych do uwidaczniania usługi w zasobie ruchu przychodzącego.

Użycie

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

Przykład

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

W poprzednim przykładzie zdefiniowano zasób ruchu przychodzącego o nazwie go-server-ingress-bkprefix z adnotacją o nazwie appgw.ingress.kubernetes.io/backend-path-prefix: "/test/". Adnotacja informuje usługę Application Gateway o utworzeniu ustawienia HTTP, które ma zastępowanie prefiksu ścieżki dla ścieżki /hello do /test/.

W przykładzie zdefiniowano tylko jedną regułę. Adnotacje dotyczą jednak całego zasobu przychodzącego. Dlatego jeśli zdefiniujesz wiele reguł, skonfigurujesz prefiks ścieżki zaplecza dla każdej z określonych ścieżek. Jeśli chcesz użyć różnych reguł z różnymi prefiksami ścieżki (nawet dla tej samej usługi), musisz zdefiniować różne zasoby ruchu przychodzącego.

Nazwa hosta zaplecza

Użyj następującej adnotacji, aby określić nazwę hosta, która powinna być używana przez usługę Application Gateway podczas rozmowy z zasobnikami.

Użycie

appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"

Przykład

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-hostname: "internal.example.com"
spec:
  rules:
  - http:
      paths:
      - path: /hello/
        backend:
          service:
            name: store-service
            port:
              number: 80
        pathType: Exact

Niestandardowa sonda kondycji

Usługę Application Gateway można skonfigurować tak, aby wysyłała niestandardowe sondy kondycji do puli adresów zaplecza. Gdy są obecne następujące adnotacje, kontroler ruchu przychodzącego Kubernetes tworzy niestandardową sondę do monitorowania aplikacji zaplecza. Następnie kontroler stosuje zmiany w usłudze Application Gateway.

  • health-probe-hostname: Ta adnotacja umożliwia niestandardową nazwę hosta w sondze kondycji.
  • health-probe-port: Ta adnotacja konfiguruje niestandardowy port dla sondy kondycji.
  • health-probe-path: Ta adnotacja definiuje ścieżkę dla sondy kondycji.
  • health-probe-status-code: Ta adnotacja umożliwia sondie kondycji akceptowanie różnych kodów stanu HTTP.
  • health-probe-interval: Ta adnotacja definiuje interwał uruchamiania sondy kondycji.
  • health-probe-timeout: Ta adnotacja definiuje czas oczekiwania sondy kondycji na odpowiedź przed niepowodzeniem sondy.
  • health-probe-unhealthy-threshold: Ta adnotacja określa, ile sond kondycji musi zakończyć się niepowodzeniem, aby zaplecze było oznaczone jako w złej kondycji.

Użycie

appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 80
appgw.ingress.kubernetes.io/health-probe-path: "/"
appgw.ingress.kubernetes.io/health-probe-status-code: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 30
appgw.ingress.kubernetes.io/health-probe-timeout: 30
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
    appgw.ingress.kubernetes.io/health-probe-port: 81
    appgw.ingress.kubernetes.io/health-probe-path: "/probepath"
    appgw.ingress.kubernetes.io/health-probe-status-code: "100-599"
    appgw.ingress.kubernetes.io/health-probe-interval: 31
    appgw.ingress.kubernetes.io/health-probe-timeout: 31
    appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 80

Przekierowanie PROTOKOŁU TLS

Usługę Application Gateway można skonfigurować tak, aby automatycznie przekierowywała adresy URL HTTP do ich odpowiedników HTTPS. Gdy ta adnotacja jest obecna i protokół TLS jest prawidłowo skonfigurowany, kontroler ruchu przychodzącego Kubernetes tworzy regułę routingu z konfiguracją przekierowania. Następnie kontroler stosuje zmiany do wystąpienia usługi Application Gateway. Utworzone przekierowanie to HTTP 301 Moved Permanently.

Użycie

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

Przykład

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

Opróżnianie połączenia

Jeśli chcesz użyć opróżniania połączeń, użyj następujących adnotacji:

  • connection-draining: Ta adnotacja określa, czy włączyć opróżnianie połączenia.
  • connection-draining-timeout: Ta adnotacja określa limit czasu, po którym usługa Application Gateway kończy żądania do punktu końcowego opróżniania zaplecza.

Użycie

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

Przykład

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

Użyj następującej adnotacji, aby włączyć koligację opartą na plikach cookie.

Użycie

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

Przykład

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

Limit czasu żądania

Użyj następującej adnotacji, aby określić limit czasu żądania w sekundach. Po przekroczeniu limitu czasu usługa Application Gateway kończy się niepowodzeniem żądania, jeśli odpowiedź nie zostanie odebrana.

Użycie

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

Przykład

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

Korzystanie z prywatnego adresu IP

Użyj następującej adnotacji, aby określić, czy uwidocznić ten punkt końcowy na prywatnym adresie IP usługi Application Gateway.

W przypadku wystąpienia usługi Application Gateway, które nie ma prywatnego adresu IP, ruch przychodzący z usługą appgw.ingress.kubernetes.io/use-private-ip: "true" jest ignorowany. W dziennikach kontrolera i zdarzeniach ruchu przychodzącego dla tych ruchu przychodzącego NoPrivateIP są wyświetlane ostrzeżenie.

Użycie

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

Przykład

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

Zastąpij port frontonu

Użyj następującej adnotacji, aby skonfigurować odbiornik frontonu do używania portów innych niż 80 dla protokołu HTTP i 443 dla protokołu HTTPS.

Jeśli port znajduje się w autoryzowanym zakresie usługi Application Gateway (od 1 do 64999), odbiornik zostanie utworzony na tym określonym porcie. Jeśli ustawisz nieprawidłowy port lub żaden port w adnotacji, konfiguracja używa wartości domyślnej 80 lub 443.

Użycie

appgw.ingress.kubernetes.io/override-frontend-port: "port"

Przykład

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

Uwaga

Żądania zewnętrzne muszą być kierowane http://somehost:8080 zamiast http://somehost.

Protokół zaplecza

Użyj poniższej instrukcji, aby określić protokół, który ma być używany przez usługę Application Gateway podczas komunikacji z zasobnikami. Obsługiwane protokoły to HTTP i HTTPS.

Mimo że certyfikaty z podpisem własnym są obsługiwane w usłudze Application Gateway, usługa AGIC obsługuje obecnie protokół HTTPS tylko wtedy, gdy zasobniki używają certyfikatu podpisanego przez dobrze znany urząd certyfikacji.

Nie używaj portu 80 z protokołem HTTPS i portem 443 z protokołem HTTP w zasobnikach.

Użycie

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

Przykład

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: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 443

Rozszerzenie nazwy hosta

Usługę Application Gateway można skonfigurować tak, aby akceptowała wiele nazw hostów. hostname-extension Użyj adnotacji, aby zdefiniować wiele nazw hostów, w tym nazwy hostów z symbolami wieloznacznymi. Ta akcja dołącza nazwy hostów do nazwy FQDN zdefiniowanej w informacjach przychodzących spec.rules.host na odbiorniku frontonu, więc jest skonfigurowana jako odbiornik z wieloma lokacjami.

Użycie

appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-multisite
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
spec:
  rules:
  - host: contoso.com
    http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 443

Powyższy przykład konfiguruje odbiornik tak, aby akceptował ruch dla nazw hostów hostname1.contoso.com i hostname2.contoso.com.

Zasady zapory aplikacji internetowej dla ścieżki

Użyj następującej adnotacji, aby dołączyć istniejące zasady zapory aplikacji internetowej (WAF) do ścieżek listy dla hosta w zasobie ruchu przychodzącego Kubernetes, który jest adnotacjonowany. Zasady zapory aplikacji internetowej są stosowane do adresów /ad-server URL i /auth .

Użycie

appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ad-server-ingress
  namespace: commerce
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/abcd/resourceGroups/rg/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/adserver"
spec:
  rules:
  - http:
      paths:
      - path: /ad-server
        backend:
          service:
            name: ad-server
            port:
              number: 80
        pathType: Exact
      - path: /auth
        backend:
          service:
            name: auth-server
            port:
              number: 80
        pathType: Exact

Certyfikat SSL usługi Application Gateway

Certyfikat SSL można skonfigurować do usługi Application Gateway z lokalnego pliku certyfikatu PFX lub odwołania do niewersyjnego identyfikatora wpisu tajnego usługi Azure Key Vault. Gdy adnotacja jest obecna z nazwą certyfikatu i certyfikat jest wstępnie zainstalowany w usłudze Application Gateway, kontroler ruchu przychodzącego Kubernetes tworzy regułę routingu z odbiornikiem HTTPS i stosuje zmiany do wystąpienia usługi Application Gateway. Możesz również użyć appgw-ssl-certificate adnotacji wraz z adnotacją ssl-redirect w przypadku przekierowania SSL.

Uwaga

Adnotacja appgw-ssl-certificate jest ignorowana, gdy specyfikacja protokołu TLS jest definiowana w ruchu przychodzącym w tym samym czasie. Jeśli chcesz użyć różnych certyfikatów z różnymi hostami (zakończenie wielu certyfikatów TLS), musisz zdefiniować różne zasoby ruchu przychodzącego.

Użycie

appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"

Przykład

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

Profil SSL usługi Application Gateway

Profil SSL można skonfigurować w wystąpieniu usługi Application Gateway na odbiornik. Gdy adnotacja jest obecna z nazwą profilu i profil jest wstępnie zainstalowany w usłudze Application Gateway, kontroler ruchu przychodzącego Kubernetes tworzy regułę routingu z odbiornikiem HTTPS i stosuje zmiany do wystąpienia usługi Application Gateway.

Użycie

appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-certificate
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
    appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
spec:
  rules:
  - host: www.contoso.com
    http:
      paths:
      - backend:
          service:
            name: websocket-repeater
            port:
              number: 80

Zaufany certyfikat główny usługi Application Gateway

Teraz możesz skonfigurować własne certyfikaty główne do usługi Application Gateway, aby był zaufany za pośrednictwem programu AGIC. Adnotację appgw-trusted-root-certificate można używać razem z adnotacją backend-protocol , aby wskazać kompleksowe szyfrowanie SSL. Jeśli określisz wiele certyfikatów głównych, oddziel je przecinkiem; na przykład name-of-my-root-cert1,name-of-my-root-cert2.

Użycie

appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-certificate
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/backend-protocol: "https"
    appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
spec:
  rules:
  - host: www.contoso.com
    http:
      paths:
      - backend:
          service:
            name: websocket-repeater
            port:
              number: 80

Ponowne zapisywanie zestawu reguł

Użyj następującej adnotacji, aby przypisać istniejącą regułę ponownego zapisywania do odpowiedniej reguły routingu żądań.

Użycie

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

Przykład

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

Ponowne zapisywanie zestawu reguł niestandardowych

Uwaga

Wydanie usługi Application Gateway dla kontenerów wprowadza wiele zmian wydajności, odporności i funkcji. Rozważ użycie usługi Application Gateway dla kontenerów na potrzeby następnego wdrożenia.

Reguły ponownego zapisywania adresów URL dla usługi Application Gateway dla kontenerów można znaleźć w tym artykule na temat interfejsu API bramy i tego artykułu na temat interfejsu API ruchu przychodzącego. Reguły ponownego zapisywania nagłówka dla usługi Application Gateway dla kontenerów można znaleźć w tym artykule na temat interfejsu API bramy.

Usługa Application Gateway umożliwia ponowne zapisywanie wybranej zawartości żądań i odpowiedzi. Dzięki tej funkcji można tłumaczyć adresy URL, zmieniać parametry ciągu zapytania oraz modyfikować nagłówki żądań i odpowiedzi. Możesz również użyć tej funkcji, aby dodać warunki, aby upewnić się, że adres URL lub określone nagłówki zostaną przepisane tylko wtedy, gdy zostaną spełnione określone warunki. Zasób niestandardowy zestawu reguł ponownego zapisywania powoduje przeniesienie tej funkcji do usługi AGIC.

Nagłówki HTTP umożliwiają klientowi i serwerowi przekazywanie dodatkowych informacji z żądaniem lub odpowiedzią. Zapisując te nagłówki ponownie, można wykonać ważne zadania, takie jak dodawanie pól nagłówka powiązanych z zabezpieczeniami (na przykład HSTS lub X-XSS-Protection), usuwanie pól nagłówka odpowiedzi, które mogą ujawniać poufne informacje i usuwanie informacji o porcie z X-Forwarded-For nagłówków.

Dzięki możliwości ponownego zapisywania adresów URL można wykonywać następujące czynności:

  • Zapisz ponownie nazwę hosta, ścieżkę i ciąg zapytania adresu URL żądania.
  • Wybierz ponowne zapisywanie adresu URL wszystkich żądań lub tylko żądań, które pasują do co najmniej jednego ustawionego warunków. Te warunki są oparte na właściwościach żądania i odpowiedzi (nagłówek żądania, nagłówek odpowiedzi i zmienne serwera).
  • Wybierz kierowanie żądania na podstawie oryginalnego adresu URL lub przepisanego adresu URL.

Uwaga

Ta funkcja jest obsługiwana od wersji 1.6.0-rc1. Użyj polecenia appgw.ingress.kubernetes.io/rewrite-rule-set, który umożliwia używanie istniejącej reguły ponownego zapisywania ustawionej w usłudze Application Gateway.

Użycie

appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource

Przykład

apiVersion: appgw.ingress.azure.io/v1beta1 
kind: AzureApplicationGatewayRewrite 
metadata: 
  name: my-rewrite-rule-set-custom-resource 
spec: 
  rewriteRules: 
  - name: rule1 
    ruleSequence: 21
    conditions:
  - ignoreCase: false
    negate: false
    variable: http_req_Host
    pattern: example.com
  actions:
    requestHeaderConfigurations:
    - actionType: set
      headerName: incoming-test-header
      headerValue: incoming-test-value
    responseHeaderConfigurations:
    - actionType: set
      headerName: outgoing-test-header
      headerValue: outgoing-test-value
    urlConfiguration:
      modifiedPath: "/api/"
      modifiedQueryString: "query=test-value"
      reroute: false

Priorytet reguły

Następująca adnotacja umożliwia kontrolerowi ruchu przychodzącego usługi Application Gateway jawne ustawienie priorytetu skojarzonych reguł routingu żądań.

Użycie

appgw.ingress.kubernetes.io/rule-priority:

Przykład

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: go-server-ingress-rulepriority
  namespace: test-ag
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
    appgw.ingress.kubernetes.io/rule-priority: 10
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Exact
        backend:
          service:
            name: go-server-service
            port:
              number: 8080

W poprzednim przykładzie ustawiono priorytet 10 dla reguły routingu żądań.