Usar um controlador de Entrada personalizado


Nesta página, descrevemos como usar um controlador de Entrada personalizado com o Google Kubernetes Engine (GKE).

Usar um controlador de Entrada personalizado com o complemento HttpLoadBalancing ativado

É possível executar um controlador de entrada personalizado, como nginx-ingress, desativando o complemento HttpLoadBalancing. Isso impede que o controlador de entrada do GKE processe recursos de entrada.

Se você quiser executar um controlador de Entrada personalizado com o complemento HttpLoadBalancing ativado, por exemplo, para usar recursos como subagrupamento e Private Service Connect, é possível usar uma das seguintes abordagens:

Garanta que spec.ingressClassName não seja substituído acidentalmente por nenhum processo. Uma operação de atualização que altera spec.IngressClassName de um valor válido para uma string vazia ("") faz com que o controlador de entrada do GKE processe a entrada.

Configurar o campo ingressClassName

É possível usar um controlador de entrada personalizado definindo o campo ingressClassName no manifesto de entrada. O manifesto a seguir descreve uma entrada que especifica o controlador nginx de entrada (em inglês):

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: cafe-ingress
spec:
 ingressClassName: nginx
 tls:
 - hosts:
   - cafe.example.com
   secretName: cafe-secret
 rules:
 - host: cafe.example.com

Essa configuração é compatível com a API Ingress v1beta1 nas versões 1.18 a 1.21 do GKE e a API Ingress v1 nas versões 1.19 e posteriores do GKE.

Configurar uma classe de Entrada padrão

É possível configurar uma classe Entrada padrão para todos os recursos Ingress em um cluster criando um recurso IngressClass com a anotação ingressclass.kubernetes.io/is-default-class definida como true:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
name: nginx-public
annotations:
  ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: k8s.io/ingress-nginx

Essa configuração está disponível para clusters que executam o GKE versões 1.19 e posteriores.

Resumo do comportamento do controlador de Entrada do GKE

Para clusters que executam as versões 1.18 e posteriores do GKE, se o controlador de Entrada do GKE processa uma Entrada depende do valor da anotação kubernetes.io/ingress.class e do campo ingressClassName no manifesto da Entrada:

Valor de kubernetes.io/ingress.class Valor de ingressClassName Comportamento do controlador de entrada
Não definida Não definida Processar entrada
gce ou gce-internal Qualquer valor Processar entrada
Defina com um valor diferente de gce ou gce-internal. Qualquer valor Não processar Entrada
Não definida Qualquer valor Não processar Entrada

Para clusters que executam versões mais antigas do GKE, o controlador do GKE processa qualquer Entrada que não tenha a anotação kubernetes.io/ingress.class ou que tenha a anotação com o valor gce ou gce-internal.

A seguir