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
Spřažení na základě souborů cookie
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ímNoPrivateIP
.
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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro