Recurso personalizado BackendConfig

Nesta página, fornecemos uma visão geral do recurso personalizado BackendConfig e explicamos como ele é usado para configurar a Entrada no Google Kubernetes Engine. Nela também fornecemos material de referência para o tipo BackendConfig e tipos relacionados.

Visão geral

O BackendConfig é uma definição de recurso personalizada usada pelo controlador de entrada do Kubernetes Engine. A partir do GKE versão 1.10.5-gke.3, é possível fornecer a configuração para um balanceador de carga do Cloud associando portas de serviço a objetos BackendConfig.

É possível usar um BackendConfig para configurar esses recursos de balanceamento de carga HTTP(S):

Aqui está um exemplo de um manifesto de um BackendConfig. No manifesto, fica especificada uma política de cache do Cloud CDN e declarado que o Cloud CDN precisa estar ativado:

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

Como associar uma porta de serviço a um BackendConfig

No GKE, quando você cria um objeto Entrada do Kubernetes, o controlador de entrada do GKE gera e configura um balanceador de carga HTTP(S) automaticamente. A Entrada tem regras, e cada uma delas referencia uma porta em um objeto Serviço do Kubernetes. Se uma porta de um Serviço for referenciada por uma Entrada, a porta será associada a um serviço de back-end de balanceamento de carga HTTP(S).

Se uma porta do Serviço for referenciada por uma Entrada, e se a porta do serviço estiver associada a um BackendConfig, o serviço de back-end de balanceamento de carga HTTP(S) fará parte da configuração a partir do BackendConfig.

Veja aqui um manifesto de serviço do Kubernetes com três portas:

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
...

A anotação beta.cloud.google.com/backend-config especifica um mapeamento entre portas e objetos BackendConfig. No manifesto anterior:

  • A porta http está associada a um BackendConfig denominado config-http.
  • A porta http2 está associada a um BackendConfig denominado config-http2.
  • Todas as outras portas do serviço estão associadas ao BackendConfig padrão, que é denominado config-default. Portanto, neste exemplo, a porta http3 está associada a config-default.

Na anotação beta.cloud.google.com/backend-config, você precisa especificar um campo ports, um campo default ou ambos.

Como revogar a configuração especificada em um BackendConfig

Remover a anotação BackendConfig de um serviço ou excluir o objeto BackendConfig não revogará a configuração especificada anteriormente em um BackendConfig. Isso ocorre porque o controlador de Entrada apenas reconcilia a configuração especificada no BackendConfig.

Portanto, você precisa desabilitar explicitamente a configuração no BackendConfig para revogar a configuração que não é mais necessária. Veja a seguir um exemplo de desativação da configuração:

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

Como excluir um BackendConfig

Para excluir um BackedConfig, siga estas etapas:

  1. Primeiro, remova o nome do BackendConfig da anotação beta.cloud.google.com/backend-config no manifesto do serviço.

  2. Aplique o manifesto do serviço alterado ao seu cluster, por exemplo, usando kubectl apply.

  3. Nesse momento, é possível excluir o BackendConfig. Observe que você não precisa excluir o BackendConfig. O importante é que você exclua o nome da anotação beta.cloud.google.com/backend-config.

Limitações

Um par (serviço, porta) pode consumir apenas um BackendConfig, mesmo que vários objetos de entrada façam referência ao (serviço, porta). Isso significa que todos os objetos de entrada que fazem referência ao mesmo (serviço, porta) precisam usar a mesma configuração para o Cloud Armor, o Cloud IAP e o Cloud CDN.

O Cloud IAP e o Cloud CDN não podem ser ativados para o mesmo serviço de back-end de balanceamento de carga HTTP(S). Isso significa que não é possível configurar o Cloud IAP e o Cloud CDN no mesmo BackendConfig.

Você precisa usar o kubectl 1.7 ou posterior para interagir com o BackendConfig. Ou seja, você precisa ter uma versão do kubectl que seja compatível com recursos personalizados.

A seguir

Referência

BackendConfig v1beta1 cloud.google.com

Campos

metav1.TypeMeta

Grupo, versão e tipo de API.

metadata

metav1.ObjectMeta

Metadados de objeto padrão.

spec

BackendConfigSpec

O comportamento esperado de BackendConfig.

status

BackendConfigStatus

Status mais recentemente observado de BackendConfig.

