mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #12094 from brendandburns/kubectl
Auto commit by PR queue bot
This commit is contained in:
		@@ -697,6 +697,7 @@ _kubectl_expose()
 | 
			
		||||
    flags+=("--protocol=")
 | 
			
		||||
    flags+=("--public-ip=")
 | 
			
		||||
    flags+=("--selector=")
 | 
			
		||||
    flags+=("--session-affinity=")
 | 
			
		||||
    flags+=("--target-port=")
 | 
			
		||||
    flags+=("--template=")
 | 
			
		||||
    two_word_flags+=("-t")
 | 
			
		||||
 
 | 
			
		||||
@@ -82,6 +82,10 @@ re\-use the labels from the resource it exposes.
 | 
			
		||||
\fB\-\-selector\fP=""
 | 
			
		||||
    A label selector to use for this service. If empty (the default) infer the selector from the replication controller.
 | 
			
		||||
 | 
			
		||||
.PP
 | 
			
		||||
\fB\-\-session\-affinity\fP=""
 | 
			
		||||
    If non\-empty, set the session affinity for the service to this; legal values: 'None', 'ClientIP'
 | 
			
		||||
 | 
			
		||||
.PP
 | 
			
		||||
\fB\-\-target\-port\fP=""
 | 
			
		||||
    Name or number for the port on the container that the service should direct traffic to. Optional.
 | 
			
		||||
 
 | 
			
		||||
@@ -79,6 +79,7 @@ $ kubectl expose rc streamer --port=4100 --protocol=udp --name=video-stream
 | 
			
		||||
      --protocol="TCP": The network protocol for the service to be created. Default is 'tcp'.
 | 
			
		||||
      --public-ip="": Name of a public IP address to set for the service. The service will be assigned this IP in addition to its generated service IP.
 | 
			
		||||
      --selector="": A label selector to use for this service. If empty (the default) infer the selector from the replication controller.
 | 
			
		||||
      --session-affinity="": If non-empty, set the session affinity for the service to this; legal values: 'None', 'ClientIP'
 | 
			
		||||
      --target-port="": Name or number for the port on the container that the service should direct traffic to. Optional.
 | 
			
		||||
  -t, --template="": Template string or path to template file to use when -o=template or -o=templatefile.  The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview]
 | 
			
		||||
      --type="": Type for this service: ClusterIP, NodePort, or LoadBalancer. Default is 'ClusterIP' unless --create-external-load-balancer is specified.
 | 
			
		||||
@@ -117,7 +118,7 @@ $ kubectl expose rc streamer --port=4100 --protocol=udp --name=video-stream
 | 
			
		||||
 | 
			
		||||
* [kubectl](kubectl.md)	 - kubectl controls the Kubernetes cluster manager
 | 
			
		||||
 | 
			
		||||
###### Auto generated by spf13/cobra at 2015-07-17 01:17:57.020108348 +0000 UTC
 | 
			
		||||
###### Auto generated by spf13/cobra at 2015-07-31 17:33:19.568673976 +0000 UTC
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
 | 
			
		||||
 
 | 
			
		||||
