Merge pull request #88133 from julianvmodesto/dry-run-tests
Cleanup --dry-run values in tests, docs, and scripts Kubernetes-commit: 641616362ddfbda68b135df861878022da7fae4a
This commit is contained in:
commit
a37fece401
|
@ -83,8 +83,8 @@ kubectl create secret generic my-secret --from-file=path/to/bar
|
||||||
{% endmethod %}
|
{% endmethod %}
|
||||||
|
|
||||||
{% panel style="success", title="Bootstrapping Config" %}
|
{% panel style="success", title="Bootstrapping Config" %}
|
||||||
Imperative commands can be used to bootstrap config by using `--dry-run -o yaml`.
|
Imperative commands can be used to bootstrap config by using `--dry-run=client -o yaml`.
|
||||||
`kubectl create secret generic my-secret --from-file=path/to/bar --dry-run -o yaml`
|
`kubectl create secret generic my-secret --from-file=path/to/bar --dry-run=client -o yaml`
|
||||||
{% endpanel %}
|
{% endpanel %}
|
||||||
|
|
||||||
{% method %}
|
{% method %}
|
||||||
|
|
|
@ -9,7 +9,7 @@ use cases, imperative porcelain commands may be helpful for development or debug
|
||||||
issues. These commands are particularly helpful for learning about Kubernetes when coming
|
issues. These commands are particularly helpful for learning about Kubernetes when coming
|
||||||
from an imperative system.
|
from an imperative system.
|
||||||
|
|
||||||
**Note:** Some imperative commands can be run with `--dry-run -o yaml` to display the declarative
|
**Note:** Some imperative commands can be run with `--dry-run=client -o yaml` to display the declarative
|
||||||
form.
|
form.
|
||||||
|
|
||||||
This section describes imperative commands that will generate or patch Resource Config.
|
This section describes imperative commands that will generate or patch Resource Config.
|
||||||
|
|
|
@ -29,7 +29,7 @@ List the Kubernetes *Deployment* Resources that are in the kube-system namespace
|
||||||
```bash
|
```bash
|
||||||
kubectl get deployments --namespace kube-system
|
kubectl get deployments --namespace kube-system
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
|
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
|
||||||
event-exporter-v0.2.3 1 1 1 1 14d
|
event-exporter-v0.2.3 1 1 1 1 14d
|
||||||
|
@ -51,7 +51,7 @@ Print detailed information about the kube-dns Deployment in the kube-system name
|
||||||
```bash
|
```bash
|
||||||
kubectl describe deployment kube-dns --namespace kube-system
|
kubectl describe deployment kube-dns --namespace kube-system
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Name: kube-dns
|
Name: kube-dns
|
||||||
Namespace: kube-system
|
Namespace: kube-system
|
||||||
|
@ -126,7 +126,7 @@ due to the serialization process of go objects.
|
||||||
|
|
||||||
{% sample lang="yaml" %}
|
{% sample lang="yaml" %}
|
||||||
```bash
|
```bash
|
||||||
kubectl create deployment nginx --dry-run -o yaml --image nginx
|
kubectl create deployment nginx --dry-run=client -o yaml --image nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
@ -73,7 +73,7 @@ func NewCmdCreateClusterRole(f cmdutil.Factory, ioStreams genericclioptions.IOSt
|
||||||
AggregationRule: map[string]string{},
|
AggregationRule: map[string]string{},
|
||||||
}
|
}
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run]",
|
Use: "clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: clusterRoleLong,
|
Short: clusterRoleLong,
|
||||||
Long: clusterRoleLong,
|
Long: clusterRoleLong,
|
||||||
|
|
|
@ -48,7 +48,7 @@ func NewCmdCreateClusterRoleBinding(f cmdutil.Factory, ioStreams genericclioptio
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]",
|
Use: "clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a ClusterRoleBinding for a particular ClusterRole"),
|
Short: i18n.T("Create a ClusterRoleBinding for a particular ClusterRole"),
|
||||||
Long: clusterRoleBindingLong,
|
Long: clusterRoleBindingLong,
|
||||||
|
|
|
@ -69,7 +69,7 @@ func NewCmdCreateConfigMap(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"cm"},
|
Aliases: []string{"cm"},
|
||||||
Short: i18n.T("Create a configmap from a local file, directory or literal value"),
|
Short: i18n.T("Create a configmap from a local file, directory or literal value"),
|
||||||
|
|
|
@ -50,7 +50,7 @@ func NewCmdCreateDeployment(f cmdutil.Factory, ioStreams genericclioptions.IOStr
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "deployment NAME --image=image [--dry-run]",
|
Use: "deployment NAME --image=image [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"deploy"},
|
Aliases: []string{"deploy"},
|
||||||
Short: i18n.T("Create a deployment with the specified name."),
|
Short: i18n.T("Create a deployment with the specified name."),
|
||||||
|
|
|
@ -48,7 +48,7 @@ func NewCmdCreateNamespace(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "namespace NAME [--dry-run]",
|
Use: "namespace NAME [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"ns"},
|
Aliases: []string{"ns"},
|
||||||
Short: i18n.T("Create a namespace with the specified name"),
|
Short: i18n.T("Create a namespace with the specified name"),
|
||||||
|
|
|
@ -53,7 +53,7 @@ func NewCmdCreatePodDisruptionBudget(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run]",
|
Use: "poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"pdb"},
|
Aliases: []string{"pdb"},
|
||||||
Short: i18n.T("Create a pod disruption budget with the specified name."),
|
Short: i18n.T("Create a pod disruption budget with the specified name."),
|
||||||
|
|
|
@ -38,7 +38,7 @@ var (
|
||||||
|
|
||||||
# Create a priorityclass named default-priority that considered as the global default priority
|
# Create a priorityclass named default-priority that considered as the global default priority
|
||||||
kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"
|
kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"
|
||||||
|
|
||||||
# Create a priorityclass named high-priority that can not preempt pods with lower priority
|
# Create a priorityclass named high-priority that can not preempt pods with lower priority
|
||||||
kubectl create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"`))
|
kubectl create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"`))
|
||||||
)
|
)
|
||||||
|
@ -55,7 +55,7 @@ func NewCmdCreatePriorityClass(f cmdutil.Factory, ioStreams genericclioptions.IO
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run]",
|
Use: "priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"pc"},
|
Aliases: []string{"pc"},
|
||||||
Short: i18n.T("Create a priorityclass with the specified name."),
|
Short: i18n.T("Create a priorityclass with the specified name."),
|
||||||
|
|
|
@ -51,7 +51,7 @@ func NewCmdCreateQuota(f cmdutil.Factory, ioStreams genericclioptions.IOStreams)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=bool]",
|
Use: "quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"resourcequota"},
|
Aliases: []string{"resourcequota"},
|
||||||
Short: i18n.T("Create a quota with the specified name."),
|
Short: i18n.T("Create a quota with the specified name."),
|
||||||
|
|
|
@ -152,7 +152,7 @@ func NewCmdCreateRole(f cmdutil.Factory, ioStreams genericclioptions.IOStreams)
|
||||||
o := NewCreateRoleOptions(ioStreams)
|
o := NewCreateRoleOptions(ioStreams)
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run]",
|
Use: "role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: roleLong,
|
Short: roleLong,
|
||||||
Long: roleLong,
|
Long: roleLong,
|
||||||
|
|
|
@ -48,7 +48,7 @@ func NewCmdCreateRoleBinding(f cmdutil.Factory, ioStreams genericclioptions.IOSt
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]",
|
Use: "rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a RoleBinding for a particular Role or ClusterRole"),
|
Short: i18n.T("Create a RoleBinding for a particular Role or ClusterRole"),
|
||||||
Long: roleBindingLong,
|
Long: roleBindingLong,
|
||||||
|
|
|
@ -85,7 +85,7 @@ func NewCmdCreateSecretGeneric(f cmdutil.Factory, ioStreams genericclioptions.IO
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
Use: "generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a secret from a local file, directory or literal value"),
|
Short: i18n.T("Create a secret from a local file, directory or literal value"),
|
||||||
Long: secretLong,
|
Long: secretLong,
|
||||||
|
@ -172,7 +172,7 @@ func NewCmdCreateSecretDockerRegistry(f cmdutil.Factory, ioStreams genericcliopt
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-literal=key1=value1] [--dry-run]",
|
Use: "docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-literal=key1=value1] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a secret for use with a Docker registry"),
|
Short: i18n.T("Create a secret for use with a Docker registry"),
|
||||||
Long: secretForDockerRegistryLong,
|
Long: secretForDockerRegistryLong,
|
||||||
|
@ -265,7 +265,7 @@ func NewCmdCreateSecretTLS(f cmdutil.Factory, ioStreams genericclioptions.IOStre
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run]",
|
Use: "tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a TLS secret"),
|
Short: i18n.T("Create a TLS secret"),
|
||||||
Long: secretForTLSLong,
|
Long: secretForTLSLong,
|
||||||
|
|
|
@ -73,7 +73,7 @@ func NewCmdCreateServiceClusterIP(f cmdutil.Factory, ioStreams genericclioptions
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run]",
|
Use: "clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a ClusterIP service."),
|
Short: i18n.T("Create a ClusterIP service."),
|
||||||
Long: serviceClusterIPLong,
|
Long: serviceClusterIPLong,
|
||||||
|
@ -147,7 +147,7 @@ func NewCmdCreateServiceNodePort(f cmdutil.Factory, ioStreams genericclioptions.
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "nodeport NAME [--tcp=port:targetPort] [--dry-run]",
|
Use: "nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a NodePort service."),
|
Short: i18n.T("Create a NodePort service."),
|
||||||
Long: serviceNodePortLong,
|
Long: serviceNodePortLong,
|
||||||
|
@ -218,7 +218,7 @@ func NewCmdCreateServiceLoadBalancer(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "loadbalancer NAME [--tcp=port:targetPort] [--dry-run]",
|
Use: "loadbalancer NAME [--tcp=port:targetPort] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create a LoadBalancer service."),
|
Short: i18n.T("Create a LoadBalancer service."),
|
||||||
Long: serviceLoadBalancerLong,
|
Long: serviceLoadBalancerLong,
|
||||||
|
@ -291,7 +291,7 @@ func NewCmdCreateServiceExternalName(f cmdutil.Factory, ioStreams genericcliopti
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "externalname NAME --external-name external.name [--dry-run]",
|
Use: "externalname NAME --external-name external.name [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Create an ExternalName service."),
|
Short: i18n.T("Create an ExternalName service."),
|
||||||
Long: serviceExternalNameLong,
|
Long: serviceExternalNameLong,
|
||||||
|
|
|
@ -48,7 +48,7 @@ func NewCmdCreateServiceAccount(f cmdutil.Factory, ioStreams genericclioptions.I
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "serviceaccount NAME [--dry-run]",
|
Use: "serviceaccount NAME [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Aliases: []string{"sa"},
|
Aliases: []string{"sa"},
|
||||||
Short: i18n.T("Create a service account with the specified name"),
|
Short: i18n.T("Create a service account with the specified name"),
|
||||||
|
|
|
@ -62,7 +62,7 @@ var (
|
||||||
kubectl rollout undo daemonset/abc --to-revision=3
|
kubectl rollout undo daemonset/abc --to-revision=3
|
||||||
|
|
||||||
# Rollback to the previous deployment with dry-run
|
# Rollback to the previous deployment with dry-run
|
||||||
kubectl rollout undo --dry-run=true deployment/abc`)
|
kubectl rollout undo --dry-run=server deployment/abc`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewRolloutUndoOptions returns an initialized UndoOptions instance
|
// NewRolloutUndoOptions returns an initialized UndoOptions instance
|
||||||
|
|
|
@ -299,7 +299,7 @@ func (o *RunOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []string) e
|
||||||
}
|
}
|
||||||
|
|
||||||
if o.Attach && o.DryRunStrategy != cmdutil.DryRunNone {
|
if o.Attach && o.DryRunStrategy != cmdutil.DryRunNone {
|
||||||
return cmdutil.UsageErrorf(cmd, "--dry-run can't be used with attached containers options (--attach, --stdin, or --tty)")
|
return cmdutil.UsageErrorf(cmd, "--dry-run=[server|client] can't be used with attached containers options (--attach, --stdin, or --tty)")
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := verifyImagePullPolicy(cmd); err != nil {
|
if err := verifyImagePullPolicy(cmd); err != nil {
|
||||||
|
|
|
@ -72,8 +72,8 @@ var (
|
||||||
Note: currently selectors can only be set on Service objects.`)
|
Note: currently selectors can only be set on Service objects.`)
|
||||||
selectorExample = templates.Examples(`
|
selectorExample = templates.Examples(`
|
||||||
# set the labels and selector before creating a deployment/service pair.
|
# set the labels and selector before creating a deployment/service pair.
|
||||||
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
|
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f -
|
||||||
kubectl create deployment my-dep -o yaml --dry-run | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -`)
|
kubectl create deployment my-dep -o yaml --dry-run=client | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -`)
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewSelectorOptions returns an initialized SelectorOptions instance
|
// NewSelectorOptions returns an initialized SelectorOptions instance
|
||||||
|
|
|
@ -48,7 +48,7 @@ var (
|
||||||
kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
|
kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
|
||||||
|
|
||||||
# Print the result (in yaml format) of updating rolebinding subjects from a local, without hitting the server
|
# Print the result (in yaml format) of updating rolebinding subjects from a local, without hitting the server
|
||||||
kubectl create rolebinding admin --role=admin --user=admin -o yaml --dry-run | kubectl set subject --local -f - --user=foo -o yaml`)
|
kubectl create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | kubectl set subject --local -f - --user=foo -o yaml`)
|
||||||
)
|
)
|
||||||
|
|
||||||
type updateSubjects func(existings []rbacv1.Subject, targets []rbacv1.Subject) (bool, []rbacv1.Subject)
|
type updateSubjects func(existings []rbacv1.Subject, targets []rbacv1.Subject) (bool, []rbacv1.Subject)
|
||||||
|
@ -93,7 +93,7 @@ func NewSubjectOptions(streams genericclioptions.IOStreams) *SubjectOptions {
|
||||||
func NewCmdSubject(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
|
func NewCmdSubject(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
|
||||||
o := NewSubjectOptions(streams)
|
o := NewSubjectOptions(streams)
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run]",
|
Use: "subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]",
|
||||||
DisableFlagsInUseLine: true,
|
DisableFlagsInUseLine: true,
|
||||||
Short: i18n.T("Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding"),
|
Short: i18n.T("Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding"),
|
||||||
Long: subjectLong,
|
Long: subjectLong,
|
||||||
|
|
Loading…
Reference in New Issue