Anotaciones para el controlador de entrada de Application Gateway
El recurso de entrada de Kubernetes se puede anotar con pares clave-valor arbitrarios. AGIC depende de las anotaciones para programar las características de Application Gateway, que no se pueden configurar mediante el YAML de entrada. Las anotaciones de entrada se aplican a todas las configuraciones HTTP, los grupos de back-end y los clientes de escucha derivados de un recurso de entrada.
Lista de anotaciones admitidas
Para que AGIC observe un recurso de entrada, se debe anotar con kubernetes.io/ingress.class: azure/application-gateway
. Solo entonces AGIC funciona con el recurso de entrada en cuestión.
Clave de anotación | Tipo de valor | Valor predeterminado | Valores permitidos |
---|---|---|---|
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 (segundos) |
30 |
|
appgw.ingress.kubernetes.io/cookie-based-affinity | bool |
false |
|
appgw.ingress.kubernetes.io/request-timeout | int32 (segundos) |
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 |
Prefijo de ruta de acceso de back-end
La anotación siguiente permite volver a escribir la ruta de acceso de back-end especificada en un recurso de entrada con el prefijo especificado en esta anotación. Esto permite a los usuarios exponer servicios cuyos puntos de conexión son diferentes de los nombres de puntos de conexión usados para exponer un servicio en un recurso de entrada.
Uso
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
Ejemplo
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
En el ejemplo anterior, se ha definido un recurso de entrada denominado go-server-ingress-bkprefix
con una anotación appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
. La anotación le indica a la puerta de enlace de aplicación que cree una configuración de HTTP, que tiene una invalidación de prefijo de ruta de acceso para la ruta de acceso /hello
en /test/
.
Nota:
En el ejemplo anterior, solo se ha definido una regla. Pero las anotaciones se pueden aplicar a todo el recurso de entrada, por lo que si un usuario ha definido varias reglas, se configuraría el prefijo de la ruta de acceso de back-end para cada una de las rutas de acceso especificadas. Si un usuario quiere tener diferentes reglas con prefijos de ruta de acceso diferentes (incluso para el mismo servicio), tendría que definir diferentes recursos de entrada.
Redirección de TLS
Application Gateway puede configurarse para redirigir automáticamente las direcciones URL HTTP a sus equivalentes HTTPS. Cuando esta anotación está presente y TLS está configurado correctamente, el controlador de entrada de Kubernetes crea una regla de enrutamiento con una configuración de redireccionamiento y aplica los cambios a su instancia de Application Gateway. La redirección creada será HTTP 301 Moved Permanently
.
Uso
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Ejemplo
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
Purga de la conexión
connection-draining
: esta anotación nos permite especificar si se habilitará el drenaje de conexiones.
connection-draining-timeout
: esta anotación nos permite especificar un tiempo de espera después del cual Application Gateway finaliza las solicitudes al punto de conexión de back-end de drenaje.
Uso
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
Ejemplo
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
Afinidad basada en cookies
La anotación siguiente le permite especificar si se va a habilitar la afinidad basada en cookies.
Uso
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Ejemplo
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
Tiempo de espera de solicitud
La anotación siguiente le permite especificar el tiempo de espera de la solicitud en segundos después del cual Application Gateway producirá un error en la solicitud si no se recibe respuesta.
Uso
appgw.ingress.kubernetes.io/request-timeout: "20"
Ejemplo
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
Uso de una dirección IP privada
La anotación siguiente le permite especificar si se va a exponer este punto de conexión en la dirección IP privada de Application Gateway.
Nota:
- En el caso de una instancia de Application Gateway sin una IP privada, se omitirán las entradas con
appgw.ingress.kubernetes.io/use-private-ip: "true"
. Esto se refleja en los registros del controlador y los eventos de entrada de dichas entradas con la advertenciaNoPrivateIP
.
Uso
appgw.ingress.kubernetes.io/use-private-ip: "true"
Ejemplo
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
Protocolo de back-end
La anotación siguiente le permite especificar el protocolo que Application Gateway debe usar al comunicarse con los pods. Los protocolos admitidos son http
y https
.
Nota:
Aunque los certificados autofirmados se admiten en Application Gateway, actualmente AGIC solo admite https
cuando los pods usan un certificado que firma una CA conocida.
No use el puerto 80 con HTTPS ni el puerto 443 con HTTP en los pods.
Uso
appgw.ingress.kubernetes.io/backend-protocol: "https"
Ejemplo
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
Conjunto de reglas de reescritura
La anotación siguiente le permite asignar un conjunto de reglas de reescritura existente a la regla de enrutamiento de solicitudes correspondiente.
Uso
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
Ejemplo
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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de