Configurando o Ingress
Crie um recurso Ingress para configurar seus componentes Ingress, defina regras para solicitações de roteamento e especifique o caminho para os serviços do seu app. Um recurso Ingresso separado é necessário para cada espaço de nomes que contém um app ou serviço que você deseja expor.
Antes de Iniciar
Siga estes passos de preparação antes de começar.
-
Certifique-se de que possui as permissões corretas para configurar o Ingress. As seguintes funções IBM Cloud IAM são necessárias:
- Função de acesso de plataforma Administrador para o cluster
- Função de acesso de serviço Gerenciador em todos os namespaces
-
Determine se você deseja usar o subdomínio Ingress do IBMfornecido. Se você não quiser usar o subdomínio fornecido, você deve criar e registrar o 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 Ingress- NGINX. Para orientações específicas sobre o Traefik, consulte a documentação correspondente. -
Se você estiver expondo apps sobre ALBs privadas, você deve ativar cada ALB privado 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 comandos, consulte areferência CLI.
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --cluster CLUSTER_NAME
clusters de VPC Para mais informações e opções de comandos, consulte areferência CLI.
sh {: pre} ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --cluster CLUSTER_NAME
-
Certise-se de que seu cluster inclua pelo menos dois nós do trabalhador por zona para garantir a alta disponibilidade e para aplicar atualizações periódica. 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 Requisitos do nó trabalhador para ALBs.
-
Se estiver usando um cluster clássico, ative uma função de roteador virtual(VRF) para sua conta de infraestrutura 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 cluster Secure by Default.
-
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 os passos para configurar 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: Configure a terminação TLS com certificados TLS e segredos Kubernetes
Seu certificado TLS deve ser armazenado como um segredo Kubernetes em cada namespace em que seus aplicativos existam.
-
Para usar o subdomínio Ingress fornecido pelo IBM, consulte Configuração dos segredos de TLS para o subdomínio Ingress fornecido por IBM.
-
Para usar um domínio personalizado, consulte Configuração de segredos de TLS 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 Ingresso em um arquivo YAML.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress-resource spec: ingressClassName: public-iks-k8s-nginx 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 do Ingress As classes do Ingress fornecidas pela IBMsão
public-iks-k8s-nginxpara ALBs públicos eprivate-iks-k8s-nginxpara ALBs privados 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 o 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. Certise-se de que os apps que você especifica estão no mesmo espaço de nomes. service.name- Substitua
<app1_service>e<app2_service>, e assim por diante, pelo nome dos serviços que você criou para expor seus apps. Certise-se de que os apps que você especifica estão no mesmo espaço de nomes. 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 sua configuração do Ingresso
-
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.
Domínios personalizados com 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.
Criando domínios personalizados para ALBs públicas
Siga os passos 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.Especificar o subdomínio fornecido pelo IBM como um CNAME é necessário 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.
Criando domínios personalizados para ALBs particulares
Siga os passos para criar um domínio personalizado para ALBs particulares. Note que domínios personalizados são necessários para usar Ingresso com ALBs particulares.
Se você tiver um cluster clássico com apenas uma VLAN privada, você deve primeiro configurar o seu próprio serviço DNS que está disponível em sua rede privada.
-
Crie um domínio customizado por meio de seu provedor de serviços DNS. Note que URLs Ingress devem ter 130 caracteres ou menos.
-
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.