BackendConfigSpec v1beta1 cloud.google.com

Campos
iap

IAPConfig

Configuração do Cloud IAP para o serviço de back-end do balanceamento de carga HTTP(S) associado. Observe que o Cloud IAP e o Cloud CDN não podem ser ativados para o mesmo serviço de back-end de balanceamento de carga HTTP(S).

cdn

CDNConfig

Configuração do Cloud CDN para o serviço de back-end de balanceamento de carga HTTP(S) associado. Observe que o Cloud IAP e o Cloud CDN não podem ser ativados para o mesmo serviço de back-end de balanceamento de carga HTTP(S).

securityPolicy

SecurityPolicyConfig

Configuração do Cloud Armor para o serviço de back-end de balanceamento de carga HTTP(S) associado.

timeoutSec int64

Tempo limite de solicitação/resposta em segundos. O padrão é 30 segundos.

connectionDraining

ConnectionDrainingConfig

Configuração de diminuição da conexão para o serviço de back-end de balanceamento de carga HTTP(S) associado.

sessionAffinity

SessionAffinityConfig

Configuração de afinidade da sessão para o serviço de back-end de balanceamento de carga HTTP(S) associado.

BackendConfigList v1beta1 cloud.google.com

Campos

metav1.TypeMeta

Grupo, versão e tipo de API.

metadata

metav1.ObjectMeta

Metadados de objeto padrão.

items

BackendConfig array

Lista de objetos BackendConfig.

IAPConfig v1beta1 cloud.google.com

Campos
enabled

boolean

Especifica se o Cloud IAP está ativado para o serviço de back-end de balanceamento de carga HTTP(S) associado.

oauthclientCredentials

OAuthClientCredentials

Credenciais do cliente, incluindo ID e chave secreta do cliente OAuth.

OAuthClientCredentials v1beta1 cloud.google.com

Campos
secretName

string

Nome da chave secreta que armazena a ID e a chave secreta do cliente OAuth.

clientID

string

Referência direta ao ID do cliente OAuth.

clientSecret

string

Referência direta à chave secreta do cliente OAuth.

CDNConfig v1beta1 cloud.google.com

Campos
enabled

boolean

Especifica se o Cloud CDN está ativado para o serviço de back-end do balanceamento de carga HTTP(S) associado.

cachePolicy

CacheKeyPolicy

Política de chave de cache para o serviço de back-end de balanceamento de carga HTTP(S) associado.

CacheKeyPolicy v1beta1 cloud.google.com

Campos
includeHost

boolean

Se true, a solicitação para hosts diferentes será armazenada em cache separadamente.

includeProtocol

boolean

Se true, as solicitações HTTP e HTTPS serão armazenadas em cache separadamente.

includeQueryString

boolean

Se includeQueryString for true, os parâmetros de string de consulta serão incluídos na chave de cache de acordo com queryStringBlacklist e queryStringWhitelist. Se nenhum dos dois estiver configurado, toda a string de consulta será incluída. Se includeQueryString for false, toda a string de consulta será excluída da chave do cache.

queryStringBlacklist

string array

Nomes de parâmetros de string de consulta a serem excluídos das chaves de cache. Todos os outros parâmetros são incluídos. Especifique queryStringBlacklist ou queryStringWhitelist, mas não ambos.

queryStringWhitelist

string array

Nomes de parâmetros de string de consulta a incluir nas chaves de cache. Todos os outros parâmetros são excluídos. Especifique queryStringBlacklist ou queryStringWhitelist, mas não ambos.

SecurityPolicyConfig v1beta1 cloud.google.com

Campos
name

string

Nome da política de segurança do Cloud Armor a ser aplicada.

ConnectionDraining v1beta1 cloud.google.com

Campos
drainingTimeoutSec

int64

Tempo, em segundos, para esperar que as conexões sejam reduzidas. O padrão é 0 segundo.

SessionAffinity v1beta1 cloud.google.com

Campos
affinityType

string

O tipo de afinidade da sessão. Os valores possíveis são "CLIENT_IP", "GENERATED_COOKIE" e "NONE". O padrão é "NONE".

affinityCookieTtlSec

int64

Tempo de vida, em segundos, de um cookie de afinidade. É possível definir affinityCookieTtlSec mesmo que affinityType não seja "GENERATED_COOKIE".

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine