Oi Lorena, bom dia, tudo certo e por aí?
Obrigado pelo retorno.
Neste meio tempo eu cheguei na solução, mas você estava certa ao indicar a verificação dos logs do aws-load-balancer-controller.
Criei um post no Stackoverflow explicando a solução no formato FCA:
https://stackoverflow.com/questions/74634798/kubernetes-ingress-does-not-create-rules-in-alb-eks-when-it-has-wildcard
Segue o detalhado em português, caso alguém mais precise:
FATO
- Kubernetes ingress não cria rules no Alb/EKS quando tem wildcard.
- Ao tentar criar paths que se sobrepoem no Ingress do Kubernetes, o roteamento das requisições não ocorre conforme o esperado.
- O ingress não consegue criar paths com Wildcard.
CAUSA
A rule com wildcard não é criada no ALB na AWS.
Ao tentar usar wildcard no path do Ingress no Kubernetes, ocorrem erros no ingress / aws-load-balancer-controller.
Logs do Ingress:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedBuildModel 53s (x974 over 11d) ingress Failed build model due to ingress: api-checkout/api-checkout-develop: prefix path shouldn't contain wildcards: /teste/*
- Logs do aws-load-balancer-controller:
kubectl logs -n kube-system deployment.apps/aws-load-balancer-controller
{"level":"error","ts":1669761828.7741847,"logger":"controller-runtime.manager.controller.ingress","msg":"Reconciler error","name":"api-checkout-max-shopify-develop","namespace":"api-checkout-max-shopify-develop","error":"ingress: api-checkout-max-shopify-develop/api-checkout-max-shopify-develop: prefix path shouldn't contain wildcards: /shopify/*"}
- Só é possível criar rules no ALB contendo wildcard, através da Console da AWS.
AÇÃO
ImplementationSpecific: With this path type, matching is up to the IngressClass. Implementations can treat this as a separate pathType or treat it identically to Prefix or Exact path types.
EXEMPLO:
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: $K8S_INGRESS_NAME_NGINX
namespace: $K8S_NAMESPACE
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/certificate-arn: $INGRESS_CERT_ARN,$INGRESS_CERT_SUBDOMAIN_ARN
alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS-1-2-Ext-2018-06
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/ssl-redirect: "443"
alb.ingress.kubernetes.io/scheme: internet-facing
spec:
rules:
- host: $URL
http:
paths:
- pathType: ImplementationSpecific
path: "/teste"
backend:
service:
name: $K8S_DEPLOY_NAME_NGINX_FRONTEND
port:
number: $K8S_SERVICE_PORT_NGINX_FRONTEND
- pathType: ImplementationSpecific
path: "/teste/*"
backend:
service:
name: $K8S_DEPLOY_NAME_NGINX_BACKEND
port:
number: $K8S_SERVICE_PORT_NGINX_BACKEND
- pathType: Prefix
path: "/checkout"
backend:
service:
name: $K8S_DEPLOY_NAME_NGINX_FRONTEND
port:
number: $K8S_SERVICE_PORT_NGINX_FRONTEND
path: "/"
backend:
service:
name: $K8S_DEPLOY_NAME_NGINX_BACKEND
port:
number: $K8S_SERVICE_PORT_NGINX_BACKEND