@@ -70,6 +70,7 @@ func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
 | 
			
		||||
	cmd.Flags().String("public-ip", "", "Name of a public IP address to set for the service. The service will be assigned this IP in addition to its generated service IP.")
 | 
			
		||||
	cmd.Flags().String("overrides", "", "An inline JSON override for the generated object. If this is non-empty, it is used to override the generated object. Requires that the object supply a valid apiVersion field.")
 | 
			
		||||
	cmd.Flags().String("name", "", "The name for the newly created object.")
 | 
			
		||||
	cmd.Flags().String("session-affinity", "", "If non-empty, set the session affinity for the service to this; legal values: 'None', 'ClientIP'")
 | 
			
		||||
	return cmd
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -139,6 +139,41 @@ func TestRunExposeService(t *testing.T) {
 | 
			
		||||
			},
 | 
			
		||||
			status: 200,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			name: "expose-external-affinity-service",
 | 
			
		||||
			args: []string{"service", "baz"},
 | 
			
		||||
			ns:   "test",
 | 
			
		||||
			calls: map[string]string{
 | 
			
		||||
				"GET":  "/namespaces/test/services/baz",
 | 
			
		||||
				"POST": "/namespaces/test/services",
 | 
			
		||||
			},
 | 
			
		||||
			input: &api.Service{
 | 
			
		||||
				ObjectMeta: api.ObjectMeta{Name: "baz", Namespace: "test", ResourceVersion: "12"},
 | 
			
		||||
				TypeMeta:   api.TypeMeta{Kind: "Service", APIVersion: "v1"},
 | 
			
		||||
				Spec: api.ServiceSpec{
 | 
			
		||||
					Selector: map[string]string{"app": "go"},
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			flags: map[string]string{"selector": "func=stream", "protocol": "UDP", "port": "14", "name": "foo", "labels": "svc=test", "create-external-load-balancer": "true", "session-affinity": "ClientIP"},
 | 
			
		||||
			output: &api.Service{
 | 
			
		||||
				ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "test", ResourceVersion: "12", Labels: map[string]string{"svc": "test"}},
 | 
			
		||||
				TypeMeta:   api.TypeMeta{Kind: "Service", APIVersion: "v1"},
 | 
			
		||||
				Spec: api.ServiceSpec{
 | 
			
		||||
					Ports: []api.ServicePort{
 | 
			
		||||
						{
 | 
			
		||||
							Name:       "default",
 | 
			
		||||
							Protocol:   api.Protocol("UDP"),
 | 
			
		||||
							Port:       14,
 | 
			
		||||
							TargetPort: util.NewIntOrStringFromInt(14),
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					Selector:        map[string]string{"func": "stream"},
 | 
			
		||||
					Type:            api.ServiceTypeLoadBalancer,
 | 
			
		||||
					SessionAffinity: api.ServiceAffinityClientIP,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
			status: 200,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
 
 | 
			
		||||
@@ -61,6 +61,7 @@ func paramNames() []GeneratorParam {
 | 
			
		||||
		{"container-port", false}, // alias of target-port
 | 
			
		||||
		{"target-port", false},
 | 
			
		||||
		{"port-name", false},
 | 
			
		||||
		{"session-affinity", false},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -141,5 +142,15 @@ func generate(params map[string]string) (runtime.Object, error) {
 | 
			
		||||
	if len(params["type"]) != 0 {
 | 
			
		||||
		service.Spec.Type = api.ServiceType(params["type"])
 | 
			
		||||
	}
 | 
			
		||||
	if len(params["session-affinity"]) != 0 {
 | 
			
		||||
		switch api.ServiceAffinity(params["session-affinity"]) {
 | 
			
		||||
		case api.ServiceAffinityNone:
 | 
			
		||||
			service.Spec.SessionAffinity = api.ServiceAffinityNone
 | 
			
		||||
		case api.ServiceAffinityClientIP:
 | 
			
		||||
			service.Spec.SessionAffinity = api.ServiceAffinityClientIP
 | 
			
		||||
		default:
 | 
			
		||||
			return nil, fmt.Errorf("unknown session affinity: %s", params["session-affinity"])
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return &service, nil
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -272,6 +272,37 @@ func TestGenerateService(t *testing.T) {
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			generator: ServiceGeneratorV1{},
 | 
			
		||||
			params: map[string]string{
 | 
			
		||||
				"selector":         "foo=bar,baz=blah",
 | 
			
		||||
				"name":             "test",
 | 
			
		||||
				"port":             "80",
 | 
			
		||||
				"protocol":         "TCP",
 | 
			
		||||
				"container-port":   "1234",
 | 
			
		||||
				"session-affinity": "ClientIP",
 | 
			
		||||
			},
 | 
			
		||||
			expected: api.Service{
 | 
			
		||||
				ObjectMeta: api.ObjectMeta{
 | 
			
		||||
					Name: "test",
 | 
			
		||||
				},
 | 
			
		||||
				Spec: api.ServiceSpec{
 | 
			
		||||
					Selector: map[string]string{
 | 
			
		||||
						"foo": "bar",
 | 
			
		||||
						"baz": "blah",
 | 
			
		||||
					},
 | 
			
		||||
					Ports: []api.ServicePort{
 | 
			
		||||
						{
 | 
			
		||||
							Name:       "default",
 | 
			
		||||
							Port:       80,
 | 
			
		||||
							Protocol:   "TCP",
 | 
			
		||||
							TargetPort: util.NewIntOrStringFromInt(1234),
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					SessionAffinity: api.ServiceAffinityClientIP,
 | 
			
		||||
				},
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
	for _, test := range tests {
 | 
			
		||||
		obj, err := test.generator.Generate(test.params)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user