Configurando o Ingress
Crie um recurso Ingress para configurar seus componentes do Ingress, definir regras para o roteamento de solicitações e especificar o caminho para os serviços do seu aplicativo. É necessário um recurso Ingress separado para cada namespace que contenha um aplicativo ou serviço que você deseja expor.
Antes de Iniciar
Siga estas etapas de preparação antes de começar.
-
Certifique-se de que possui as permissões corretas para configurar o Ingress. São necessários os seguintes IBM Cloud Funções do IAM:
- Função de acesso de plataforma Administrador para o cluster
- Função de acesso de serviço Gerenciador em todos os namespaces
-
Decida se deseja usar o subdomínio do Ingress fornecido pelo IBM. Se você não quiser usar o subdomínio fornecido, deverá criar e registrar seu próprio domínio personalizado.
Um domínio personalizado ou a configuração manual de domínios fornecidos pelo IBM, necessários para disponibilizar aplicativos por meio de ALBs privadas.
-
Certifique-se de que o ALB que você vai usar esteja na versão esperada. Execute o comando
ibmcloud ks ingress alb versionspara listar as versões atualmente compatíveis e compare-o com a saída deibmcloud ks ingress alb ls --cluster CLUSTER``. Se você estiver seguindo esta documentação, espera-se que execute um Ingress baseado no Traefik; para orientações específicas sobre o Ingress- NGINX, consulte a documentação correspondente. -
Se você estiver disponibilizando aplicativos por meio de ALBs privadas, é necessário habilitar cada ALB privada na CLI. Para obter o ID do ALB, execute o comando
ibmcloud ks ingress alb ls --cluster CLUSTER``.
Clusters clássicos Para obter mais informações e opções de comando, consulte areferência da CLI.
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --cluster CLUSTER_NAME
Clusters VPC Para obter mais informações e opções de comando, consulte areferência da CLI.
sh {: pre} ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --cluster CLUSTER_NAME
-
Certifique-se de que seu cluster inclua pelo menos dois nós de trabalho por zona para garantir alta disponibilidade e aplicar atualizações periódicas. Se uma zona tiver apenas um nó de trabalho, o ALB não poderá receber atualizações automáticas. Para obter mais informações, consulte os requisitos dos nós de trabalho para ALBs.
-
Se você estiver usando um cluster clássico, habilite uma Função de Roteador Virtual(VRF) para sua conta da infraestrutura do IBM Cloud.
- Para ativar o VRF, consulte Ativando o VRF.
- Para verificar se um VRF já está ativado, use o comando
ibmcloud account show. - Se você não puder ou não quiser habilitar o VRF, habilite o spanning de VLAN. Quando um VRF ou um VLAN Spanning é ativado, o ALB pode rotear pacotes para diversas sub-redes na conta.
-
Para clusters de VPC, certifique-se de que seus grupos de segurança da VPC permitam que as portas dos nós recebam solicitações de tráfego roteadas pelo Ingress. Para obter mais informações, consulte “Noções básicas sobre a rede VPC de clusters com configuração ‘Seguro por padrão ’”.
-
Note que se criar e excluir um cluster com o mesmo nome ou similar 5 vezes ou mais dentro de 7 dias, como para propósitos de automação ou teste, você poderá atingir o limite de taxa de certificado duplicado da Let's EncryptL. Para assegurar que o subdomínio do Ingress e o certificado estejam corretamente registrados, os primeiros 24 caracteres dos nomes dos clusters deverão ser diferentes.
-
Se você restringir o tráfego de rede a nós de trabalhadores de borda, assegure-se de que pelo menos dois nós do trabalhador de borda estejam ativados em cada zona para que os ALBs sejam implementados uniformemente.
Se uma zona falhar, será possível ver falhas intermitentes em solicitações para o ALB do Ingress nessa zona.
Etapas de Configuração
Siga as etapas para configurar o Ingress.
Etapa 1: Criar um serviço “ ClusterIP ”
Para cada implementação de app que você deseja expor, crie um serviço ClusterIP do Kubernetes. O seu app deve ser exposto por um serviço do Kubernetes a ser incluído no balanceamento de carga do Ingress.
kubectl expose deploy <app_deployment_name> --name my-app-svc --port <app_port> -n <namespace>
Etapa 2: Configurar uma terminaçã TLS e com certificados TLS e segredos Kubernetes
Seu certificado do TLS deve ser armazenado como um segredo do Kubernetes em cada namespace onde seus aplicativos estejam hospedados.
-
Para usar o subdomínio do Ingress fornecido pelo IBM, consulte a seção “Configurando segredos do TLS para o subdomínio do Ingress fornecido pelo IBM ”.
-
Para usar um domínio personalizado, consulte Configurando segredos d TLS s para subdomínios personalizados.
Etapa 3: Criar o recurso de Ingresso
Crie o recurso do Ingress para definir as regras de roteamento que o controlador do Ingress usa para rotear o tráfego para o serviço de app.
-
Crie o recurso Ingress em um arquivo YAML.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress-resource spec: ingressClassName: public-iks-traefik tls: - hosts: - <domain_name> secretName: <tls_secret_name> rules: - host: HOSTNAME http: paths: - path: <app_path_1> pathType: Prefix backend: service: name: <app_service_1> port: number: 80 - path: <app_path_2> pathType: Prefix backend: service: name: <app_service_2> port: number: 80
Campos de recursos
ingressClassName- O nome da classe Ingress. As classes de Ingress fornecidas pelo IBM são
public-iks-traefikpara ALBs públicas eprivate-iks-traefikpara ALBs privadas. tls.hosts- Para usar o TLS, substitua
<domain>pelo subdomínio do Ingress fornecido pela IBM ou o domínio customizado. tls.secretName- Substitua
<tls_secret_name>pelo nome do segredo Kubernetes onde seu certificado TLS está armazenado. host- Substitua
<domain>pelo subdomínio do Ingress fornecido pela IBM ou o domínio customizado. path- Substitua
<app_path>por uma barra ou pelo caminho no qual o app está atendendo. O caminho é anexado ao domínio do Ingress especificado para criar uma rota exclusiva para o seu aplicativo. Quando você insere essa rota em um navegador da web, o tráfego de rede é roteado para o ALB. O ALB consulta o serviço associado e envia o tráfego de rede para o serviço. O serviço então encaminha o tráfego para os pods nos quais o app é executado. pathType- O método de correspondência de caminho da URL. Os valores suportados são
ImplementationSpecific,ExactouPrefix. Para obter mais informações e exemplos de cada tipo de caminho, consulte a Documentação do Kubernetes da comunidade. service.name- Substitua
app1_serviceeapp2_service, e assim por diante, pelo nome dos serviços que você criou para expor seus apps. Certifique-se de que os aplicativos que você especificar estejam no mesmo namespace. service.name- Substitua
<app1_service>e<app2_service>, e assim por diante, pelo nome dos serviços que você criou para expor seus apps. Certifique-se de que os aplicativos que você especificar estejam no mesmo namespace. service.port.number- A porta na qual o serviço atende. Use a mesma porta que você definiu quando criou o serviço do Kubernetes para seu app.
- Aplique o recurso do Ingress ao seu cluster. Assegure-se de que o recurso seja implementado no mesmo namespace que os serviços de app especificados no recurso.
kubectl apply -f community-ingress-resource.yaml -n <namespace>
Etapa 4: Verifique a configuração do Ingress
-
Liste seus ALBs e copie o endereço IP (clássico) ou o nome do host (VPC) de um ALB que execute a imagem do Ingress “ Kubernetes ”. Na saída, escolha um ALB que tenha uma Construção no formato
<community_version>_<ibm_build>_iks.ibmcloud ks ingress alb ls -c CLUSTER -
Use o endereço IP (clássico) ou nome do host (VPC) do ALB, o caminho do app e o domínio para verificar se é possível enviar tráfego com sucesso para o app por meio desse ALB.
curl http://<ALB_IP>/<app_path> -H "Host: <ingress_subdomain>"Por exemplo, para enviar uma solicitação a um aplicativo chamado
myappusando um subdomínio padrão do Ingress, execute o comando a seguir.curl http://169.X.X.X/myapp -H "Host: mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud"
Tendo problemas de conexão com seu app por meio do Ingress? Tente Resolução de problemas do Ingress. É possível verificar o funcionamento e o status dos componentes do Ingress executando
ibmcloud ks ingress status-report get -c CLUSTER_NAME_OR_ID.
CRDs do Traefik
Juntamente com os recursos do Ingress disponíveis em Kubernetes. Os controladores de acesso baseados no Traefik permitem o uso de recursos definidos pelas Definições de Recursos Personalizados do Traefik. O CRD necessário é implantado automaticamente no cluster quando um ALB baseado no Traefik é ativado. A versão do CRD implantada corresponde sempre à versão mais recente dos ALBs do Traefik implantados. Mais informações sobre Recursos Personalizados podem ser encontradas na documentação do Traefik.
Às vezes, dependendo da configuração, os CRs do Traefik podem exigir que você especifique os nomes dos pontos de entrada. No IBM Cloud Kubernetes Service, os nomes padrão dos pontos de entrada são web para tráfego em texto simples
HTTP (vinculado à porta 80 por padrão) e websecure para tráfego criptografado TLS HTTPS (vinculado à porta 443 por padrão). Você pode configurar portas ou criar pontos de entrada adicionais,
caso sua aplicação exija isso.
Suporte a anotações do Ingress - NGINX no Traefik
O Traefik inclui uma camada de compatibilidade que processa anotações específicas do Ingress- NGINX. Esse recurso está desativado por padrão no site IBM Cloud Kubernetes Service. Ao ativá-la, o processamento de anotações específicas do Traefik
é desativado; portanto, apenas as anotações específicas do Ingress — NGINX — serão processadas pelo ALB. A opção “ ingressProvider ” no ibm-ingress-deploy-config ConfigMap pode ser usada para ativar ou desativar esse recurso.
Para obter mais informações sobre o estado de suporte às anotações, consulte a documentação do Traefik.
Domínios personalizados com o Ingress
Se você não quiser usar o subdomínio do Ingress fornecido pelo IBM, poderá usar seu próprio domínio personalizado, que deverá ser especificado no recurso Ingress. Observe que os aplicativos expostos via Ingress por meio de ALBs privadas exigem um domínio personalizado ou a configuração manual de domínios fornecidos p IBM.
Criação de domínios personalizados para ALBs públicas
Siga as etapas para criar um domínio personalizado para ALBs públicas.
-
Crie um domínio customizado. Para registrar seu domínio customizado, trabalhe com o provedor de Domain Name Service (DNS) ou de IBM Cloud DNS. Se os apps que você deseja que o Ingress exponha estiverem em namespaces diferentes em um cluster, registre o domínio customizado como um domínio curinga, como
*.custom_domain.net. Observe que os domínios são limitados a 130 caracteres ou menos no Kubernetes versão 1.20 ou mais recente. -
Defina um alias para o seu domínio customizado especificando o subdomínio fornecido pela IBM como um registro de nome canônico (CNAME). Para localizar o domínio do Ingress fornecido pela IBM, execute
ibmcloud ks cluster get --cluster CLUSTER_NAMEe procure o campo Subdomínio do Ingress.É necessário especificar o subdomínio fornecido pelo IBM como um CNAME para que as verificações automáticas de integridade removam quaisquer IPs com falha da resposta do DNS e para garantir que seu domínio personalizado seja atualizado quando você adicionar ou remover ALBs.
Criação de domínios personalizados para ALBs privadas
Siga as etapas para criar um domínio personalizado para ALBs privadas. Observe que é necessário utilizar domínios personalizados para usar o Ingress com ALBs privadas.
Se você tiver um cluster clássico com apenas uma VLAN privada, deverá primeiro configurar seu próprio serviço de DNS, que estará disponível na sua rede privada.
-
Crie um domínio customizado por meio de seu provedor de serviços DNS. Observe que as URLs do Ingress devem ter, no máximo, 130 caracteres.
-
Mapeie seu domínio customizado para os ALBs privados incluindo seus endereços IP como registros A (clusters clássicos) ou seu nome do host VPC como um CNAME (clusters VPC). Para localizar os endereços IP (clássico) ou nome do host (VPC) do ALB, execute
ibmcloud ks ingress alb ls -c CLUSTER_NAME_OR_ID.