Como garantir o acesso dos utilizadores a uma aplicação a funcionar no Kubernetes?
sobes.tech IA
Resposta da IA
Existem várias formas principais:
-
Tipo de Serviço Kubernetes: LoadBalancer. O provedor de nuvem cria um balanceador de carga externo que direciona o tráfego para os pods da sua aplicação.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: LoadBalancer # Aqui especifica-se o tipo LoadBalancer -
Tipo de Serviço Kubernetes: NodePort. Cada nó do cluster abre uma porta estática que redireciona o tráfego para o serviço. O acesso à aplicação é feito através do endereço IP de qualquer nó do cluster e essa porta estática.
apiVersion: v1 kind: Service metadata: name: my-app-service spec: selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 8080 type: NodePort # Aqui especifica-se o tipo NodePortEste método é menos escalável e muitas vezes não recomendado para produção.
-
Ingress. Objeto do Kubernetes que gere o acesso externo aos serviços no cluster. Requer um controlador de Ingress (por exemplo, Nginx Ingress, Traefik, HAProxy). O Ingress permite configurar o roteamento com base em nomes de domínio e caminhos.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-app-ingress spec: rules: - host: myapp.mydomain.com # Nome de domínio http: paths: - path: / # Caminho pathType: Prefix backend: service: name: my-app-service # Nome do serviço port: number: 80 # Porta do serviço -
Gateway API (abordagem mais moderna). Evolução do Ingress, fornece uma API mais expressiva e extensível para gerenciar o acesso. Inclui recursos GatewayClass, Gateway, HTTPRoute (e outros tipos de rotas).
apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: my-app-route spec: parentRefs: - name: my-gateway # Referência ao recurso Gateway hostnames: - "myapp.mydomain.com" rules: - matches: - path: type: Prefix value: / backendRefs: - name: my-app-service # Nome do serviço port: 80 # Porta do serviço
A escolha do método depende dos requisitos de:
- Escalabilidade
- Complexidade do roteamento
- Segurança (terminação SSL/TLS)
- Plataforma de nuvem utilizada
- Necessidade de gestão centralizada de acesso
Para a maioria dos cenários de produção, são utilizados LoadBalancer para fornecer um ponto de entrada (frequentemente para o controlador de Ingress) ou diretamente, e Ingress (ou Gateway API) para um roteamento flexível e gestão de acesso a diferentes serviços no cluster.