Open
Description
ISSUE TYPE
- Enhancement request
COMPONENT NAME
Component: Kubernetes/Networking
CLOUDSTACK VERSION
Cloudstack 4.18
SUMMARY
Support static public ip address as a Load balancer IP
STEPS TO REPRODUCE
-
Deploy Kubernetes cluster on Cloudstack
-
Create a deployment for example a nginx deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # tells deployment to run 2 pods matching the template
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
- Expose the deployment as a loadbalancer service
kubectl expose deploy/nginx-deployment --port=80 --type=LoadBalancer
- Cloudstack then randomly allocated a public ip as external ip
❯ kubectl get svc nginx-deployment
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-deployment LoadBalancer 10.109.88.98 10.0.54.83 80:32739/TCP 4m24s
- Suppose a user wants a specific public ip as a loadbalancer ip
Currently it's not possible even if we manually edit the service.yaml, cloudstack again allocates a random public ip
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2023-07-25T04:31:03Z"
finalizers:
- service.kubernetes.io/load-balancer-cleanup
name: nginx-deployment
namespace: default
resourceVersion: "995303"
uid: 224691be-fa86-4b07-938c-c86d948b99fb
spec:
allocateLoadBalancerNodePorts: true
clusterIP: 10.109.88.98
clusterIPs:
- 10.109.88.98
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- nodePort: 32739
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
sessionAffinity: None
type: LoadBalancer
status:
apiVersion: v1
loadBalancer:
apiVersion: v1
ingress:
- ip: 10.0.54.83
EXPECTED RESULTS
Cloudstack should allocate the specified public ip address
ACTUAL RESULTS
Clodudstack is allocating a radom public ip address
Metadata
Metadata
Assignees
Labels
No labels