Open gustavosr98 opened 1 year ago
Since there are going to be multiple annotations per cloud (AWS, GCP, Azure, etc) I believe an approach could be to expose on the charm an options like extra-annotations
to solve any additional customization required per cloud
For this other too as well:
This is related to https://github.com/canonical/istio-operators/issues/66.
Thank you @gustavosr98 for the detailed report. I will bring this up in one of the team's meeting in order to evaluate this feature, since this is something that was also requested some time ago in #66.
I have not tested but found these kubernetes-service-annotations
, within those there is a kubernetes-service-type
option worth testing during deployment type to avoid hacking into the charm code
# juju config istio-ingressgateway | grep kubernetes
kubernetes-ingress-allow-http:
kubernetes-ingress-class:
kubernetes-ingress-ssl-passthrough:
kubernetes-ingress-ssl-redirect:
kubernetes-service-annotations:
kubernetes-service-external-ips:
kubernetes-service-externalname:
kubernetes-service-loadbalancer-ip:
kubernetes-service-loadbalancer-sourceranges:
kubernetes-service-target-port:
kubernetes-service-type:
Bug Description
Deploying istio gateway as a LoadBalancer on AWS EKS will by default create an AWS Load Balancer that is exposed to the Internet by default
There are multiple cases where because of security constraints this needs to be only exposed to internal networks and not to the Internet. This also applies when deploying a private EKS that is only available on private VPCs and not publicly available VPCs.
I would like to have exposed the option to add the required annotation on the charm to deploy the LoadBalancer as a internal LoadBalancer rather than a private one
See https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/service/annotations/#lb-internal
To Reproduce
juju deploy --trust --debug istio-gateway \ --channel=1.16/stable \ --config kind=ingress \ --config gateway_service_type=LoadBalancer
Environment
AWS EKS Juju 2.9.45 Charm channel: 1.16/stable Charm revision: 663
Relevant log output
Additional context
Some additional external reference https://anshul-prakash17.medium.com/creating-an-internal-load-balancer-in-aws-eks-using-istio-3defcb51c6a2
Workaround
Create the service as a NodePort initially, so the LoadBalancer doesn't get created on AWS
Edit the manifest.yaml located on the charm source code to add the service annotation for internal lb
Push the new manifest.yaml into the deployed charm
Change the service type to LoadBalancer