Recurso personalizado de BackendConfig

Esa página proporciona una descripción general del recurso personalizado de BackendConfig y explica cómo usar la configuración Ingress en Google Kubernetes Engine. Esta página también proporciona material de referencia para el tipo BackendConfig y los tipos relacionados.

Descripción general

BackendConfig es una definición personalizada de un recurso que usa el Ingress controller de Kubernetes Engine. A partir de la versión GKE 1.10.5-gke.3, puedes proporcionar la configuración de un balanceador de cargas en la nube asociando los puertos del servicio con los objetos BackendConfi.

Puedes usar BackendConfig para configurar estas características de balanceo de cargas HTTP(S):

Este es un ejemplo de un manifiesto para una BackendConfig. El manifiesto especifica una política de caché Cloud CDN y declara que Cloud CDN debe estar habilitada:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-backend-config
spec:
  cdn:
    enabled: true
    cachePolicy:
      includeHost: true
      includeProtocol: true
      includeQueryString: false

Cómo asociar un puerto de servicio con un BackendConfig

Cuando creas un objeto Ingress de Kubernetes en GKE, el controlador Ingress de GKE crea y configura un balanceador de cargas HTTP(S) para ti. Tu Ingress tiene reglas, cada una de las cuales hace referencia a un puerto en un objeto de Servicio de Kubernetes. Si un puerto de servicio hace referencia a un Ingress, el puerto está asociado con un servicio de backend de balanceo de cargas HTTP(S).

Si un puerto de servicio hace referencia a un Ingress, y si el puerto de servicio está asociado con una BackendConfig, entonces el servicio de backend de balanceo de cargas HTTP(S) forma parte de la configuración desde el BackendConfig.

A continuación, se muestra un manifiesto de servicio de Kubernetes que tiene tres puertos:

apiVersion: v1
kind: Service
metadata:
  annotations:
    beta.cloud.google.com/backend-config:
      '{"ports": {"http":"config-http", "http2" :"config-http2"}, "default": "config-default"}'
  name: my-service
spec:
  type: NodePort
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 8080
  - name: http2
    protocol: TCP
    port: 443
    targetPort: 8080
  - name: http3
    protocol: TCP
    port: 49152
    targetPort: 49152
...

La anotación beta.cloud.google.com/backend-config especifica una asignación entre puertos y objetos BackendConfig. En el manifiesto anterior:

  • El puerto http está asociado con una BackendConfig llamada config-http.
  • El puerto http2 está asociado con una BackendConfig llamada config-http2.
  • Todos los demás puertos para el Servicio están asociados con la BackendConfig predeterminada, que se llama config-default. En este ejemplo, el puerto http3 está asociado con config-default.

En la anotación beta.cloud.google.com/backend-config, debes especificar un campo de ports, un campo de default, o ambos.

Cómo revocar la configuración especificada en una BackendConfig

Ni quitar la anotación BackendConfig de un Servicio ni borrar la BackendConfig del objeto revocará la configuración previamente especificada en una BackendConfig. Esto se debe a que el Ingress Controller solo reconcilia la configuración especificada en BackendConfig.

Por lo tanto, debes inhabilitar explícitamente la configuración en BackendConfig para revocar la configuración que ya no es necesaria. Aquí hay un ejemplo para inhabilitar la configuración:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-backend-config
spec:
  cdn:
    enabled: false
  securityPolicy:
    name: ""

Cómo borrar una BackendConfig

Para borrar una BackedConfig, sigue estos pasos:

  1. Primero, quita el nombre de la BackendConfig de la anotación beta.cloud.google.com/backend-config en el manifiesto de Servicio.

  2. Aplica el manifiesto de servicio modificado a tu clúster, por ejemplo, mediante kubectl apply.

  3. En este punto, puedes borrar la BackendConfig. Ten en cuenta que no tienes que borrar la BackendConfig. Lo importante es que borres su nombre de la anotación beta.cloud.google.com/backend-config.

Limitaciones

Un par (puerto, Servicio) puede consumir solo una BackendConfig, incluso si varios objetos Ingress hacen referencia al (puerto, Servicio). Esto significa que todos los objetos Ingress que hacen referencia al mismo (Servicio, puerto) deben usar la misma configuración para Cloud Armor, Cloud IAP y Cloud CDN.

Cloud IAP y Cloud CDN no se pueden habilitar para el mismo servicio de backend de balanceo de cargas de HTTP(S). Esto significa que no puedes configurar ambas, Cloud AP y Cloud CDN, en la misma BackendConfig.

Debes usar kubectl 1.7 o posterior para interactuar con BackendConfig. Es decir, debes tener una versión de kubectl que admita recursos personalizados.

¿Qué sigue?

Referencia

