对这个Yaml等价的kubectl命令是什么?

时间:2018-11-13 16:58:38

标签: kubernetes kubectl rbac

我试图创建一个Role和RoleBinding,以便可以使用Helm。用什么等效的kubectl命令来创建以下资源?在我的场景中,使用命令行可使dev-ops更加简单。

角色

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager-foo
  namespace: foo
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]

角色绑定

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-binding-foo
  namespace: foo
subjects:
- kind: ServiceAccount
  name: tiller-foo
  namespace: foo
roleRef:
  kind: Role
  name: tiller-manager-foo
  apiGroup: rbac.authorization.k8s.io

更新

根据@ nightfury1204,我可以运行以下命令来创建Role

  

kubectl创建角色tiller-manager-foo --namespace foo --verb = * --resource = 。, .apps, .batch,   .extensions -n foo --dry-run -o yaml

这将输出:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: null
  name: tiller-manager-foo
rules:
- apiGroups:
  - ""
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - apps
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - batch
  resources:
  - '*'
  verbs:
  - '*'
- apiGroups:
  - extensions
  resources:
  - '*'
  verbs:
  - '*'

namespace丢失了,其次,这是对等的吗?

2 个答案:

答案 0 :(得分:3)

对于角色:

kubectl  create role tiller-manager-foo --verb=* --resource=*.batch,*.extensions,*.apps,*. -n foo
  

--resource=*支持在kubectl 1.12版本中添加

对于角色绑定:

kubectl create rolebinding tiller-binding-foo --role=tiller-manager-foo --serviceaccount=foo:tiller-foo -n foo

答案 1 :(得分:1)

kubectl apply -f可以提交任意Kubernetes YAML文件,就像您在问题中的文件一样。

在这里我特别建议您这样做,因为您可以将这些YAML文件提交到源代码管理中,并且如果您仍在使用Helm,则与您拥有的唯一Kubernetes YAML文件相距甚远。这甚至为您引导Helm设置提供了一条一致的路径。