From 08d8843a9cb0bfb4a0061be35b33c31d250c6c5a Mon Sep 17 00:00:00 2001 From: Michail Kargakis Date: Fri, 15 Jan 2016 14:47:11 +0100 Subject: [PATCH] kubectl: Support exposing deployments --- hack/test-cmd.sh | 13 +++++++++++++ pkg/kubectl/cmd/util/factory.go | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/hack/test-cmd.sh b/hack/test-cmd.sh index 3092589a6c..61bdb3a2a6 100755 --- a/hack/test-cmd.sh +++ b/hack/test-cmd.sh @@ -946,6 +946,19 @@ __EOF__ # TODO: Remove once deployment reaping is implemented kubectl delete rc --all "${kube_flags[@]}" + ### Expose a deployment as a service + kubectl create -f examples/extensions/deployment.yaml "${kube_flags[@]}" + # Pre-condition: 3 replicas + kube::test::get_object_assert 'deployment nginx-deployment' "{{$deployment_replicas}}" '3' + # Command + kubectl expose deployment/nginx-deployment + # Post-condition: service exists and exposes deployment port (80) + kube::test::get_object_assert 'service nginx-deployment' "{{$port_field}}" '80' + # Clean-up + kubectl delete deployment/nginx-deployment service/nginx-deployment "${kube_flags[@]}" + # TODO: Remove once deployment reaping is implemented + kubectl delete rc --all "${kube_flags[@]}" + ### Expose replication controller as service kubectl create -f examples/guestbook/frontend-controller.yaml "${kube_flags[@]}" # Pre-condition: 3 replicas diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index 65283eb2b6..f6749f3d0f 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -228,6 +228,8 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { return "", fmt.Errorf("the service has no pod selector set") } return kubectl.MakeLabels(t.Spec.Selector), nil + case *extensions.Deployment: + return kubectl.MakeLabels(t.Spec.Selector), nil default: gvk, err := api.Scheme.ObjectKind(object) if err != nil { @@ -245,6 +247,8 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { return getPorts(t.Spec), nil case *api.Service: return getServicePorts(t.Spec), nil + case *extensions.Deployment: + return getPorts(t.Spec.Template.Spec), nil default: gvk, err := api.Scheme.ObjectKind(object) if err != nil { @@ -330,7 +334,7 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { }, CanBeExposed: func(kind unversioned.GroupKind) error { switch kind { - case api.Kind("ReplicationController"), api.Kind("Service"), api.Kind("Pod"): + case api.Kind("ReplicationController"), api.Kind("Service"), api.Kind("Pod"), extensions.Kind("Deployment"): // nothing to do here default: return fmt.Errorf("cannot expose a %s", kind)