- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些平均 yaml 文件定义了一些平均角色资源,所有 yaml 都应该反射(reflect)我的资源所需的状态。
为了让新的平均角色进入集群,我通常运行 kubectl apply -f my-new-role.yaml
但现在我看到了这个(推荐!?)替代kubectl auth reconcile -f my-new-role.yaml
好的,可能存在 RBAC 关系,即绑定(bind),但不应该是 申请做同样的事情?
是否有过更新(集群)角色但不希望更新其相关(集群)绑定(bind)的情况?
最佳答案
kubectl auth reconcile
Kubernetes 中添加了命令行实用程序 v1.8
.
正确应用 RBAC 权限是一项复杂的任务,因为您需要计算规则集之间的逻辑覆盖操作。
正如您在 CHANGELOG-1.8.md 中看到的那样:
Added RBAC reconcile commands with kubectl auth reconcile -f FILE. When passed a file which contains RBAC roles, rolebindings, clusterroles, or clusterrolebindings, this command computes covers and adds the missing rules. The logic required to properly apply RBAC permissions is more complicated than a JSON merge because you have to compute logical covers operations between rule sets. This means that we cannot use kubectl apply to update RBAC roles without risking breaking old clients, such as controllers.
kubectl auth reconcile
命令将忽略任何不是
Role
的资源,
RoleBinding
,
ClusterRole
, 和
ClusterRoleBinding
对象,因此您可以安全地在全套 list 上运行协调(参见:
Use 'kubectl auth reconcile' before 'kubectl apply')
kubectl auth reconcile
的有用性。命令是。
secret-reader
RoleBinding
我想更改绑定(bind)的
roleRef
(我想更改此绑定(bind)所指的
Role
):
# BEFORE
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: secret-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: secret-reader
subjects:
- kind: ServiceAccount
name: service-account-1
namespace: default
# AFTER
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: secret-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: secret-creator
subjects:
- kind: ServiceAccount
name: service-account-1
namespace: default
我们知道,
roleRef
是不可变的,因此无法更新
secret-admin
RoleBinding
使用
kubectl apply
:
$ 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 reconcile
.如果一个
RoleBinding
已更新为新的
roleRef
,
kubectl auth reconcile
命令为我们处理删除/重新创建相关对象。
$ kubectl auth reconcile -f secret-admin.yml
rolebinding.rbac.authorization.k8s.io/secret-admin reconciled
reconciliation required recreate
此外,您可以使用
--remove-extra-permissions
和
--remove-extra-subjects
选项。
$ 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
关于kubernetes - 使用 RBAC 时, "kubectl auth reconcile"和 "kubectl apply"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66805649/
使用 Config View 获取以下输出。注意没有“当前上下文” root@Bootstrap [ /etc ]# kubectl config view apiVersion: v1 cluste
最近在学习Kubernetes,对“kubectl apply”和“kubectl replace”的区别不是很清楚。有没有我们只能使用其中一种的情况? 最佳答案 我已经写了一篇关于 apply、re
我想使用单个 kubectl patch 命令修补 Kubernetes 部署中的所有 容器模板,而不必知道它们的名称。这可能吗? 我知道我可以通过awk、sed、jq和kubectl replace
我能找到的唯一两种身份验证方法是创建一个新的身份验证上下文,例如 kubectl config set-credentials gajus/foo --token=foo kubectl config
我正在尝试使用 kubectl -o jsonpath 从服务 yaml(在元数据注释下)检索 kubernetes last-applied-configuration,但该字段的名称是“kubec
我在 k8s 中已有部署,我想更新容器,我在部署和运行中更新了 docker 镜像标签(新的唯一 ID): kubectl apply -f testdeploy.yml --namespace=my
我正在尝试在 kubectl 中使用 kustomize。具体来说,我想知道等效的 kubectl 命令: kustomize build --load_restrictor LoadRestrict
对于每个带有kubectl的命令,我需要使用sudo kubectl。 我了解安全性观点,但是我正在测试环境中工作,并且希望能够不使用sudo来使用它。 我尝试运行sudo -i并使用root帐户运行
如何在 YAML 文件中使用环境变量? 我正在使用 kubectl 创建命名空间,并想知道如何使用变量而不是 testnamespace喜欢 name: $var apiVersion: v1 kin
我使用 Mac OS 作为开发环境。 如果我安装 minikube , kubectl将使用 minikube 制作的本地集群作为默认选项。我发现我可以使用 kubectl命令与 minikube前缀
我对文档的理解是: kubectl create 在集群中创建新的 k8s 资源 kubectl replace 更新实时集群中的资源 kubectl apply 如果我想做创建+替换 ( Refer
我是 k8s 新手,在这里遇到了一个小问题。 上下文如下:我需要每天通过 crontask 调用 kubectl delete [podname] 一次,并等到 k8s 重新创建 pod,然后登录到该
通过使用kubectl exec -ti POD_NAME bash我能够访问容器内的终端并执行命令。 我能理解上面命令的可用性和方便性。作为 K8s 运算符(operator),我经常使用 exec
我是 kubernetes 的新手,正在尝试了解何时使用 kubectl autoscale 和 kubectl scale 命令 最佳答案 部署中的 规模 表示应始终运行多少 pod 以确保应用程序
我用 kubectl create -f pod.xml 创建了一个 pod和 kubectl apply -f pod.xml使用下面的 yaml,我没有看到任何区别,使用这两个命令创建了一个 po
我一直在使用带有各种标志的“kubectl run”以交互方式运行作业,但最近我已经超出了我可以用这些标志做的事情,并且已经逐渐使用 YAML 配置文件来描述我的工作。 但是,我找不到与“-i”和“-
在reference docs ,他们说您可以像这样打印容器的图像。 kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.contai
我正在使用 kubectl 来控制 Azure 上的 Kubernetes 服务(扩展、获取 pod 状态)。在生产脚本中自动调用 kubectl 是否安全,而不用担心凭证会过期? 这是我在生产服务器
我正在尝试使用 kubeadm 工具创建一个高可用性集群。我正在尝试安装 kubeadm 安装的先决条件中指定的工具。当我运行时 sudo apt-get install -y kubelet kub
我的 CI 工具使用生命周期,所以如果 Dev 部署有效,它会进入 QA。 我有一个端到端的测试容器,我想在 kubernetes 中运行,但是如何从容器中获取退出代码? 我可以以某种方式运行容器并在
我是一名优秀的程序员,十分优秀!