Kubernetes(k8s) kubectl auth常用命令

kubectl 在 $HOME/.kube 目录中查找一个名为 config 的配置文件。 可以通过设置 KUBECONFIG 环境变量或设置 --kubeconfig 参数来指定其它 kubeconfig 文件。本文主要介绍Kubernetes(K8s)中kubectl auth常用命令。

1、kubectl auth简介

kubectl auth可以检查授权。

kubectl auth can-i检查操作是否被允许。VERB是Kubernetes API的一个逻辑动词,如"get"、"list"、"watch"、"delete"等。TYPE是Kubernetes资源。快捷方式和分组将被解决。NONRESOURCEURL是一个以"/"开头的部分URL。NAME是特定Kubernetes资源的名称。

kubectl auth reconcile协调RBAC角色、角色绑定、集群角色和集群角色绑定对象的规则。
如果需要,将创建缺失的对象,并为名称空间对象创建包含名称空间的名称空间。
现有的角色将被更新以包括输入对象中的权限,如果指定了-remove-extra-permissions,则删除额外的权限。
现有的绑定将更新为在输入对象中包含主题,如果指定了-remove-extra-subjects,则删除额外的主题更适合于“应用”RBAC资源,以便完成具有语义意识的规则和主题合并。

2、kubectl auth语法

kubectl auth can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]
kubectl auth reconcile -f FILENAME

3、kubectl auth命令

1)检查我是否可以在任何命名空间中创建pod

kubectl auth can-i create pods --all-namespaces

2)检查是否可以在当前名称空间中列出部署

kubectl auth can-i list deployments.apps

3)检查是否可以在当前名称空间中执行所有操作('*'表示所有)

kubectl auth can-i '*' '*'

4)检查看看我是否可以在命名空间"cjavapy"中获得名为"spider"的作业

kubectl auth can-i list jobs.batch/cjavapy -n spider

5)查看我能不能读取pod日志

kubectl auth can-i get pods --subresource=log

6)检查我是否可以访问URL /logs/

kubectl auth can-i get /logs/

7)列出命名空间"cjavapy"中所有允许的操作

kubectl auth can-i --list --namespace=cjavapy

8)协调文件中的RBAC资源

kubectl auth reconcile -f my-rbac-rules.yaml

4、选项说明

1)kubectl auth can-i选项

名称

简称

默认

用法

all-namespaces

A

false

如果为true,

在所有名称空间中检查指定的操作。

list

false

如果为true,

则打印所有允许的操作。

no-headers

false

如果为true,

则打印允许的无标头操作.

quiet

q

false

如果为true,

则抑制输出并只返回退出代码。

subresource

SubResource,

如pod/log或deployment/scale

2)kubectl auth reconcile选项

名称

简称

默认

用法

allow-missing-template-keys

true

如果为true,

当模板中缺少字段或映射键时,

忽略模板中的任何错误。

只适用于golang和jsonpath输出格式。

dry-run

none

必须为“none”、“server”或“client”。

如果客户端策略,

则只打印将要发送的对象,

而不发送它。如果是服务器策略,

则提交服务器端请求而不持久化资源。

filename

f

[]

标识要协调的资源的文件的文件名、目录或URL。

kustomize

k

处理定制化目录。

此标志不能与-f或-R一起使用。

output

o

l输出格式, 以下之一: json|yaml|name|

go-template|go-template-file|template|

templatefile|jsonpath|jsonpath-as-json|

jsonpath-file.

recursive

R

false

递归处理-f, --filename 中使用的目录。

当想要管理组织在同一目录中的相关清单时使用。

remove-extra-permissions

false

如果为true,

则删除添加到角色中的额外权限

remove-extra-subjects

false

如果为true,

则删除添加到角色绑定的额外subjects

show-managed-fields

false

如果为true,

则在以JSON或YAML格式打印对象时

保留managedFields。

template

当-o=go-template, -o=go-template-file时

要使用的模板文件的模板字符串或路径。

模板格式为 golang templates [

http://golang.org/pkg/text/template/#pkg-overview

].

推荐阅读
cjavapy编程之路首页