BackendConfig v1beta1 cloud.google.com

Campos

metav1.TypeMeta

Grupo de API, versión y tipo

metadata

metav1.ObjectMeta

Estándar de metadatos de objeto

spec

BackendConfigSpec

El comportamiento deseado de BackendConfig

status

BackendConfigStatus

Estado de BackendConfig observado más recientemente

BackendConfigSpec v1beta1 cloud.google.com

Campos
iap

IAPConfig

Configuración Cloud IAP para el servicio de backend de balanceo de cargas de HTTP(S).asociado. Ten en cuenta que Cloud IAP y Cloud CDN no se pueden habilitar para el mismo servicio de backend de balanceo de cargas de HTTP(S).

cdn

CDNConfig

Configuración Cloud IAP para el servicio de backend de balanceo de cargas de HTTP(S). Ten en cuenta que Cloud IAP y Cloud CDN no se pueden habilitar para el mismo servicio de backend de balanceo de cargas de HTTP(S).

securityPolicy

SecurityPolicyConfig

Configuración Cloud Armor para el servicio de backend de balanceo de cargas de HTTP(S) asociado.

timeoutSec int64

Tiempo de espera de solicitud/respuesta en segundos. El valor predeterminado es de 30 segundos.

connectionDraining

ConnectionDrainingConfig

Configuración de desvío de conexión para el servicio de backend de balanceo de cargas de HTTP(S) asociado.

sessionAffinity

SessionAffinityConfig

Configuración de afinidad de sesión para el servicio de backend de balanceo de cargas de HTTP(S) asociado.

BackendConfigList v1beta1 cloud.google.com

Campos

metav1.TypeMeta

Grupo de API, versión y tipo

metadata

metav1.ObjectMeta

Estándar de metadatos de objeto

items

BackendConfig array

Lista de objetos BackendConfig

IAPConfig v1beta1 cloud.google.com

Campos
enabled

boolean

Especifica si Cloud IAP está habilitado para el servicio de backend de balanceo de cargas de HTTP(S) asociado.

oauthclientCredentials

OAuthClientCredentials

Credenciales del cliente, incluido el ID y secreto de cliente de OAuth

OAuthClientCredentials v1beta1 cloud.google.com

Campos
secretName

string

Nombre del Secreto que almacena el ID y el secreto de cliente de OAuth

clientID

string

Referencia directa al ID de cliente de OAuth

clientSecret

string

Referencia directa al secreto de cliente de OAuth.

CDNConfig v1beta1 cloud.google.com

Campos
enabled

boolean

Especifica si Cloud CDN está habilitado para el servicio de backend de balanceo de cargas de HTTP(S).asociado.

cachePolicy

CacheKeyPolicy

Política de claves de caché para el servicio de backend de balanceo de cargas de HTTP(S).

CacheKeyPolicy v1beta1 cloud.google.com

Campos
includeHost

boolean

Si es verdadero, la solicitud a diferentes hosts se almacena en caché por separado.

includeProtocol

boolean

Si es verdadero, las solicitudes HTTP y HTTPS se almacenan en caché por separado.

includeQueryString

boolean

Si includeQueryString es verdadero, los parámetros de la cadena de consulta se incluyen en la clave de caché de acuerdo con queryStringBlacklist y queryStringWhitelist. Si no se establece ninguno, se incluye toda la cadena de consulta. Si includeQueryString es falso, toda la cadena de consulta se excluye de la clave de caché.

queryStringBlacklist

string array

Nombres de parámetros de cadena de consulta para excluir de las claves de caché. Todos los demás parámetros están incluidos. Especifica queryStringBlacklist o queryStringWhitelist, pero no ambos.

queryStringWhitelist

string array

Nombres de parámetros de cadena de consulta para incluir en las claves de caché. Todos los demás parámetros están excluidos. Especifica queryStringBlacklist o queryStringWhitelist, pero no ambos.

SecurityPolicyConfig v1beta1 cloud.google.com

Campos
name

string

Nombre de la Política de seguridad de Cloud Armor que se debe aplicar.

ConnectionDraining v1beta1 cloud.google.com

Campos
drainingTimeoutSec

int64

Tiempo, en segundos, para esperar a que las conexiones se desvíen. El valor predeterminado es 0 segundos.

SessionAffinity v1beta1 cloud.google.com

Campos
affinityType

string

El tipo de afinidad de sesión. Los valores posibles son "CLIENT_IP", "GENERATED_COOKIE" y "NONE". El valor predeterminado es "NONE".

affinityCookieTtlSec

int64

Tiempo en vivo, en segundos, para una cookie de afinidad. Puedes establecer affinityCookieTtlSec incluso si affinityType no es "GENERATED_COOKIE".

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...