【问题标题】:Kubernetes Manifest file won't convert from YML to JSONKubernetes Manifest 文件不会从 YAML 转换为 JSON
【发布时间】:2019-08-21 09:30:51
【问题描述】:

我创建了一个 Kubernetes 清单文件来创建服务帐户和角色。看起来是这样的:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: test-service-account
  namespace: test
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: read-only-api
rules:
  - apiGroups:
      - ""
    resources: ["*"]
    verbs:
      - get
      - list
      - watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: read-only-api
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: read-only-api
subjects:
  - kind: ServiceAccount
  name: test-service-account
  namespace: test

但是,当我尝试执行和应用清单时,我收到了这个错误。我不确定我是否有缩进或其他问题。

解析 service-account.yml 时出错:将 YAML 转换为 JSON 时出错:yaml:第 10 行:未找到预期的“-”指示符

非常感谢所有帮助。我试过来回缩进它,将“-”指示符添加到它抱怨的特定行 - 但随后我收到一条新的错误消息:

验证“service-account.yml”时出错:验证数据时出错:ValidationError(ClusterRole.metadata):io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta 的类型无效:得到“array” ,预期的“地图”;如果您选择忽略这些错误,请使用 --validate=false

关闭验证

谢谢!

【问题讨论】:

  • ClusterRoleBinding 的错误标识 > subjects... name 属性和 namespaces 必须遵循 kind 标识。
  • 额外提示:运行kubectl create clusterrolebinding read-only-api --clusterrole=read-only-api --serviceaccount=test:test-service-account -o yaml --dry-run 将使用您提供的信息打印(试运行)一个有效的集群角色绑定
  • 感谢@gonzalesraul 解决了我的问题。

标签: docker kubernetes docker-for-mac


【解决方案1】:

服务帐号 yaml 没问题

正确的clusterrole和clusterrolebinding yaml如下

apiVersion: v1
kind: ServiceAccount
metadata:
  name: test-service-account
  namespace: test
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: read-only-api
rules:
- apiGroups:
  - ""
  resources:
  - "*"
  verbs:
  - get
  - list
  - watch
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: read-only-api
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: read-only-api
subjects:
- kind: ServiceAccount
  name: test-service-account
  namespace: test
master $ kubectl create ns test
namespace/test created

serviceaccount/test-service-account created
clusterrole.rbac.authorization.k8s.io/read-only-api created
clusterrolebinding.rbac.authorization.k8s.io/read-only-api created

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2021-02-19
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多