Kubernetes “有什么区别?”;kubectl auth Reconfice”一词;及;kubectl apply”一词;用于使用RBAC?

Kubernetes “有什么区别?”;kubectl auth Reconfice”一词;及;kubectl apply”一词;用于使用RBAC?,kubernetes,roles,rbac,Kubernetes,Roles,Rbac,我有一些平均yaml文件定义了一些平均角色资源,所有yaml都应该反映我的资源的期望状态 为了让新的平均角色进入集群,我通常运行kubectl apply-f my new role.yaml 但现在我看到了这个(推荐的!?)备选方案kubectl auth reconcil-f我的新角色。yaml 好的,可能存在RBAC关系,即绑定,但是应用不应该做同样的事情吗 是否曾经有过这样一种情况,即更新(集群)角色,但不希望更新其相关(集群)绑定?Kubernetesv1.8中添加了kubectl a

我有一些平均yaml文件定义了一些平均角色资源,所有yaml都应该反映我的资源的期望状态

为了让新的平均角色进入集群,我通常运行
kubectl apply-f my new role.yaml
但现在我看到了这个(推荐的!?)备选方案
kubectl auth reconcil-f我的新角色。yaml

好的,可能存在RBAC关系,即绑定,但是应用不应该做同样的事情吗


是否曾经有过这样一种情况,即更新(集群)角色,但不希望更新其相关(集群)绑定?

Kubernetes
v1.8
中添加了
kubectl auth reconcile
命令行实用程序
正确应用RBAC权限是一项复杂的任务,因为您需要计算规则集之间的逻辑覆盖操作

如图所示:

使用kubectl auth reconcile-f文件添加了RBAC协调命令。当传递一个包含RBAC角色、角色绑定、clusterroles或clusterrolebindings的文件时,此命令计算覆盖范围并添加缺少的规则。正确应用RBAC权限所需的逻辑比JSON合并更复杂,因为您必须计算规则集之间的逻辑覆盖操作。这意味着我们不能使用kubectl apply来更新RBAC角色,而不冒破坏旧客户端(如控制器)的风险


kubectl auth confidence
命令将忽略所有不是
角色
角色绑定
集群角色
、和
集群角色绑定
对象的资源,因此您可以在全套清单上安全运行协调(请参阅:)


我创建了一个示例来演示
kubectl auth reconcile
命令的用处

我有一个简单的
secret reader
RoleBinding
,我想更改绑定的
roleRef
(我想更改此绑定所指的
角色):
注意:对不同角色的绑定是一种根本不同的绑定(请参见:)

正如我们所知,
roleRef
是不可变的,因此无法使用
kubectl apply
更新此
secret admin
RoleBinding

$ kubectl apply -f secret-admin.yml
The RoleBinding "secret-admin" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"Role", Name:"secret-creator"}: cannot change roleRef
相反,我们可以使用
kubectl auth confidence
。如果
RoleBinding
更新为新的
roleRef
,则
kubectl auth reconcile
命令将为我们处理删除/重新创建相关对象

$ kubectl auth reconcile -f secret-admin.yml
rolebinding.rbac.authorization.k8s.io/secret-admin reconciled
        reconciliation required recreate
此外,您还可以使用
--删除额外权限
--删除额外主题
选项

最后,我们可以检查是否所有内容都已成功更新:

$ kubectl describe rolebinding secret-admin
Name:         secret-admin
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  secret-creator
Subjects:
  Kind            Name               Namespace
  ----            ----               ---------
  ServiceAccount  service-account-1  default
$kubectl描述角色绑定秘密管理员
姓名:机密管理员
标签:
注释:
角色:
种类:角色
姓名:秘密创造者
学科:
类名称命名空间
----            ----               ---------
ServiceAccount service-account-1默认值

@siwasaki有进展吗?是这样吗?
$ kubectl describe rolebinding secret-admin
Name:         secret-admin
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  secret-creator
Subjects:
  Kind            Name               Namespace
  ----            ----               ---------
  ServiceAccount  service-account-1  default