When creating a service
using EKS, it is exposed using http through a AWS load balancer.
kubectl apply -f service.yaml
- Will create a load balancer that's managed by EKS, and can not be modified. any modification, valid or not will be overriden by AWS at some point.
I'm going down the rabbit hole of trying to expose the service as HTTPS.
Modifying the aws load balancer to listen on 443 in https with and acm certificate, will provide a temporary solution, which will be reset when EKS will refresh the load balancer back to 'factory settings'.
Best approach seems to be to create an ingress
load balancer that can support HTTPS. following these articles:
https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html
https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html
listen-ports
and certificate-arn
were added to the ingress yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: game-2048
name: ingress-2048
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80},{"HTTPS":443}]' # Added by me
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:411686525067:certificate/8adf7812-a1af-4eae-af1b-ea425a238a67
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-2048
port:
number: 80
EKS
will create an ALB
with a host name such as: k8s--------d4ees4dc9b-1296497080.eu-central-1.elb.amazonaws.com
which is under the amazonaws.com
.
When adding to the yaml config, certificate-arn
the ALB will be created with a port 443 listener, and will be attached the ACM certificate that was specified.
But, since the ALB host is under the amazonaws.com
domain, the certificate mismatches and I'm back to square one.
How can I make EKS create an https ALB?
On a higher level, I manage DNS on cloudflare
and will create a CNAME proxy record for api.mydomain.com
to the ALB host k8s--------d4ees4dc9b-1296497080.eu-central-1.elb.amazonaws.com
For the DNS proxy to work well, both 'sides' must support https.