Personalização do roteamento do ALB
Personalize a forma como seus Balanceadores de Carga de Aplicativos (ALBs) lidam com roteamento, cabeçalhos, tempos limite, autenticação e tráfego usando os recursos do Traefik Middleware, as anotações do Ingress e o ibm-ingress-deploy-config ConfigMap.
Adicionar uma porta de servidor a um cabeçalho de host
Por padrão, o Traefik lida com o cabeçalho Host de uma forma compatível com a maioria dos aplicativos modernos. Não é recomendável modificar o cabeçalho Host para incluir uma porta. Antes
de fazer qualquer alteração, verifique como o Traefik lida com o cabeçalho por padrão e entenda em que situações é apropriado sobrescrevê-lo.
- Tratamento padrão do cabeçalho “
Host” -
Por padrão, o Traefik encaminha o cabeçalho original “
Host” compassHostHeader: true. Ele adiciona automaticamente os seguintes cabeçalhos de encaminhamento separados, em vez de incorporar a porta no cabeçalhoHost: -
X-Forwarded-Host
-
X-Forwarded-Port
- Substituindo o cabeçalho
Hostpara aplicativos legados -
Se seu aplicativo precisar da porta incorporada no cabeçalho
Host, use o middleware de cabeçalhos do Traefik para sobrescrevê-la.# Example (Kubernetes Middleware) apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: test-header spec: headers: customRequestHeaders: Host: "legacy-app.example:8080"Aplique o middleware ao seu recurso Ingress usando a anotação “Traefik Ingress”. Certifique-se de que o processamento de CRD esteja habilitado (é a configuração padrão). Para configurar o processamento de CRDs, consulte o guia “
ibm-ingress-deploy-configConfigMap processTraefikCRDs campo ”.
Encaminhamento de solicitações recebidas por meio de um ALB privado
Por padrão, os ALBs públicos processam recursos de entrada. Para redirecionar as solicitações recebidas por meio de um ALB privado, especifique a classe private-iks-traefik no campo spec.ingressClassName do seu recurso Ingress.
spec.ingressClassName: "private-iks-traefik"
Autenticação de aplicativos com App ID
Configure o Traefik Ingress com IBM Cloud App ID para aplicar a autenticação em seus aplicativos. Para obter mais informações, consulte “Adicionando a autenticaçã App ID a aos aplicativos ”.
Definição do tamanho máximo do corpo da solicitação do cliente
Por padrão, o Traefik não impõe um limite ao tamanho do corpo da solicitação do cliente. Para definir um limite máximo, crie um Middleware de Buffering e aplique-o ao seu recurso Ingress.
O Traefik rejeita qualquer solicitação que exceda o limite configurado com uma resposta 413 “ HTTP ”.
-
Crie um recurso de middleware de buffer do Traefik. Defina
maxRequestBodyBytescomo o número máximo de bytes que o cliente pode enviar. O exemplo a seguir define um limite de 2 MB (2.097.152 bytes).# Example (Kubernetes Middleware) apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: limit spec: buffering: maxRequestBodyBytes: 2097152 -
Aplique o middleware ao seu recurso Ingress usando a anotação “Traefik Ingress”.
Ativação do armazenamento em buffer dos dados de resposta do cliente
Por padrão, o Traefik transmite as respostas diretamente, sem armazenamento em buffer. Com o Buffering Middleware, o Traefik pode armazenar respostas na memória ou gravá-las no disco antes de enviá-las ao cliente. Utilize este middleware somente quando seu aplicativo precisar dele, pois o armazenamento em buffer de respostas não é recomendado na maioria dos casos.
Para ativar o buffer de respostas, siga estas etapas:
-
Crie um recurso de middleware de buffer do Traefik. Defina
maxResponseBodyBytescomo o tamanho máximo da resposta em bytes ememResponseBodyBytescomo o limite acima do qual a resposta é gravada no disco, em vez de ser mantida na memória. O exemplo a seguir armazena em buffer até 5 MB no total, sendo que o primeiro 1 MB fica na memória.# Example (Kubernetes Middleware) apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: response-buffer spec: buffering: maxResponseBodyBytes: 5242880 # 5 MB max response size memResponseBodyBytes: 1048576 # 1 MB in memory, then disk -
Aplique o middleware ao seu recurso Ingress usando a anotação “Traefik Ingress”.
Ajustando os tempos limite
O Traefik oferece dois tipos de controles de tempo limite: os tempos limite entre o cliente e o ALB e os tempos limite entre o ALB e seu aplicativo de back-end. Configure-os separadamente, dependendo de onde estiver o gargalo.
Para definir os tempos limite entre o cliente e o ALB, configure os campos correspondentes em ibm-ingress-deploy-config ConfigMap:
- Para definir por quanto tempo uma solicitação recebida em HTTP ou HTTPS aguarda a resposta da instância do Traefik, use os campos httpReadTimeout e httpsReadTimeout.
- Para definir o tempo máximo antes que a resposta expire, use os campos “ httpWriteTimeout ” e “ httpsWriteTimeout ”.
- Para configurar o tempo máximo durante o qual uma conexão keepalive permanece aberta antes de ser encerrada, utilize os campos “ httpIdleTimeout ” e “ httpsIdleTimeout ”.
Para definir o tempo limite de conexão e de leitura entre o ALB e seu aplicativo back-end, use ServersTransport para configurar o transporte entre o Traefik e seus servidores HTTP.
# Example (Kubernetes ServersTransport)
apiVersion: traefik.io/v1alpha1
kind: ServersTransport
metadata:
name: mytransport
spec:
forwardingTimeouts:
dialTimeout: 30s
responseHeaderTimeout: 10s
idleConnTimeout: 90s
Para clusters VPC, você também deve modificar o tempo limite de inatividade da conexão no serviço de balanceador de carga que expõe seu ALB público. Substitua CLUSTER_ID pelo ID do seu cluster, que você pode obter acessando ibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID.
O exemplo a seguir define o tempo limite para 910 segundos:
kubectl annotate svc -n kube-system public-cr<clusterid> service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout="910"
O Traefik aceita o valor “ 0 ” para seus tempos limite, o que desativa o tempo limite.
A anotação ibm-load-balancer-cloud-provider-vpc-idle-connection-timeout no balanceador de carga do VPC não aceita o valor zero. Você pode definir um valor de tempo limite entre 50 segundos e 7.200 segundos (2 horas).
Caso precise de um prazo superior a 2 horas, abra um ticket de suporte e apresente a justificativa comercial.
Se seus clusters estiverem expostos por meio do IBM Cloud Internet Services (CIS) ou do Cloudflare com o Web Application Firewall (WAF) ou o balanceamento de carga global ativado, defina esses tempos limite para mais de 900 segundos. Para obter mais informações, consulte a documentação da Cloudflare.
Depois de criar o recurso ServersTransport , aplique-o ao seu recurso Service usando a anotação Traefik Service.
Personalização de ações em caso de erro
Para definir ações personalizadas que o ALB pode executar em caso de erros específicos do HTTP, configure o Traefik Errors Middleware. Depois de criar o middleware, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Alteração das portas padrão HTTP e HTTPS
Por padrão, os ALBs ficam à escuta na porta 80 para HTTP e na porta 443 para HTTPS. Se o seu cluster exigir portas não padrão, você pode alterar esses valores para cada ALB usando os campos “ httpPort ” e “ httpsPort ” na página “ ibm-ingress-deploy-config ” ConfigMap.
Personalização do cabeçalho da solicitação
Use o middleware de cabeçalhos do Traefik para adicionar, sobrescrever ou remover campos de cabeçalho de uma solicitação do cliente antes de encaminhá-la para seu aplicativo de back-end. Isso é útil para inserir informações de contexto, como nomes de scripts, identificadores de locatário ou outros metadados de que seu aplicativo necessita.
# Example (Kubernetes Middleware)
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-header
spec:
headers:
customRequestHeaders:
X-Script-Name: "test"
Depois de criar o middleware, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Personalização do cabeçalho de resposta
Use o middleware de cabeçalhos do Traefik para adicionar, sobrescrever ou remover campos de cabeçalho de uma resposta antes de enviá-la ao cliente. Isso é útil para aplicar políticas de segurança, adicionar cabeçalhos CORS ou remover cabeçalhos internos antes que eles cheguem ao cliente.
# Example (Kubernetes Middleware)
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-header
spec:
headers:
customResponseHeaders:
X-Custom-Response-Header: "value"
Depois de criar o middleware, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Redirecionamento de solicitações não seguras
Para garantir que o acesso seja feito exclusivamente por meio de HTTPS e redirecionar permanentemente todas as solicitações recebidas em HTTP para o endpoint HTTPS, defina o campo httpsRedirect no ibm-ingress-deploy-config ConfigMap.
Ativação e desativação da Segurança de Transporte Rigorosa ( HTTP )
HTTP A Segurança de Transporte Rigorosa ( HSTS ) determina que os navegadores acessem um domínio apenas por meio de HTTPS, impedindo ataques de downgrade de protocolo. Esse recurso é opcional no Traefik. Habilite essa função utilizando o
Middleware de Cabeçalhos com os campos stsSeconds, stsIncludeSubdomains e stsPreload.
# Example (Kubernetes Middleware) - produces: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: security-headers
spec:
headers:
stsSeconds: 31536000 # max-age=1 year
stsIncludeSubdomains: true
stsPreload: true
Aplique o middleware ao seu recurso Ingress usando a seguinte anotação do Traefik Ingress.
Modificando a forma como o ALB mapeia o URI da solicitação
Por padrão, o Traefik usa o comparador “ PathPrefix ” para rotear as solicitações. Se seu aplicativo exigir correspondência exata de caminho ou roteamento baseado em expressões regulares, substitua o comparador usando a seguinte
anotação do Traefik Ingress.
traefik.ingress.kubernetes.io/router.pathmatcher: PathRegexp
Configurando a autenticação mútua
A autenticação mútua TLS ( mTLS ) exige que tanto o servidor quanto o cliente apresentem certificados válidos, proporcionando uma autenticação mais robusta do que a padrão TLS. Para exigir a autenticação por certificado do cliente no seu ALB, crie um recurso TLSOption que faça referência ao segredo do certificado da sua CA.
# Example (Kubernetes TLSOption)
apiVersion: traefik.io/v1alpha1
kind: TLSOption
metadata:
name: mtls
namespace: default
spec:
minVersion: VersionTLS12
clientAuth:
secretNames:
- my-ca-secret
clientAuthType: RequireAndVerifyClientCert
Depois de criar o recurso TLSOption, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Configurando o comportamento de repetição de tentativas para solicitações de upstream
Quando um servidor back-end não responde, o Traefik pode automaticamente tentar novamente a solicitação em outro servidor upstream. Configure o comportamento de repetição de tentativas usando o middleware de repetição do Traefik. Depois de criar o middleware, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Limitação de taxa
A limitação de taxa protege seus aplicativos de back-end contra picos de tráfego e uso indevido, limitando o número de solicitações que o ALB processa dentro de um intervalo de tempo. Configure a limitação de taxa usando o Traefik RateLimit Middleware. Depois de criar o middleware, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Reescrita de caminhos
A reescrita de caminho permite expor um caminho público URL diferente do caminho no qual seu aplicativo de back-end fica à escuta. Por exemplo, você pode redirecionar as solicitações que chegam a /app para um aplicativo de back-end
que escuta em /. Utilize um dos seguintes recursos do Traefik, dependendo se você precisa de uma substituição fixa ou de uma substituição baseada em padrões:
- O recurso “ ReplacePath Middleware ” do Traefik
- O recurso “ ReplacePathRegex Middleware ” do Traefik
# Example Replace the path with /foo
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-replacepath
spec:
replacePath:
path: "/foo"
# Example Replace path with regex
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: test-replacepathregex
spec:
replacePathRegex:
regex: "^/foo/(.*)"
replacement: "/bar/$1"
Aplique o middleware ao seu recurso Ingress usando a seguinte anotação do Traefik Ingress.
Criptografando o tráfego entre seu aplicativo e o ALB
Por padrão, o Traefik redireciona o tráfego para seu aplicativo back-end por meio de HTTP. Se seu aplicativo exigir conexões upstream criptografadas, use um ServersTransport recurso para configurar um TLS o entre o ALB e seu aplicativo, incluindo o certificado da CA e o nome do servidor esperado.
# Example (Kubernetes ServersTransport)
apiVersion: traefik.io/v1alpha1
kind: ServersTransport
metadata:
name: backend-transport
spec:
rootCAs:
- secret: my-ca-cert
serverName: <myapp.example.com> # must match your certificate
Aplique a anotação “ ServersTransport ” ao seu recurso de serviço utilizando a seguinte anotação do Traefik Service.
Customizando a implementação do ALB
O ibm-ingress-deploy-config ConfigMap controla as configurações no nível do ALB, como o número de réplicas, portas, nível de log, valores de tempo limite e provedor de Ingress. Use este ConfigMap para aplicar alterações de configuração
a um ou mais ALBs em seu cluster sem modificar recursos Ingress individualmente.
-
Obtenha os nomes dos serviços que expõem cada ALB. Anote os nomes dos serviços, pois você os utilizará nas etapas a seguir.
- Clusters clássicos:
kubectl get svc -n kube-system | grep alb ``` * Clusters de VPC: na saída, procure um nome de serviço que seja formatado como `public-crc204dl7w0qf6n6sp7tug`. ```sh {: pre} kubectl get svc -n kube-system | grep LoadBalancer ``` -
Crie um arquivo YAML para um configmap do
ibm-ingress-deploy-config. Para cada ID do ALB, é possível especificar uma ou mais das configurações opcionais a seguir. Você só precisa incluir as configurações que deseja definir.apiVersion: v1 kind: ConfigMap metadata: name: ibm-ingress-deploy-config namespace: kube-system data: <alb1-id>: '{"replicas":<number_of_replicas>, "ingressClass":"<class>", "httpsPort":"<port>", "httpPort":"<port>", "logLevel": "<TRACE|DEBUG|INFO|WARN|ERROR|FATAL|PANIC>", "ingressProvider": "<ingress|ingress-nginx>", "processTraefikCRDs": <true|false>, "traefikIngressNginxAllowExternalNameServices": <true|false>, "traefikCRDAllowCrossNamespace": <true|false>, "traefikCRDAllowExternalNameServices": <true|false>, "httpReadTimeout": <seconds>, "httpWriteTimeout": <seconds>, "httpIdleTimeout": <seconds>, "httpsReadTimeout": <seconds>, "httpsWriteTimeout": <seconds>, "httpsIdleTimeout": <seconds>, "httpsRedirect": <true|false>, "customEntryPoints": {"<name>": {"port": <port>, "protocol": "<TCP|UDP>", "readTimeout": <seconds|0>, "writeTimeout": <seconds|0>, "idleTimeout": <seconds|0>, "udpTimeout": <seconds>}}, "tolerations": [{"key":"<key>","operator":"<Equal|Exists>","value":"<value>","effect":"<NoSchedule|PreferNoSchedule|NoExecute>"}]}' <alb2-id>: '{"replicas":<number_of_replicas>, "ingressClass":"<class>", "httpsPort":"<port>", "httpPort":"<port>", "logLevel": "<TRACE|DEBUG|INFO|WARN|ERROR|FATAL|PANIC>", "ingressProvider": "<ingress|ingress-nginx>", "processTraefikCRDs": <true|false>, "traefikIngressNginxAllowExternalNameServices": <true|false>, "traefikCRDAllowCrossNamespace": <true|false>, "traefikCRDAllowExternalNameServices": <true|false>, "httpReadTimeout": <seconds>, "httpWriteTimeout": <seconds>, "httpIdleTimeout": <seconds>, "httpsReadTimeout": <seconds>, "httpsWriteTimeout": <seconds>, "httpsIdleTimeout": <seconds>, "httpsRedirect": <true|false>, "customEntryPoints": {"<name>": {"port": <port>, "protocol": "<TCP|UDP>", "readTimeout": <seconds|0>, "writeTimeout": <seconds|0>, "idleTimeout": <seconds|0>, "udpTimeout": <seconds>}}, "tolerations": [{"key":"<key>","operator":"<Equal|Exists>","value":"<value>","effect":"<NoSchedule|PreferNoSchedule|NoExecute>"}]}'replicas- Por padrão, cada ALB possui duas réplicas. Aumente as capacidades de processamento de ALB, aumentando o número de pods de ALB. Para obter mais informações, consulte Aumentando o número de réplicas do pod do ALB.
ingressClass- Se você especificou uma classe diferente de
public-iks-traefikouprivate-iks-traefikno seu recurso Ingress, insira o nome da classe aqui. httpPort,httpsPort-
- Exponha portas não padrão para o ALB do Ingress incluindo as portas HTTP ou HTTPS que você deseja abrir.
- Valores padrão: 80/443.
logLevel-
- Especifique o nível de registro. Escolha entre:
TRACE,DEBUG,INFO,WARN,ERROR,FATAL,PANIC. - Padrão:
INFO.
- Especifique o nível de registro. Escolha entre:
ingressProvider-
- Especifique qual provedor do Traefik Ingress deve ser usado para este ALB. Valores válidos:
ingress: Utiliza o controlador de entrada do próprio Traefik. Ele processa anotações específicas do Traefik nos recursos do Ingress.ingress-nginx: Utiliza um arquivo temporário camada de compatibilidade para o Ingress —NGINX no Traefik. Ele processa anotações criadas para o Ingress — NGINX — e imita o comportamento do Ingress — NGINX — sempre que possível. Use esse valor para facilitar a migração do Ingress ( NGINX ) para o Traefik.- Padrão:
ingress.
processTraefikCRDs-
- Quando configurado como “
true”, o Traefik processa seus próprios recursos CRD, além dos recursos do Ingress. Os CRDs compatíveis incluemIngressRoute,MiddlewareeTLSOption. Para ver a lista completa, consulte a documentação do Traefik sobre CRDs. - Padrão:
true.
- Quando configurado como “
traefikIngressNginxAllowExternalNameServices-
- Habilita o suporte aos serviços do ExternalName para objetos do Ingress que são processados pelo provedor
ingress-nginx. Essa opção se aplica apenas quando a opção “ingressProvider” está definida como “ingress-nginx”. - Padrão:
true.
- Habilita o suporte aos serviços do ExternalName para objetos do Ingress que são processados pelo provedor
traefikCRDAllowCrossNamespace-
- Permite que os recursos do IngressRoute (CRD do Traefik) façam referência a recursos em outros namespaces.
- Padrão:
false.
traefikCRDAllowExternalNameServices-
- Permite que os recursos do IngressRoute (CRD do Traefik) façam referência aos serviços do ExternalName.
- Padrão:
false.
httpReadTimeout,httpsReadTimeout-
- Configura o tempo limite de leitura de HTTP / HTTPS entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; definir esse valor como zero desativa o tempo limite.
- Para obter mais informações, consulte a documentação do Traefik.
httpWriteTimeout,httpsWriteTimeout-
- Configura o tempo limite de gravação HTTP / HTTPS entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; definir esse valor como zero desativa o tempo limite.
- Para obter mais informações, consulte a documentação do Traefik.
httpIdleTimeout,httpsIdleTimeout-
- Configura o tempo limite de inatividade (keepalive) HTTP / HTTPS entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; definir esse valor como zero desativa o tempo limite.
- Para obter mais informações, consulte a documentação do Traefik.
- Se você utilizar o IBM Cloud Internet Services (CIS) ou o Cloudflare com o Web Application Firewall (WAF) ou o balanceamento de carga global, configure esse valor para mais de 900 segundos. Para obter mais informações, consulte “ Ajustando os tempos limite ”.
httpsRedirect-
- Ativa um redirecionamento permanente de todas as solicitações recebidas em HTTP para o endpoint HTTPS.
- Padrão:
false.
customEntryPoints-
- Especifica pontos de entrada personalizados adicionais para o Traefik. O nome do ponto de entrada será a chave do objeto. Os seguintes nomes de pontos de entrada estão reservados e não podem ser utilizados:
web,websecure,traefik,hc,httpehttps. - Caso a configuração do ponto de entrada esteja inválida, nenhum dos pontos de entrada personalizados será processado!
- Especifica pontos de entrada personalizados adicionais para o Traefik. O nome do ponto de entrada será a chave do objeto. Os seguintes nomes de pontos de entrada estão reservados e não podem ser utilizados:
customEntryPoints.<name>.port-
- Porta do ponto de entrada a ser utilizada. Este campo é obrigatório. Certifique-se de que não haja conflito com outras portas.
- A porta e o protocolo definidos aqui devem ser configurados manualmente no Balanceador de Carga; veja abaixo as instruções.
customEntryPoints.<name>.protocol- Protocolo do ponto de entrada a ser utilizado. Este campo é obrigatório. Os valores válidos são
TCPeUDP. customEntryPoints.<name>.readTimeout-
- Configura o tempo limite de leitura do ponto de entrada, entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; ao defini-lo como zero, o tempo limite é desativado.
- Para obter mais informações, consulte a documentação do Traefik.
customEntryPoints.<name>.writeTimeout-
- Configura o tempo limite de gravação do ponto de entrada entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; ao defini-lo como zero, o tempo limite é desativado.
- Para obter mais informações, consulte a documentação do Traefik.
customEntryPoints.<name>.idleTimeout-
- Configura o tempo limite de inatividade (keepalive) do ponto de entrada entre o ALB e o cliente. O valor deve ser um número inteiro de segundos; ao defini-lo como zero, o tempo limite é desativado.
- Para obter mais informações, consulte a documentação do Traefik.
customEntryPoints.<name>.udpTimeout-
- Configura o tempo limite de inatividade do ponto de entrada para o ouvinte UDP. Este campo só é considerado para endpoints que utilizam o protocolo UDP. O valor deve ser um número inteiro de segundos e maior que zero.
- Para obter mais informações, consulte a documentação do Traefik.
tolerations- Especifica tolerâncias personalizadas adicionais para os pods do ALB. Para obter mais informações, consulte “Contaminações e Tolerâncias ”.
-
Crie o configmap
ibm-ingress-deploy-configem seu cluster.kubectl create -f ibm-ingress-deploy-config.yaml -
Atualize seus ALBs para aplicar as alterações. As alterações podem levar até cinco minutos para entrarem em vigor. Se o comando for executado sem exibir nenhuma saída, a atualização foi enviada com sucesso.
ibmcloud ks ingress alb update -c CLUSTER_NAME_OR_ID -
Se você tiver especificado endereços HTTP e HTTPS fora do padrão ou portas, ou se tiver criado pontos de entrada adicionais, será necessário abrir as portas em cada serviço ALB.
- Para cada serviço do ALB que você localizou na etapa 1, edite o arquivo YAML.
kubectl edit svc -n kube-system <alb_svc_name> ``` 2. Na seção `spec.ports`, inclua as portas que você deseja abrir. Por padrão, as portas 80 e 443 ficam abertas. Para manter a 80 e a 443 abertas, não as remova deste arquivo. Qualquer porta que não esteja especificada é encerrada. Não especifique um `nodePort`. Depois de incluir a porta e aplicar as mudanças, um `nodePort` é designado automaticamente. ```sh {: codeblock} ... ports: - name: port-80 port: 80 protocol: TCP targetPort: 80 - name: port-443 port: 443 protocol: TCP targetPort: 443 - name: <new_port> port: <port> protocol: TCP targetPort: <port> ... ``` 3. Salve e feche o arquivo. As suas mudanças são aplicadas automaticamente.
Customizando a classe do Ingress
Uma classe do Ingress associa um nome de classe a um tipo de controlador do Ingress, permitindo que vários controladores coexistam no mesmo cluster. Use o IngressClass recurso para definir uma classe personalizada para seus ALBs.
O Traefik processa apenas as classes de Ingress nas quais .spec.controller está definido como traefik.io/ingress-controller``.
Incluindo a autenticação do App ID em apps
Proteja seus aplicativos contra acessos não autenticados integrando IBM Cloud App ID ao seu Ingress ALB. Quando a autenticação está configurada, o ALB encaminha as solicitações por meio de um servidor de autenticação ( OAuth2-Proxy ), que valida as credenciais com o servidor de autenticação ( App ID ) antes de encaminhar o tráfego para o seu aplicativo.
-
Escolha uma instância do App ID existente ou crie uma nova.
Uma instância do App ID pode ser usada em apenas um namespace em seu cluster. Para configurar o App ID para recursos do Ingress em diversos namespaces, repita as etapas nesta seção para especificar uma instância exclusiva do App ID para os recursos do Ingress em cada namespace.
- Para usar uma instância existente, certifique-se de que o nome da instância do serviço contenha apenas caracteres alfanuméricos em letras minúsculas e que seu comprimento não exceda 25 caracteres. Para mudar o nome, selecione Renomear serviço no menu de mais opções na página de detalhes da instância de serviço.
- Para provisionar uma nova instância do App ID:
- Substitua o Nome do serviço pelo seu próprio nome exclusivo para a instância de serviço. O nome da instância do serviço deve conter apenas caracteres alfanuméricos em letras minúsculas e não pode ter mais de 25 caracteres.
- Escolha a mesma região na qual seu cluster está implementado.
- Clique em Criar.
-
Inclua URLs de redirecionamento para seu app. Uma URL de redirecionamento é o terminal de retorno de chamada de seu app. Para evitar ataques de phishing, o IBM Cloud App ID valida a URL de solicitação com relação à lista de permissões de URLs de redirecionamento.
- No console de gerenciamento do App ID, navegue para Gerenciar autenticação.
- Na guia Provedores de identidade, certifique-se de que você tenha um Provedor de identidade selecionado. Se nenhum provedor de identidade for selecionado, você não será autenticado, mas receberá um token de acesso para acessar o aplicativo de forma anônima.
- Na guia Configurações de autenticação, inclua URLs de redirecionamento para o app no formato
https://<hostname>/oauth2-<App_ID_service_instance_name>/callback. Todas as letras no nome da instância do serviço devem estar em minúsculas.
Se você utilizar a função de logout do IBM Cloud App ID, acrescente
/sign_outao seu domínio no formatohttps://<hostname>/oauth2-<App_ID_service_instance_name>/sign_oute inclua este endereço URL na lista de URLs de redirecionamento. Para usar uma página personalizada de logout, definawhitelist_domainsna seçãoOAuth2-ProxyConfigMap. Chame o endpointhttps://<hostname>/oauth2-<App_ID_service_instance_name>/sign_outcom o parâmetro de consultardou defina o cabeçalhoX-Auth-Request-Redirectcom o URL da sua página de logout personalizada URL. Para obter mais informações, consulte “Sair ”. -
Ligue a instância de serviço do App ID ao seu cluster. O comando cria uma chave de serviço para a instância do serviço; alternativamente, você pode incluir a opção
--keypara usar as credenciais da chave de serviço já existentes. Vincule a instância do serviço ao mesmo namespace em que estão seus recursos do Ingress. Todas as letras no nome da instância do serviço devem estar em minúsculas.ibmcloud ks cluster service bind --cluster CLUSTER_NAME_OR_ID --namespace NAMESPACE --service APP_ID_SERVICE_INSTANCE_NAME [--key SERVICE_INSTANCE_KEY]Quando o serviço for vinculado com sucesso ao seu cluster, será criado um segredo do cluster que contém as credenciais da instância do seu serviço. O exemplo a seguir mostra a saída:
ibmcloud ks cluster service bind --cluster mycluster --namespace mynamespace --service appid1 Binding service instance to namespace... OK Namespace: mynamespace Secret name: binding-<service_instance_name> -
Ative o complemento ALB OAuth Proxy em seu cluster. Este complemento cria e gerencia os seguintes recursos do Kubernetes: uma implantação do OAuth2-Proxy para sua instância do serviço App ID, um segredo que contém a configuração do OAuth2-Proxy e um recurso Ingress que encaminha as solicitações recebidas para a implantação do OAuth2-Proxy. O nome de cada recurso começa com
oauth2-.- Ative o complemento
alb-oauth-proxy.
ibmcloud ks cluster addon enable alb-oauth-proxy --cluster CLUSTER_NAME_OR_ID ``` 2. Verifique se o complemento ALB OAuth Proxy tem um status de `Addon Ready`. Aguarde alguns minutos e execute o comando novamente se o status for “ `Enabling` ”. ```sh {: pre} ibmcloud ks cluster addon ls --cluster CLUSTER_NAME_OR_ID ``` - Ative o complemento
-
Nos recursos do Ingress para aplicativos nos quais você deseja adicionar uma autenticaçã App ID, certifique-se de que o nome do recurso não exceda 25 caracteres. Em seguida, configure o middleware “ ForwardAuth ”:
- Crie um recurso “ ForwardAuth Middleware ” no Traefik. O arquivo
addressespecifica oURLdoOAuth2-Proxypara sua instância doApp ID, que atua como a Parte Confiável (RP) do OIDC. Todas as letras no nome da instância do serviço devem estar em minúsculas.
apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: oauth-verify namespace: default spec: forwardAuth: address: "https://oauth2-<App_ID_service_instance_name>.<namespace_of_Ingress_resource>.svc.cluster.local/oauth2-<App_ID_service_instance_name>/auth" tls: insecureSkipVerify: true ``` Por padrão, o Traefik valida nomes alternativos de sujeito (SANs) de IP do tipo TLS. IBM- Espera-se que os certificados fornecidos não sejam aprovados nessa validação; portanto, use a opção “ `insecureSkipVerify: true` ”. Essa configuração garante que a instância do Traefik, ou ALB, possa se comunicar com as instâncias de implantação do `oauth2-proxy`. {: note} 2. Escolha quais tokens enviar no cabeçalho `Authorization` para o seu app. Para obter mais informações sobre ID e tokens de acesso, consulte a [Documentação do App ID](/docs/appid?topic=appid-tokens). * Para enviar apenas o ` `ID Token``, adicione a opção ` `authResponseHeaders` ` ao seu middleware ` ForwardAuth `: ```yaml {: codeblock} apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: oauth-verify namespace: default spec: forwardAuth: address: "https://oauth2-<App_ID_service_instance_name>.<namespace_of_Ingress_resource>.svc.cluster.local/oauth2-<App_ID_service_instance_name>/auth" authResponseHeaders: - Authorization tls: insecureSkipVerify: true ``` * Para enviar apenas o ` `Access Token``, adicione a opção ` `authResponseHeaders` ` ao seu middleware ` ForwardAuth `: ```yaml {: codeblock} apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: oauth-verify namespace: default spec: forwardAuth: address: "https://oauth2-<App_ID_service_instance_name>.<namespace_of_Ingress_resource>.svc.cluster.local/oauth2-<App_ID_service_instance_name>/auth" authResponseHeaders: - X-Auth-Request-Access-Token tls: insecureSkipVerify: true ``` * Para enviar tanto o ` `Access Token` ` quanto o ` `ID Token``, adicione a opção ` `authResponseHeaders` ` ao seu middleware ` ForwardAuth `: ```yaml {: codeblock} apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: oauth-verify namespace: default spec: forwardAuth: address: "https://oauth2-<App_ID_service_instance_name>.<namespace_of_Ingress_resource>.svc.cluster.local/oauth2-<App_ID_service_instance_name>/auth" authResponseHeaders: - X-Auth-Request-Access-Token - Authorization tls: insecureSkipVerify: true ``` 3. Opcional: Se seu aplicativo for compatível com a [estratégia de aplicativo web](/docs/appid?topic=appid-key-concepts#term-web-strategy), além da [estratégia de API](/docs/appid?topic=appid-key-concepts#term-api-strategy) ou em vez dela, adicione o `authSigninURL` ao seu middleware ForwardAuth. Todas as letras no nome da instância do serviço devem estar em minúsculas. ```yaml {: codeblock} apiVersion: traefik.io/v1alpha1 kind: Middleware metadata: name: oauth-verify namespace: default spec: forwardAuth: address: "https://oauth2-<App_ID_service_instance_name>.<namespace_of_Ingress_resource>.svc.cluster.local/oauth2-<App_ID_service_instance_name>/auth" authResponseHeaders: - X-Auth-Request-Access-Token - Authorization authSigninURL: /oauth2-<App_ID_service_instance_name>/sign_in?rd={url} tls: insecureSkipVerify: true ``` * Se você especificar `authSigninURL` e a autenticação do cliente falhar, o cliente será redirecionado para OAuth2-Proxy, que, por sua vez, redirecionará o cliente para a página de login App ID. * Se você não especificar ` `authSigninURL``, o cliente deverá se autenticar com um token de portador válido. Se a autenticação falhar, a solicitação será rejeitada com o erro “ `401 Unauthorized` ”. - Crie um recurso “ ForwardAuth Middleware ” no Traefik. O arquivo
-
Opcional: Se a sua configuração exigir, crie um recurso do Traefik ServersTransport para ignorar a verificação d TLS para solicitações encaminhadas ao recurso Service do seu aplicativo.
# Example (Kubernetes ServersTransport) apiVersion: traefik.io/v1alpha1 kind: ServersTransport metadata: name: skip-tls-verify spec: insecureSkipVerify: trueAplique a política de segurança “
ServersTransport” ao seu recurso de serviço usando a anotação “Traefik Service”. -
Edite seus recursos do Ingress para exigir a autenticação do tipo “ App ID ”, aplicando o middleware “ ForwardAuth ” que você criou. Use a seguinte anotação do Traefik Ingress.
traefik.ingress.kubernetes.io/router.middlewares: "default-oauth-verify@kubernetescrd"Depois que um recurso Ingress com as anotações apropriadas é reaplicado, o complemento ALB OAuth Proxy implanta uma implantação do
oauth2-proxy, cria um serviço para a implantação e cria um recurso Ingress separado para configurar o roteamento para a implantação dooauth2-proxy. Não exclua esses recursos de complemento. -
Verifique se a autenticação do App ID é imposta para seus apps.
- Se o seu aplicativo for compatível com a estratégia de aplicativos da Web: acesse URL do seu aplicativo em um navegador da Web. Se o App ID estiver corretamente aplicado, você será redirecionado para uma página de login de autenticação do App ID.
- Se seu aplicativo for compatível com a estratégia de API: especifique seu token de acesso
Bearerno cabeçalho “Authorization” das solicitações enviadas aos aplicativos. Para obter seu token de acesso, consulte a documentação do App ID. Se o App ID for aplicado corretamente, a solicitação será autenticada com sucesso e será roteada para o seu app. Se você enviar solicitações aos seus aplicativos sem um token de acesso no cabeçalho “Authorization”, ou se o token de acesso não for aceito por App ID, a solicitação será rejeitada.
-
Opcional: Se você utilizar políticas de rede ou outra solução de firewall no seu cluster para limitar o tráfego de saída, certifique-se de que o cluster possa acessar o serviço público App ID. Para obter o intervalo de endereços IP desse serviço, envie uma solicitação ao suporte ao cliente.
-
Opcional: é possível customizar o comportamento padrão do OAuth2-Proxy criando um ConfigMap do Kubernetes.
- Crie um arquivo YAML do ConfigMap que especifique valores para as configurações de OAuth2-Proxy que você deseja mudar.
apiVersion: v1 kind: ConfigMap metadata: name: oauth2-<App_ID_service_instance_name> namespace: <ingress_resource_namespace> data: auth_logging: <true|false> # Log all authentication attempts. auth_logging_format: # Format for authentication logs. For more info, see https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#logging-configuration cookie_csrf_expire: "15m" # Expiration time for CSRF cookie. Default is "15m". cookie_csrf_per_request: <true|false> # Enable multiple CSRF cookies per request, making it possible to have parallel requests. Default is "false". cookie_domains: # A list of optional domains to force cookies to. The longest domain that matches the request’s host is used. If there is no match for the request’s host, the shortest domain is used. Example: sub.domain.com,example.com cookie_expire: "168h0m0s" # Expiration time for cookies. Default: "168h0m0s". cookie_samesite: "" # SameSite attribute for cookies. Supported values: "lax", "strict", "none", or "". email_domains: "" # Authenticate IDs that use the specified email domain. To authenticate IDs that use any email domain, use "*". Default: "". Example: example.com,example2.com pass_access_token: <true|false> # Pass the OAuth access token to the back-end app via the X-Forwarded-Access-Token header. request_logging: <true|false> # Log all requests to the back-end app. request_logging_format: # Format for request logs. For more info, see https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#request-log-format scope: # Scope of the OAuth authentication. For more info, see https://oauth.net/2/scope/ set_authorization_header: <true|false> # Set the Authorization Bearer response header when the app responds to the Ingress ALB, such as when using the Traefik ForwardAuth Middleware. set_xauthrequest: <true|false> # Set X-Auth-Request-User, X-Auth-Request-Email, and X-Auth-Request-Preferred-Username response headers when the app responds to the Ingress ALB, such as when using the Traefik ForwardAuth Middleware. standard_logging: <true|false> # Log standard runtime information. standard_logging_format: # Format for standard logs. For more info, see https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#standard-log-format tls_secret_name: # The name of a secret that contains the server-side TLS certificate and key to enable TLS between the OAuth2-Proxy and the Ingress ALB. By default, the TLS secret defined in your Ingress resources is used. whitelist_domains: # Allowed domains for redirection after authentication. Default: "". Example: example.com,*.example2.com For more info, see: https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#command-line-options oidc_extra_audiences: # Additional audiences which are allowed to pass verification. cookie_refresh: # Refresh the cookie after this duration. Example: "15m". To use this feature, you must enable "Refresh token" for the AppID instance. For more info, see: /docs/appid?topic=appid-managing-idp&interface=ui#idp-token-lifetime ``` 2. Aplique o recurso ConfigMap em seu complemento. As suas mudanças são aplicadas automaticamente. ```sh {: pre} kubectl apply -f oauth2-<App_ID_service_instance_name>.yaml ```
Para obter a lista de alterações de cada versão do complemento ALB OAuth Proxy, consulte o registro de alterações do complemento ALB OAuth Proxy em IBM Cloud.
Atualização do complemento de proxy “ OAuth ” do ALB
Para atualizar o complemento ALB OAuth Proxy para uma versão mais recente, desative a instalação atual e reative-a com a versão desejada. Suas instâncias existentes do oauth2-proxy não serão interrompidas durante a atualização.
O processo de atualização não causa interrupções, pois as instâncias supervisionadas do oauth2-proxy permanecem no cluster mesmo quando o complemento está desativado.
- Desative o complemento .
ibmcloud ks cluster addon disable alb-oauth-proxy --cluster CLUSTER_NAME_OR_ID - Liste as versões disponíveis do complemento e anote a versão que você deseja usar. A saída mostra as versões disponíveis e qual delas é a padrão.
ibmcloud ks cluster addon versions --addon alb-oauth-proxy - Ative o complemento e especifique a opção
--version. Se você não especificar uma versão, a versão padrão será ativada.ibmcloud ks cluster addon enable alb-oauth-proxy --cluster CLUSTER_NAME_OR_ID [--version VERSION]
Preservando o endereço IP de origem
Por padrão, o ALB do Ingress não mantém o endereço IP de origem original das solicitações dos clientes. Isso pode impedir que o controle de acesso baseado em IP, o registro de atividades e as políticas de segurança funcionem corretamente. Escolha o método adequado ao seu tipo de cluster para habilitar a preservação do IP de origem.
Ativando o protocolo PROXY em clusters VPC
O protocolo PROXY transmite o endereço IP original do cliente, passando pela camada do balanceador de carga, até o ALB.
A ativação do protocolo PROXY recria seus balanceadores de carga, o que pode causar uma breve interrupção no serviço. É necessário que haja dois endereços IP não utilizados por balanceador de carga disponíveis em cada sub-rede durante a recriação.
-
Ative o protocolo PROXY. Para obter mais informações sobre os parâmetros do comando, consulte a referência da CLI.
ibmcloud ks ingress lb proxy-protocol enable --cluster CLUSTER_NAME_OR_ID --cidr SUBNET_CIDR -
Confirme se o protocolo PROXY está ativado para os balanceadores de carga que expõem ALBs em seu cluster. Na saída, verifique se o campo “
Proxy Protocol” exibe “Enabled”.ibmcloud ks ingress lb get --cluster CLUSTER_NAME_OR_ID -
Para desativar o protocolo PROXY posteriormente, execute o seguinte comando:
ibmcloud ks ingress lb proxy-protocol disable --cluster CLUSTER_NAME_OR_ID
Mudando a externalTrafficPolicy em clusters clássicos
Em clusters clássicos, defina externalTrafficPolicy como Local no serviço do balanceador de carga que expõe o ALB. Isso impede que o balanceador de carga substitua o endereço IP de origem
do cliente pelo endereço IP do nó de trabalho ao encaminhar o tráfego.
Por padrão, o endereço IP de origem da solicitação do cliente não é preservado. Quando uma solicitação de cliente chega ao seu cluster, ela é encaminhada para um pod do serviço de balanceador de carga que expõe o ALB. Se nenhum pod de app existir no mesmo nó do trabalhador que o pod de serviço de balanceador de carga, o balanceador de carga encaminhará a solicitação para um pod de app em um nó do trabalhador diferente. O nó de trabalho no qual o pod do aplicativo é executado altera o endereço IP de origem do pacote para o seu endereço IP público.
Para preservar o endereço IP de origem original da solicitação do cliente, é possível ativar a preservação de IP de origem. Preservar o IP do cliente é útil, por exemplo, quando os servidores de aplicativos precisam aplicar políticas de segurança e controle de acesso.
Quando a preservação do IP de origem está ativada, os balanceadores de carga passam de encaminhar o tráfego para um pod do ALB em um nó de trabalho diferente para um pod do ALB no mesmo nó de trabalho. Seus apps podem experienciar um tempo de inatividade durante esta mudança. Se você desativar um ALB, perderá todas as alterações no IP de origem que tiver feito no serviço de balanceador de carga que expõe o ALB. Quando você reativa o ALB, deve-se ativar o IP de origem novamente.
Em clusters clássicos, aumentar o número de réplicas do ALB para mais de duas aumenta o número de réplicas; porém, quando a opção “ externalTrafficPolicy ” é definida como “ Local ”, quaisquer réplicas além da segunda não são utilizadas. Há apenas dois pods de balanceador de carga no cluster, em uma configuração ativa-passiva, e, devido a essa política de tráfego, eles encaminham
o tráfego recebido apenas para o pod do ALB no mesmo nó.
Para ativar a preservação de IP de origem, edite o serviço de balanceador de carga que expõe um ALB do Ingress:
-
Ative a preservação de IP de origem para um único ALB ou para todos os ALBs em seu cluster.
- Para configurar a preservação de IP de origem para um único ALB:
-
Obtenha o ID do ALB para o qual você deseja ativar o IP de origem. Os serviços ALB têm um formato semelhante a
public-cr18e61e63c6e94b658596ca93d087eed9-alb1para um ALB público ouprivate-cr18e61e63c6e94b658596ca93d087eed9-alb1para um ALB privado.kubectl get svc -n kube-system | grep alb -
Abra o YAML para o serviço de balanceador de carga que expõe o ALB.
kubectl edit svc <ALB_ID> -n kube-system -
Em
spec, altere o valor de “externalTrafficPolicy” deClusterparaLocal. -
Salve e feche o arquivo de configuração. A saída é semelhante à seguinte:
service "public-cr18e61e63c6e94b658596ca93d087eed9-alb1" edited
-
- Para configurar a preservação de IP de origem para todos os ALBs públicos em seu cluster, execute o comando a seguir:
kubectl get svc -n kube-system | grep alb | awk '{print $1}' | grep "^public" | while read alb; do kubectl patch svc $alb -n kube-system -p '{"spec":{"externalTrafficPolicy":"Local"}}'; done ``` Saída de exemplo: ```sh {: screen} "public-cr18e61e63c6e94b658596ca93d087eed9-alb1", "public-cr17e61e63c6e94b658596ca92d087eed9-alb2" patched ``` * Para configurar a preservação de IP de origem para todos os ALBs privados em seu cluster, execute o comando a seguir: ```sh {: pre} kubectl get svc -n kube-system | grep alb | awk '{print $1}' | grep "^private" | while read alb; do kubectl patch svc $alb -n kube-system -p '{"spec":{"externalTrafficPolicy":"Local"}}'; done ``` Saída de exemplo: ```sh {: screen} "private-cr18e61e63c6e94b658596ca93d087eed9-alb1", "private-cr17e61e63c6e94b658596ca92d087eed9-alb2" patched ``` - Para configurar a preservação de IP de origem para um único ALB:
-
Verifique se o endereço IP de origem está registrado nos logs do seu pod ALB.
- Obtenha o nome de um pod do ALB que você modificou. Procure um nome de pod que comece com o ID do ALB que você modificou, como
public-cr<hash>-alb1-<suffix>.
kubectl get pods -n kube-system | grep alb ``` 2. Abra os logs para esse pod do ALB. Verifique se o endereço IP do campo “ `client` ” é o endereço IP da solicitação original do cliente e não o endereço IP do serviço do balanceador de carga. ```sh {: pre} kubectl logs <ALB_pod_ID> traefik -n kube-system ``` - Obtenha o nome de um pod do ALB que você modificou. Procure um nome de pod que comece com o ID do ALB que você modificou, como
-
Verifique se o endereço IP do cliente aparece no cabeçalho
x-forwarded-fordas solicitações enviadas ao seu aplicativo back-end. Você pode verificar isso consultando os logs do seu aplicativo ou analisando os cabeçalhos das solicitações recebidas no seu aplicativo. -
Opcional: Se você não quiser mais manter o IP de origem, reverta as alterações feitas no serviço.
- Para reverter a preservação do IP de origem para seus ALBs públicos:
kubectl get svc -n kube-system | grep alb | awk '{print $1}' | grep "^public" | while read alb; do kubectl patch svc $alb -n kube-system -p '{"spec":{"externalTrafficPolicy":"Cluster"}}'; done ``` * Para reverter a preservação do IP de origem para seus ALBs privados: ```sh {: pre} kubectl get svc -n kube-system | grep alb | awk '{print $1}' | grep "^private" | while read alb; do kubectl patch svc $alb -n kube-system -p '{"spec":{"externalTrafficPolicy":"Cluster"}}'; done ```
Configurando protocolos e algoritmos de criptografi TLS
Use um recurso TLSOption para impor versões mínimas do TLS, restringir conjuntos de criptografia e configurar
outros parâmetros de conexão do TLS para o tráfego que chega ao seu ALB. Depois de criar o recurso TLSOption, aplique-o ao seu recurso Ingress usando a anotação Traefik Ingress.
Enviando seu certificado customizado para clientes anteriores
Dispositivos mais antigos que não suportam a Indicação de Nome do Servidor (SNI) não conseguem negociar qual certificado do TLS deve ser usado; por isso, recebem o certificado padrão do Let's Encrypt do ALB, em vez do seu certificado personalizado. Para garantir que esses dispositivos recebam seu certificado personalizado, atualize as configurações padrão do servidor do ALB para que apontem para seu segredo personalizado do TLS.
Os certificados Let's Encrypt gerados por padrão não são destinados ao uso de produção. Para as cargas de trabalho de produção, traga o seu próprio certificado customizado.
Ao criar um cluster clássico, o IBM fornece um certificado Let's Encrypt para o segredo padrão do Ingress. Se você criar um segredo personalizado e especificá-lo para a terminação d TLS e em seus recursos do Ingress, o ALB enviará seu certificado personalizado aos clientes, em vez do certificado do Let's Encrypt. No entanto, se um cliente não for compatível com SNI, o ALB utiliza por padrão o certificado da Let's Encrypt, pois o segredo padrão está listado nas configurações padrão do servidor do ALB. Para enviar seu certificado personalizado para dispositivos que não suportam SNI, siga as etapas a seguir.
-
Edite o recurso do Ingress
alb-default-server.kubectl edit ingress alb-default-server -n kube-system -
Na seção
spec.tls, mude o valor da configuraçãohosts.secretNamepara o nome de seu segredo customizado que contenha seu certificado customizado.spec: rules: ... tls: - hosts: - invalid.mycluster-<hash>-0000.us-south.containers.appdomain.cloud secretName: <custom_secret_name> -
Salve o arquivo de recursos.
-
Verifique se o recurso agora aponta para o nome do segredo customizado. As mudanças são aplicadas a seus ALBs automaticamente. Na saída, verifique se “
spec.tls[].secretName” corresponde ao nome do seu segredo personalizado.kubectl get ingress alb-default-server -n kube-system -o yaml
Ajustando o desempenho do ALB
Os nós de trabalho são provisionados automaticamente com um ajuste otimizado do kernel, adequado à maioria das cargas de trabalho. Se o seu cluster tiver requisitos específicos de alto rendimento ou baixa latência, você pode ajustar os parâmetros do kernel Linux sysctl nos nós de trabalho para otimizar ainda mais o desempenho do ALB. Altere essas configurações somente quando houver uma necessidade clara de otimização de desempenho, pois valores incorretos podem desestabilizar o nó.
Próximas etapas
- Gerencie seus ALBs do Ingress para dimensionar, atualizar ou desativar os ALBs em seu cluster.
- Configure o Ingress para expor seus aplicativos usando o serviço gerenciado do Ingress.
- Utilize o Debug Ingress para diagnosticar e resolver problemas comuns do Ingress.