Home > Net >  AWS EKS configure HTTPS listener
AWS EKS configure HTTPS listener

Time:02-25

I want to secure my web service running on Kubernetes (EKS). It is running on port 80 .I want to run this on port 443.

When I apply the YAML file (for service and ingress), on AWS console I still have it listening on port 80 (and not on 443): enter image description here

This is my YAML file: How can I let it works? Thanks for you time!

   #SERVICE LOGGER
   apiVersion: v1
   kind: Service
   metadata:
     name: load-balancer-api-logger
     namespace: servicename-core-ns
     annotations:
       service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:eu-central-1:786543355018:certificate/acdff29d4-7a32-42f1-8f11-1d4f495a5c77
       service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
       service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
       service.beta.kubernetes.io/force-ssl-redirect: "true"
   spec:
     selector:
       app: api-logger
     type: NodePort
     ports:
     - protocol: TCP
       port: 443
       targetPort: 5000
     selector:
       app.kubernetes.io/name: api-logger
   ---
   
   apiVersion: networking.k8s.io/v1
   kind: Ingress
   metadata:
     name: ingress-articor
     namespace: servicename-core-ns
     annotations:
       kubernetes.io/ingress.class: alb
       alb.ingress.kubernetes.io/scheme: internet-facing
       alb.ingress.kubernetes.io/target-type: instance
       alb.ingress.kubernetes.io/healthcheck-path: "/healthcheckep"
       alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
       alb.ingress.kubernetes.io/ssl-redirect: '443'
   spec:
     rules:
       - host: logger.domainname.com
         http:
           paths:
             - path: "/"
               pathType: Prefix
               backend:
                 service:
                   name: load-balancer-api-logger
                   port: 
                     number: 80

Please consider that if I try to manually set the ALB to work with HTTPS it works fine. What I'm trying to achive here is to configure it via YAML file.

CodePudding user response:

You should configure all settings in Ingress object. The following spec also don't repeat the default value set by the controller:

apiVersion: v1
kind: Service
metadata:
 name: load-balancer-api-logger
 namespace: servicename-core-ns
spec:
 selector:
   app: api-logger
 type: NodePort
 ports:
 - protocol: TCP
   port: 443
   targetPort: 5000
 selector:
   app.kubernetes.io/name: api-logger
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: ingress-articor
 namespace: servicename-core-ns
 annotations:
   kubernetes.io/ingress.class: alb
   alb.ingress.kubernetes.io/scheme: internet-facing
   alb.ingress.kubernetes.io/healthcheck-path: "/healthcheckep"
   alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-central-1:786543355018:certificate/acdff29d4-7a32-42f1-8f11-1d4f495a5c77
spec:
 rules:
 - host: logger.domainname.com
   http:
     paths:
     - path: "/"
       pathType: Prefix
       backend:
         service:
           name: load-balancer-api-logger
           port: 
             number: 443
  • Related