【问题标题】:What are the equivelant kubectl commands to this yaml?这个 yaml 的等效 kubectl 命令是什么?
【发布时间】:2019-04-16 13:57:39
【问题描述】:

我正在尝试创建 Role 和 RoleBinding,以便可以使用 Helm。创建以下资源的等效kubectl 命令是什么?在我的场景中,使用命令行使开发操作更简单。

角色

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 create role 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 不见了,其次,这是等价的吗?

【问题讨论】:

    标签: kubernetes kubectl rbac


    【解决方案1】:

    角色:

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

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

    对于角色绑定:

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

    【讨论】:

    • 对于Role,缺少namespace,当我运行kubectl create role tiller-manager-foo --namespace foo --verb=* --resource=*.,*.apps,*.batch,*. extensions -n foo --dry-run -o yaml 时-n 似乎不起作用。
    • -n foo 为我工作(我刚刚测试过)。此外,您必须在集群中有 foo 命名空间。如果-n不起作用,那么你可以使用--namespace
    • 另外--dry-run 不包括命名空间。有与此相关的问题:github.com/kubernetes/kubernetes/issues/51068
    • 谢谢你的链接,你是老板!
    【解决方案2】:

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

    我在这里特别建议这样做,因为您可以将这些 YAML 文件提交到源代码控制,如果您仍然使用 Helm,那么这远非您拥有的唯一 Kubernetes YAML 文件。这为您提供了一条一致的路径,甚至可以引导您的 Helm 设置。

    【讨论】:

    • 如果您有想要的特定对象定义,强烈建议从清单创建它们
    • 唯一的麻烦是,我想为 CI/CD 目的进行变量替换。如果我可以使用一些kubectl 命令会容易得多。
    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 2015-06-10
    • 2013-05-17
    • 2011-10-16
    • 2012-02-29
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    相关资源
    最近更新 更多