Is this a BUG REPORT or FEATURE REQUEST?:
/kind feature
What happened:
We run Kuberentes on AWS. We are trying out LoadBalancer service type.
We use Terraform heavily for managing infrastructure on AWS. As a result we have several shared security groups with "perfect" rules. One of them is supposed to be attached to ELBs so our own IPs, partners, etc are whitelisted. Right now, it seems there isn't a way for Kubernetes to use the security group as is. There are several alternatives:
- Pass my existing security group as
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups annotation. However, Kubernetes still tries to create one first, or use a global security group. If I don't provide any IP range, Kubernetes will whitelist 0.0.0.0/0. This seems insecure.
- Provide my own IP ranges as either annotation
service.beta.kubernetes.io/load-balancer-source-ranges or service.Spec.LoadBalancerSourceRanges. Then Kubernetes will create a security group for this ELB with the given IPs. This means I need to duplicate my IPs in all microservices.
- Provide my own IP ranges as either annotation
service.beta.kubernetes.io/load-balancer-source-ranges or service.Spec.LoadBalancerSourceRanges, and use a global security group. Then Kubernetes will modify the global SG with the given IPs. This seems problematic when lots of microservices share one SG but some want different IPs whitelisted.
I want to entertain the idea below:
- Allow users to sepcify another security group to
kube-controller-manager or Service object, which Kubernetes will take it and attach it to ELBs as is.
- If such security group is provided, skip other IP whitelisting steps.
What you expected to happen:
I can give Kubernetes existing security group(s). Kuberentes just attaches the security group(s) to the managed ELBs without modifying the rules.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
It may already be possible to achieve this, and I'm not aware of. Or there are other concerns so that Kubernetes didn't choose to implement this feature.
Environment:
- Kubernetes version (use
kubectl version): v1.7.1
- Cloud provider or hardware configuration**: AWS
- OS (e.g. from /etc/os-release):
- Kernel (e.g.
uname -a):
- Install tools:
- Others:
Is this a BUG REPORT or FEATURE REQUEST?:
/kind feature
What happened:
We run Kuberentes on AWS. We are trying out
LoadBalancerservice type.We use Terraform heavily for managing infrastructure on AWS. As a result we have several shared security groups with "perfect" rules. One of them is supposed to be attached to ELBs so our own IPs, partners, etc are whitelisted. Right now, it seems there isn't a way for Kubernetes to use the security group as is. There are several alternatives:
service.beta.kubernetes.io/aws-load-balancer-extra-security-groupsannotation. However, Kubernetes still tries to create one first, or use a global security group. If I don't provide any IP range, Kubernetes will whitelist0.0.0.0/0. This seems insecure.service.beta.kubernetes.io/load-balancer-source-rangesorservice.Spec.LoadBalancerSourceRanges. Then Kubernetes will create a security group for this ELB with the given IPs. This means I need to duplicate my IPs in all microservices.service.beta.kubernetes.io/load-balancer-source-rangesorservice.Spec.LoadBalancerSourceRanges, and use a global security group. Then Kubernetes will modify the global SG with the given IPs. This seems problematic when lots of microservices share one SG but some want different IPs whitelisted.I want to entertain the idea below:
kube-controller-managerorServiceobject, which Kubernetes will take it and attach it to ELBs as is.What you expected to happen:
I can give Kubernetes existing security group(s). Kuberentes just attaches the security group(s) to the managed ELBs without modifying the rules.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
It may already be possible to achieve this, and I'm not aware of. Or there are other concerns so that Kubernetes didn't choose to implement this feature.
Environment:
kubectl version): v1.7.1uname -a):