'kubectl - How to edit service spec type to LoadBalancer via command line?
I have a k8s service of type clusterIP.. i need to change the below configuration via CLI
- the http port to https port
- the port number
- the type to Load Balancer
Is there a way to do it..?
Solution 1:[1]
You can't remove the existing port, but you can add the HTTPs port and also change the type using kubectl patch
Example:
kubectl patch svc <my_service> -p '{"spec": {"ports": [{"port": 443,"targetPort": 443,"name": "https"},{"port": 80,"targetPort": 80,"name": "http"}],"type": "LoadBalancer"}}'
If you don't want to create JSON on the command line, create a yaml file like so:
ports:
- port: 443
targetPort: 443
name: "https"
- port: 80
targetPort: 80
name: "http"
type: LoadBalancer
And then do:
kubectl patch svc <my_service> --patch "$(cat patch.yaml)"
Solution 2:[2]
kubectl edit svc <service_name> -n <namespace>
i - to edit the service
ESC, :wq - update your service
Use kubectl patch svc <service_name> -p '{"spec": ....}'
if you don't want the prompt.
Solution 3:[3]
The original solution does not works on powershell. Here is the following we need to do in order to make it work.
Powershell:
kubectl patch svc <my_service> -p '{\"spec\": {\"ports\": [{\"port\": 443,\"targetPort\": 443,\"name\": \"https\"},{\"port\": 80,\"targetPort\": 80,\"name\": \"http\"}],\"type\": \"LoadBalancer\"}}'
.
Notice the \ for powershell use case.
Bash:
kubectl patch svc <my_service> -p '{"spec": {"ports": [{"port": 443,"targetPort": 443,"name": "https"},{"port": 80,"targetPort": 80,"name": "http"}],"type": "LoadBalancer"}}'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | jaxxstorm |
Solution 2 | |
Solution 3 | Chandra Prakash Ajmera |