mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #23798 from nak3/bash-completion
Bash completion updates
This commit is contained in:
commit
bbe5299371
@ -313,7 +313,8 @@ __kubectl_require_pod_and_container()
|
|||||||
|
|
||||||
__custom_func() {
|
__custom_func() {
|
||||||
case ${last_command} in
|
case ${last_command} in
|
||||||
kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_stop)
|
kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_stop | kubectl_edit | kubectl_patch |\
|
||||||
|
kubectl_annotate | kubectl_expose)
|
||||||
__kubectl_get_resource
|
__kubectl_get_resource
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@ -1155,7 +1156,74 @@ _kubectl_patch()
|
|||||||
must_have_one_flag+=("--patch=")
|
must_have_one_flag+=("--patch=")
|
||||||
must_have_one_flag+=("-p")
|
must_have_one_flag+=("-p")
|
||||||
must_have_one_noun=()
|
must_have_one_noun=()
|
||||||
|
must_have_one_noun+=("componentstatus")
|
||||||
|
must_have_one_noun+=("configmap")
|
||||||
|
must_have_one_noun+=("daemonset")
|
||||||
|
must_have_one_noun+=("deployment")
|
||||||
|
must_have_one_noun+=("endpoints")
|
||||||
|
must_have_one_noun+=("event")
|
||||||
|
must_have_one_noun+=("horizontalpodautoscaler")
|
||||||
|
must_have_one_noun+=("ingress")
|
||||||
|
must_have_one_noun+=("job")
|
||||||
|
must_have_one_noun+=("limitrange")
|
||||||
|
must_have_one_noun+=("namespace")
|
||||||
|
must_have_one_noun+=("node")
|
||||||
|
must_have_one_noun+=("persistentvolume")
|
||||||
|
must_have_one_noun+=("persistentvolumeclaim")
|
||||||
|
must_have_one_noun+=("pod")
|
||||||
|
must_have_one_noun+=("podsecuritypolicy")
|
||||||
|
must_have_one_noun+=("podtemplate")
|
||||||
|
must_have_one_noun+=("replicaset")
|
||||||
|
must_have_one_noun+=("replicationcontroller")
|
||||||
|
must_have_one_noun+=("resourcequota")
|
||||||
|
must_have_one_noun+=("secret")
|
||||||
|
must_have_one_noun+=("service")
|
||||||
|
must_have_one_noun+=("serviceaccount")
|
||||||
|
must_have_one_noun+=("thirdpartyresource")
|
||||||
|
must_have_one_noun+=("thirdpartyresourcedata")
|
||||||
noun_aliases=()
|
noun_aliases=()
|
||||||
|
noun_aliases+=("componentstatuses")
|
||||||
|
noun_aliases+=("configmaps")
|
||||||
|
noun_aliases+=("cs")
|
||||||
|
noun_aliases+=("daemonsets")
|
||||||
|
noun_aliases+=("deployments")
|
||||||
|
noun_aliases+=("ds")
|
||||||
|
noun_aliases+=("endpoints")
|
||||||
|
noun_aliases+=("ep")
|
||||||
|
noun_aliases+=("ev")
|
||||||
|
noun_aliases+=("events")
|
||||||
|
noun_aliases+=("horizontalpodautoscalers")
|
||||||
|
noun_aliases+=("hpa")
|
||||||
|
noun_aliases+=("ing")
|
||||||
|
noun_aliases+=("ingresses")
|
||||||
|
noun_aliases+=("jobs")
|
||||||
|
noun_aliases+=("limitranges")
|
||||||
|
noun_aliases+=("limits")
|
||||||
|
noun_aliases+=("namespaces")
|
||||||
|
noun_aliases+=("no")
|
||||||
|
noun_aliases+=("nodes")
|
||||||
|
noun_aliases+=("ns")
|
||||||
|
noun_aliases+=("persistentvolumeclaims")
|
||||||
|
noun_aliases+=("persistentvolumes")
|
||||||
|
noun_aliases+=("po")
|
||||||
|
noun_aliases+=("pods")
|
||||||
|
noun_aliases+=("podsecuritypolicies")
|
||||||
|
noun_aliases+=("podtemplates")
|
||||||
|
noun_aliases+=("pv")
|
||||||
|
noun_aliases+=("pvc")
|
||||||
|
noun_aliases+=("quota")
|
||||||
|
noun_aliases+=("rc")
|
||||||
|
noun_aliases+=("replicasets")
|
||||||
|
noun_aliases+=("replicationcontrollers")
|
||||||
|
noun_aliases+=("resourcequotas")
|
||||||
|
noun_aliases+=("rs")
|
||||||
|
noun_aliases+=("sa")
|
||||||
|
noun_aliases+=("secrets")
|
||||||
|
noun_aliases+=("serviceaccounts")
|
||||||
|
noun_aliases+=("services")
|
||||||
|
noun_aliases+=("svc")
|
||||||
|
noun_aliases+=("thirdpartyresourcedatas")
|
||||||
|
noun_aliases+=("thirdpartyresources")
|
||||||
}
|
}
|
||||||
|
|
||||||
_kubectl_delete()
|
_kubectl_delete()
|
||||||
@ -1342,7 +1410,74 @@ _kubectl_edit()
|
|||||||
|
|
||||||
must_have_one_flag=()
|
must_have_one_flag=()
|
||||||
must_have_one_noun=()
|
must_have_one_noun=()
|
||||||
|
must_have_one_noun+=("componentstatus")
|
||||||
|
must_have_one_noun+=("configmap")
|
||||||
|
must_have_one_noun+=("daemonset")
|
||||||
|
must_have_one_noun+=("deployment")
|
||||||
|
must_have_one_noun+=("endpoints")
|
||||||
|
must_have_one_noun+=("event")
|
||||||
|
must_have_one_noun+=("horizontalpodautoscaler")
|
||||||
|
must_have_one_noun+=("ingress")
|
||||||
|
must_have_one_noun+=("job")
|
||||||
|
must_have_one_noun+=("limitrange")
|
||||||
|
must_have_one_noun+=("namespace")
|
||||||
|
must_have_one_noun+=("node")
|
||||||
|
must_have_one_noun+=("persistentvolume")
|
||||||
|
must_have_one_noun+=("persistentvolumeclaim")
|
||||||
|
must_have_one_noun+=("pod")
|
||||||
|
must_have_one_noun+=("podsecuritypolicy")
|
||||||
|
must_have_one_noun+=("podtemplate")
|
||||||
|
must_have_one_noun+=("replicaset")
|
||||||
|
must_have_one_noun+=("replicationcontroller")
|
||||||
|
must_have_one_noun+=("resourcequota")
|
||||||
|
must_have_one_noun+=("secret")
|
||||||
|
must_have_one_noun+=("service")
|
||||||
|
must_have_one_noun+=("serviceaccount")
|
||||||
|
must_have_one_noun+=("thirdpartyresource")
|
||||||
|
must_have_one_noun+=("thirdpartyresourcedata")
|
||||||
noun_aliases=()
|
noun_aliases=()
|
||||||
|
noun_aliases+=("componentstatuses")
|
||||||
|
noun_aliases+=("configmaps")
|
||||||
|
noun_aliases+=("cs")
|
||||||
|
noun_aliases+=("daemonsets")
|
||||||
|
noun_aliases+=("deployments")
|
||||||
|
noun_aliases+=("ds")
|
||||||
|
noun_aliases+=("endpoints")
|
||||||
|
noun_aliases+=("ep")
|
||||||
|
noun_aliases+=("ev")
|
||||||
|
noun_aliases+=("events")
|
||||||
|
noun_aliases+=("horizontalpodautoscalers")
|
||||||
|
noun_aliases+=("hpa")
|
||||||
|
noun_aliases+=("ing")
|
||||||
|
noun_aliases+=("ingresses")
|
||||||
|
noun_aliases+=("jobs")
|
||||||
|
noun_aliases+=("limitranges")
|
||||||
|
noun_aliases+=("limits")
|
||||||
|
noun_aliases+=("namespaces")
|
||||||
|
noun_aliases+=("no")
|
||||||
|
noun_aliases+=("nodes")
|
||||||
|
noun_aliases+=("ns")
|
||||||
|
noun_aliases+=("persistentvolumeclaims")
|
||||||
|
noun_aliases+=("persistentvolumes")
|
||||||
|
noun_aliases+=("po")
|
||||||
|
noun_aliases+=("pods")
|
||||||
|
noun_aliases+=("podsecuritypolicies")
|
||||||
|
noun_aliases+=("podtemplates")
|
||||||
|
noun_aliases+=("pv")
|
||||||
|
noun_aliases+=("pvc")
|
||||||
|
noun_aliases+=("quota")
|
||||||
|
noun_aliases+=("rc")
|
||||||
|
noun_aliases+=("replicasets")
|
||||||
|
noun_aliases+=("replicationcontrollers")
|
||||||
|
noun_aliases+=("resourcequotas")
|
||||||
|
noun_aliases+=("rs")
|
||||||
|
noun_aliases+=("sa")
|
||||||
|
noun_aliases+=("secrets")
|
||||||
|
noun_aliases+=("serviceaccounts")
|
||||||
|
noun_aliases+=("services")
|
||||||
|
noun_aliases+=("svc")
|
||||||
|
noun_aliases+=("thirdpartyresourcedatas")
|
||||||
|
noun_aliases+=("thirdpartyresources")
|
||||||
}
|
}
|
||||||
|
|
||||||
_kubectl_apply()
|
_kubectl_apply()
|
||||||
@ -2144,7 +2279,21 @@ _kubectl_expose()
|
|||||||
|
|
||||||
must_have_one_flag=()
|
must_have_one_flag=()
|
||||||
must_have_one_noun=()
|
must_have_one_noun=()
|
||||||
|
must_have_one_noun+=("deployment")
|
||||||
|
must_have_one_noun+=("pod")
|
||||||
|
must_have_one_noun+=("replicaset")
|
||||||
|
must_have_one_noun+=("replicationcontroller")
|
||||||
|
must_have_one_noun+=("service")
|
||||||
noun_aliases=()
|
noun_aliases=()
|
||||||
|
noun_aliases+=("deployments")
|
||||||
|
noun_aliases+=("po")
|
||||||
|
noun_aliases+=("pods")
|
||||||
|
noun_aliases+=("rc")
|
||||||
|
noun_aliases+=("replicasets")
|
||||||
|
noun_aliases+=("replicationcontrollers")
|
||||||
|
noun_aliases+=("rs")
|
||||||
|
noun_aliases+=("services")
|
||||||
|
noun_aliases+=("svc")
|
||||||
}
|
}
|
||||||
|
|
||||||
_kubectl_autoscale()
|
_kubectl_autoscale()
|
||||||
@ -2684,7 +2833,42 @@ _kubectl_annotate()
|
|||||||
|
|
||||||
must_have_one_flag=()
|
must_have_one_flag=()
|
||||||
must_have_one_noun=()
|
must_have_one_noun=()
|
||||||
|
must_have_one_noun+=("componentstatuse")
|
||||||
|
must_have_one_noun+=("event")
|
||||||
|
must_have_one_noun+=("horizontalpodautoscaler")
|
||||||
|
must_have_one_noun+=("limitrange")
|
||||||
|
must_have_one_noun+=("node")
|
||||||
|
must_have_one_noun+=("persistentvolume")
|
||||||
|
must_have_one_noun+=("persistentvolumeclaim")
|
||||||
|
must_have_one_noun+=("pod")
|
||||||
|
must_have_one_noun+=("replicationcontroller")
|
||||||
|
must_have_one_noun+=("resourcequota")
|
||||||
|
must_have_one_noun+=("secret")
|
||||||
|
must_have_one_noun+=("service")
|
||||||
noun_aliases=()
|
noun_aliases=()
|
||||||
|
noun_aliases+=("componentstatuses")
|
||||||
|
noun_aliases+=("cs")
|
||||||
|
noun_aliases+=("ev")
|
||||||
|
noun_aliases+=("events")
|
||||||
|
noun_aliases+=("horizontalpodautoscalers")
|
||||||
|
noun_aliases+=("hpa")
|
||||||
|
noun_aliases+=("limitranges")
|
||||||
|
noun_aliases+=("limits")
|
||||||
|
noun_aliases+=("no")
|
||||||
|
noun_aliases+=("nodes")
|
||||||
|
noun_aliases+=("persistentvolumeclaims")
|
||||||
|
noun_aliases+=("persistentvolumes")
|
||||||
|
noun_aliases+=("po")
|
||||||
|
noun_aliases+=("pods")
|
||||||
|
noun_aliases+=("pv")
|
||||||
|
noun_aliases+=("pvc")
|
||||||
|
noun_aliases+=("quota")
|
||||||
|
noun_aliases+=("rc")
|
||||||
|
noun_aliases+=("replicationcontrollers")
|
||||||
|
noun_aliases+=("resourcequotas")
|
||||||
|
noun_aliases+=("secrets")
|
||||||
|
noun_aliases+=("services")
|
||||||
|
noun_aliases+=("svc")
|
||||||
}
|
}
|
||||||
|
|
||||||
_kubectl_config_view()
|
_kubectl_config_view()
|
||||||
|
@ -22,10 +22,11 @@ If \-\-overwrite is true, then existing annotations can be overwritten, otherwis
|
|||||||
If \-\-resource\-version is specified, then updates will use this resource version, otherwise the existing resource\-version will be used.
|
If \-\-resource\-version is specified, then updates will use this resource version, otherwise the existing resource\-version will be used.
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
Possible resources include (case insensitive): pods (po), services (svc),
|
Possible resources include (case insensitive):
|
||||||
replicationcontrollers (rc), nodes (no), events (ev), componentstatuses (cs),
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
limitranges (limits), persistentvolumes (pv), persistentvolumeclaims (pvc),
|
node (no), event (ev), componentstatuse (cs),
|
||||||
horizontalpodautoscalers (hpa), resourcequotas (quota) or secrets.
|
limitrange (limits), persistentvolume (pv), persistentvolumeclaim (pvc),
|
||||||
|
horizontalpodautoscaler (hpa), resourcequota (quota), secret
|
||||||
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
|
@ -13,7 +13,7 @@ kubectl expose \- Take a replication controller, service, deployment or pod and
|
|||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.PP
|
.PP
|
||||||
Take a deployment, service, replica set, replication controller, or pod and expose it as a new Kubernetes service.
|
Expose a resource as a new Kubernetes service.
|
||||||
|
|
||||||
.PP
|
.PP
|
||||||
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
||||||
@ -23,6 +23,11 @@ i.e. when the selector contains only the matchLabels component. Note that if no
|
|||||||
\-\-port and the exposed resource has multiple ports, all will be re\-used by the new service. Also if no
|
\-\-port and the exposed resource has multiple ports, all will be re\-used by the new service. Also if no
|
||||||
labels are specified, the new service will re\-use the labels from the resource it exposes.
|
labels are specified, the new service will re\-use the labels from the resource it exposes.
|
||||||
|
|
||||||
|
.PP
|
||||||
|
Possible resources include (case insensitive):
|
||||||
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
|
deployment, replicaset (rs)
|
||||||
|
|
||||||
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.PP
|
.PP
|
||||||
|
@ -46,10 +46,12 @@ It is intended to store non-identifying auxiliary data, especially data manipula
|
|||||||
If --overwrite is true, then existing annotations can be overwritten, otherwise attempting to overwrite an annotation will result in an error.
|
If --overwrite is true, then existing annotations can be overwritten, otherwise attempting to overwrite an annotation will result in an error.
|
||||||
If --resource-version is specified, then updates will use this resource version, otherwise the existing resource-version will be used.
|
If --resource-version is specified, then updates will use this resource version, otherwise the existing resource-version will be used.
|
||||||
|
|
||||||
Possible resources include (case insensitive): pods (po), services (svc),
|
Possible resources include (case insensitive):
|
||||||
replicationcontrollers (rc), nodes (no), events (ev), componentstatuses (cs),
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
limitranges (limits), persistentvolumes (pv), persistentvolumeclaims (pvc),
|
node (no), event (ev), componentstatuse (cs),
|
||||||
horizontalpodautoscalers (hpa), resourcequotas (quota) or secrets.
|
limitrange (limits), persistentvolume (pv), persistentvolumeclaim (pvc),
|
||||||
|
horizontalpodautoscaler (hpa), resourcequota (quota), secret
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
|
kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
|
||||||
@ -131,7 +133,7 @@ kubectl annotate pods foo description-
|
|||||||
|
|
||||||
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
||||||
|
|
||||||
###### Auto generated by spf13/cobra on 30-Mar-2016
|
###### Auto generated by spf13/cobra on 10-Apr-2016
|
||||||
|
|
||||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||||
[]()
|
[]()
|
||||||
|
@ -39,7 +39,7 @@ Take a replication controller, service, deployment or pod and expose it as a new
|
|||||||
### Synopsis
|
### Synopsis
|
||||||
|
|
||||||
|
|
||||||
Take a deployment, service, replica set, replication controller, or pod and expose it as a new Kubernetes service.
|
Expose a resource as a new Kubernetes service.
|
||||||
|
|
||||||
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
||||||
for that resource as the selector for a new service on the specified port. A deployment or replica set
|
for that resource as the selector for a new service on the specified port. A deployment or replica set
|
||||||
@ -48,6 +48,11 @@ i.e. when the selector contains only the matchLabels component. Note that if no
|
|||||||
--port and the exposed resource has multiple ports, all will be re-used by the new service. Also if no
|
--port and the exposed resource has multiple ports, all will be re-used by the new service. Also if no
|
||||||
labels are specified, the new service will re-use the labels from the resource it exposes.
|
labels are specified, the new service will re-use the labels from the resource it exposes.
|
||||||
|
|
||||||
|
Possible resources include (case insensitive):
|
||||||
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
|
deployment, replicaset (rs)
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
|
kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
|
||||||
```
|
```
|
||||||
@ -139,7 +144,7 @@ kubectl expose deployment nginx --port=80 --target-port=8000
|
|||||||
|
|
||||||
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
* [kubectl](kubectl.md) - kubectl controls the Kubernetes cluster manager
|
||||||
|
|
||||||
###### Auto generated by spf13/cobra on 30-Mar-2016
|
###### Auto generated by spf13/cobra on 10-Apr-2016
|
||||||
|
|
||||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||||
[]()
|
[]()
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
@ -58,6 +59,13 @@ type AnnotateOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
annotate_resources = `
|
||||||
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
|
node (no), event (ev), componentstatuse (cs),
|
||||||
|
limitrange (limits), persistentvolume (pv), persistentvolumeclaim (pvc),
|
||||||
|
horizontalpodautoscaler (hpa), resourcequota (quota), secret
|
||||||
|
`
|
||||||
|
|
||||||
annotate_long = `Update the annotations on one or more resources.
|
annotate_long = `Update the annotations on one or more resources.
|
||||||
|
|
||||||
An annotation is a key/value pair that can hold larger (compared to a label), and possibly not human-readable, data.
|
An annotation is a key/value pair that can hold larger (compared to a label), and possibly not human-readable, data.
|
||||||
@ -65,10 +73,8 @@ It is intended to store non-identifying auxiliary data, especially data manipula
|
|||||||
If --overwrite is true, then existing annotations can be overwritten, otherwise attempting to overwrite an annotation will result in an error.
|
If --overwrite is true, then existing annotations can be overwritten, otherwise attempting to overwrite an annotation will result in an error.
|
||||||
If --resource-version is specified, then updates will use this resource version, otherwise the existing resource-version will be used.
|
If --resource-version is specified, then updates will use this resource version, otherwise the existing resource-version will be used.
|
||||||
|
|
||||||
Possible resources include (case insensitive): pods (po), services (svc),
|
Possible resources include (case insensitive):` + annotate_resources
|
||||||
replicationcontrollers (rc), nodes (no), events (ev), componentstatuses (cs),
|
|
||||||
limitranges (limits), persistentvolumes (pv), persistentvolumeclaims (pvc),
|
|
||||||
horizontalpodautoscalers (hpa), resourcequotas (quota) or secrets.`
|
|
||||||
annotate_example = `# Update pod 'foo' with the annotation 'description' and the value 'my frontend'.
|
annotate_example = `# Update pod 'foo' with the annotation 'description' and the value 'my frontend'.
|
||||||
# If the same annotation is set multiple times, only the last value will be applied
|
# If the same annotation is set multiple times, only the last value will be applied
|
||||||
kubectl annotate pods foo description='my frontend'
|
kubectl annotate pods foo description='my frontend'
|
||||||
@ -93,6 +99,13 @@ kubectl annotate pods foo description-`
|
|||||||
func NewCmdAnnotate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdAnnotate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &AnnotateOptions{}
|
options := &AnnotateOptions{}
|
||||||
|
|
||||||
|
validArgs, argAliases := []string{}, []string{}
|
||||||
|
resources := regexp.MustCompile(`\s*,`).Split(annotate_resources, -1)
|
||||||
|
for _, r := range resources {
|
||||||
|
validArgs = append(validArgs, strings.Fields(r)[0])
|
||||||
|
argAliases = kubectl.ResourceAliases(validArgs)
|
||||||
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
Use: "annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]",
|
||||||
Short: "Update the annotations on a resource",
|
Short: "Update the annotations on a resource",
|
||||||
@ -109,6 +122,8 @@ func NewCmdAnnotate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
ValidArgs: validArgs,
|
||||||
|
ArgAliases: argAliases,
|
||||||
}
|
}
|
||||||
cmdutil.AddPrinterFlags(cmd)
|
cmdutil.AddPrinterFlags(cmd)
|
||||||
cmdutil.AddInclude3rdPartyFlags(cmd)
|
cmdutil.AddInclude3rdPartyFlags(cmd)
|
||||||
|
@ -124,7 +124,8 @@ __kubectl_require_pod_and_container()
|
|||||||
|
|
||||||
__custom_func() {
|
__custom_func() {
|
||||||
case ${last_command} in
|
case ${last_command} in
|
||||||
kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_stop)
|
kubectl_get | kubectl_describe | kubectl_delete | kubectl_label | kubectl_stop | kubectl_edit | kubectl_patch |\
|
||||||
|
kubectl_annotate | kubectl_expose)
|
||||||
__kubectl_get_resource
|
__kubectl_get_resource
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
@ -86,6 +86,15 @@ var errExit = fmt.Errorf("exit directly")
|
|||||||
func NewCmdEdit(f *cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
func NewCmdEdit(f *cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
||||||
options := &EditOptions{}
|
options := &EditOptions{}
|
||||||
|
|
||||||
|
// retrieve a list of handled resources from printer as valid args
|
||||||
|
validArgs, argAliases := []string{}, []string{}
|
||||||
|
p, err := f.Printer(nil, false, false, false, false, false, false, []string{})
|
||||||
|
cmdutil.CheckErr(err)
|
||||||
|
if p != nil {
|
||||||
|
validArgs = p.HandledResources()
|
||||||
|
argAliases = kubectl.ResourceAliases(validArgs)
|
||||||
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "edit (RESOURCE/NAME | -f FILENAME)",
|
Use: "edit (RESOURCE/NAME | -f FILENAME)",
|
||||||
Short: "Edit a resource on the server",
|
Short: "Edit a resource on the server",
|
||||||
@ -98,6 +107,8 @@ func NewCmdEdit(f *cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
},
|
},
|
||||||
|
ValidArgs: validArgs,
|
||||||
|
ArgAliases: argAliases,
|
||||||
}
|
}
|
||||||
usage := "Filename, directory, or URL to file to use to edit the resource"
|
usage := "Filename, directory, or URL to file to use to edit the resource"
|
||||||
kubectl.AddJsonFilenameFlag(cmd, &options.Filenames, usage)
|
kubectl.AddJsonFilenameFlag(cmd, &options.Filenames, usage)
|
||||||
|
@ -19,6 +19,7 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -38,14 +39,21 @@ type ExposeOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
expose_long = `Take a deployment, service, replica set, replication controller, or pod and expose it as a new Kubernetes service.
|
expose_resources = `
|
||||||
|
pod (po), service (svc), replicationcontroller (rc),
|
||||||
|
deployment, replicaset (rs)
|
||||||
|
`
|
||||||
|
|
||||||
|
expose_long = `Expose a resource as a new Kubernetes service.
|
||||||
|
|
||||||
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
Looks up a deployment, service, replica set, replication controller or pod by name and uses the selector
|
||||||
for that resource as the selector for a new service on the specified port. A deployment or replica set
|
for that resource as the selector for a new service on the specified port. A deployment or replica set
|
||||||
will be exposed as a service only if its selector is convertible to a selector that service supports,
|
will be exposed as a service only if its selector is convertible to a selector that service supports,
|
||||||
i.e. when the selector contains only the matchLabels component. Note that if no port is specified via
|
i.e. when the selector contains only the matchLabels component. Note that if no port is specified via
|
||||||
--port and the exposed resource has multiple ports, all will be re-used by the new service. Also if no
|
--port and the exposed resource has multiple ports, all will be re-used by the new service. Also if no
|
||||||
labels are specified, the new service will re-use the labels from the resource it exposes.`
|
labels are specified, the new service will re-use the labels from the resource it exposes.
|
||||||
|
|
||||||
|
Possible resources include (case insensitive):` + expose_resources
|
||||||
|
|
||||||
expose_example = `# Create a service for a replicated nginx, which serves on port 80 and connects to the containers on port 8000.
|
expose_example = `# Create a service for a replicated nginx, which serves on port 80 and connects to the containers on port 8000.
|
||||||
kubectl expose rc nginx --port=80 --target-port=8000
|
kubectl expose rc nginx --port=80 --target-port=8000
|
||||||
@ -72,6 +80,13 @@ kubectl expose deployment nginx --port=80 --target-port=8000`
|
|||||||
func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &ExposeOptions{}
|
options := &ExposeOptions{}
|
||||||
|
|
||||||
|
validArgs, argAliases := []string{}, []string{}
|
||||||
|
resources := regexp.MustCompile(`\s*,`).Split(expose_resources, -1)
|
||||||
|
for _, r := range resources {
|
||||||
|
validArgs = append(validArgs, strings.Fields(r)[0])
|
||||||
|
argAliases = kubectl.ResourceAliases(validArgs)
|
||||||
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]",
|
Use: "expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]",
|
||||||
Short: "Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service",
|
Short: "Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service",
|
||||||
@ -81,6 +96,8 @@ func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
err := RunExpose(f, out, cmd, args, options)
|
err := RunExpose(f, out, cmd, args, options)
|
||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
},
|
},
|
||||||
|
ValidArgs: validArgs,
|
||||||
|
ArgAliases: argAliases,
|
||||||
}
|
}
|
||||||
cmdutil.AddPrinterFlags(cmd)
|
cmdutil.AddPrinterFlags(cmd)
|
||||||
cmd.Flags().String("generator", "service/v2", "The name of the API generator to use. There are 2 generators: 'service/v1' and 'service/v2'. The only difference between them is that service port in v1 is named 'default', while it is left unnamed in v2. Default is 'service/v2'.")
|
cmd.Flags().String("generator", "service/v2", "The name of the API generator to use. There are 2 generators: 'service/v1' and 'service/v2'. The only difference between them is that service port in v1 is named 'default', while it is left unnamed in v2. Default is 'service/v2'.")
|
||||||
|
@ -63,6 +63,15 @@ kubectl patch pod valid-pod -type='json' -p='[{"op": "replace", "path": "/spec/c
|
|||||||
func NewCmdPatch(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdPatch(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &PatchOptions{}
|
options := &PatchOptions{}
|
||||||
|
|
||||||
|
// retrieve a list of handled resources from printer as valid args
|
||||||
|
validArgs, argAliases := []string{}, []string{}
|
||||||
|
p, err := f.Printer(nil, false, false, false, false, false, false, []string{})
|
||||||
|
cmdutil.CheckErr(err)
|
||||||
|
if p != nil {
|
||||||
|
validArgs = p.HandledResources()
|
||||||
|
argAliases = kubectl.ResourceAliases(validArgs)
|
||||||
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "patch (-f FILENAME | TYPE NAME) -p PATCH",
|
Use: "patch (-f FILENAME | TYPE NAME) -p PATCH",
|
||||||
Short: "Update field(s) of a resource using strategic merge patch.",
|
Short: "Update field(s) of a resource using strategic merge patch.",
|
||||||
@ -74,6 +83,8 @@ func NewCmdPatch(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
err := RunPatch(f, out, cmd, args, shortOutput, options)
|
err := RunPatch(f, out, cmd, args, shortOutput, options)
|
||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
},
|
},
|
||||||
|
ValidArgs: validArgs,
|
||||||
|
ArgAliases: argAliases,
|
||||||
}
|
}
|
||||||
cmd.Flags().StringP("patch", "p", "", "The patch to be applied to the resource JSON file.")
|
cmd.Flags().StringP("patch", "p", "", "The patch to be applied to the resource JSON file.")
|
||||||
cmd.MarkFlagRequired("patch")
|
cmd.MarkFlagRequired("patch")
|
||||||
|
Loading…
Reference in New Issue
Block a user