[root@master ~]# kubectl create --helpCreate a resource from a file or from stdin. JSON and YAML formats are accepted.Examples: # Create a pod using the data in pod.json. kubectl create -f ./pod.json # Create a pod based on the JSON passed into stdin. cat pod.json | kubectl create -f - # Edit the data in docker-registry.yaml in JSON then create the resource using the edited data. kubectl create -f docker-registry.yaml --edit -o jsonAvailable Commands: clusterrole Create a ClusterRole. clusterrolebinding Create a ClusterRoleBinding for a particular ClusterRole configmap Create a configmap from a local file, directory or literal value cronjob Create a cronjob with the specified name. deployment Create a deployment with the specified name. job Create a job with the specified name. namespace Create a namespace with the specified name poddisruptionbudget Create a pod disruption budget with the specified name. priorityclass Create a priorityclass with the specified name. quota Create a quota with the specified name. role Create a role with single rule. rolebinding Create a RoleBinding for a particular Role or ClusterRole secret Create a secret using specified subcommand service Create a service using specified subcommand. serviceaccount Create a service account with the specified nameOptions: --allow-missing-template-keys=true: If true, ignore any errors in templates when a field or map key is missing inthe template. Only applies to golang and jsonpath output formats. --dry-run='none': Must be "none", "server", or "client". If client strategy, only print the object that would besent, without sending it. If server strategy, submit server-side request without persisting the resource. --edit=false: Edit the API resource before creating -f, --filename=[]: Filename, directory, or URL to files to use to create the resource -k, --kustomize='': Process the kustomization directory. This flag can't be used together with -f or -R. -o, --output='': Output format. One of:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file. --raw='': Raw URI to POST to the server. Uses the transport specified by the kubeconfig file. --record=false: Record current kubectl command in the resource annotation. If set to false, do not record thecommand. If set to true, record the command. If not set, default to updating the existing annotation value only if onealready exists. -R, --recursive=false: Process the directory used in -f, --filename recursively. Useful when you want to managerelated manifests organized within the same directory. --save-config=false: If true, the configuration of current object will be saved in its annotation. Otherwise, theannotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future. -l, --selector='': Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2) --template='': Template string or path to template file to use when -o=go-template, -o=go-template-file. Thetemplate format is golang templates [http://golang.org/pkg/text/template/#pkg-overview]. --validate=true: If true, use a schema to validate the input before sending it --windows-line-endings=false: Only relevant if --edit=true. Defaults to the line ending native to your platform.Usage: kubectl create -f FILENAME [options]Use "kubectl <command> --help" for more information about a given command.Use "kubectl options" for a list of global command-line options (applies to all commands).[root@master ~]#
[root@master ~]# kubectl create clusterrole --helpCreate a ClusterRole.Examples: # Create a ClusterRole named "pod-reader" that allows user to perform "get", "watch" and "list" on pods kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods # Create a ClusterRole named "pod-reader" with ResourceName specified kubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod--resource-name=anotherpod # Create a ClusterRole named "foo" with API Group specified kubectl create clusterrole foo --verb=get,list,watch --resource=rs.extensions # Create a ClusterRole named "foo" with SubResource specified kubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status # Create a ClusterRole name "foo" with NonResourceURL specified kubectl create clusterrole "foo" --verb=get --non-resource-url=/logs/* # Create a ClusterRole name "monitoring" with AggregationRule specified kubectl create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"Options: --aggregation-rule=: An aggregation label selector for combining ClusterRoles. --allow-missing-template-keys=true: If true, ignore any errors in templates when a field or map key is missing inthe template. Only applies to golang and jsonpath output formats. --dry-run='none': Must be "none", "server", or "client". If client strategy, only print the object that would besent, without sending it. If server strategy, submit server-side request without persisting the resource. --non-resource-url=[]: A partial url that user should have access to. -o, --output='': Output format. One of:json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-file. --resource=[]: Resource that the rule applies to --resource-name=[]: Resource in the white list that the rule applies to, repeat this flag for multiple items --save-config=false: If true, the configuration of current object will be saved in its annotation. Otherwise, theannotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future. --template='': Template string or path to template file to use when -o=go-template, -o=go-template-file. Thetemplate format is golang templates [http://golang.org/pkg/text/template/#pkg-overview]. --validate=true: If true, use a schema to validate the input before sending it --verb=[]: Verb that applies to the resources contained in the ruleUsage: kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename][--dry-run=server|client|none] [options]Use "kubectl options" for a list of global command-line options (applies to all commands).[root@master ~]#
[root@master ~]# kubectl create namespace app-team1namespace/app-team1 created[root@master ~]# kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsetsclusterrole.rbac.authorization.k8s.io/deployment-clusterrole created[root@master ~]# kubectl create serviceaccount cicd-token --namespace=app-team1 serviceaccount/cicd-token created[root@master ~]# kubectl create rolebinding deployment-clusterole --clusterrole=deployment=clusterrole --serviceaccount=app-team1:cicd-token --namespace=app-team1rolebinding.rbac.authorization.k8s.io/deployment-clusterole created[root@master ~]#
[root@master ~]# kubectl get rolebindings.rbac.authorization.k8s.io -n app-team1 NAME ROLE AGEdeployment-clusterole ClusterRole/deployment=clusterrole 4m50s[root@master ~]# kubectl describe rolebindings.rbac.authorization.k8s.io -n app-team1 Name: deployment-clusteroleLabels: <none>Annotations: <none>Role: Kind: ClusterRole Name: deployment=clusterroleSubjects: Kind Name Namespace ---- ---- --------- ServiceAccount cicd-token app-team1[root@master ~]# kubectl describe serviceaccounts cicd-token -n app-team1 Name: cicd-tokenNamespace: app-team1Labels: <none>Annotations: <none>Image pull secrets: <none>Mountable secrets: cicd-token-token-jbpjdTokens: cicd-token-token-jbpjdEvents: <none>[root@master ~]#[root@master ~]# kubectl describe clusterrole deployment-clusterrole -n app-team1 Name: deployment-clusterroleLabels: <none>Annotations: <none>PolicyRule: Resources Non-Resource URLs Resource Names Verbs --------- ----------------- -------------- ----- daemonsets.apps [] [] [create] deployments.apps [] [] [create] statefulsets.apps [] [] [create][root@master ~]#