Файл манифеста Kubernetes не преобразуется из YML в JSON

Я создал файл манифеста 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: получен "массив", ожидается " карта"; если вы решите игнорировать эти ошибки, отключите проверку с помощью --validate=false.

Благодарю вас!


person Sk Snat    schedule 21.08.2019    source источник
comment
неправильная идентификация в ClusterRoleBindingsubjects... Атрибут name и namespaces должны следовать за kind идентификацией.   -  person gonzalesraul    schedule 21.08.2019
comment
Дополнительный совет: запуск kubectl create clusterrolebinding read-only-api --clusterrole=read-only-api --serviceaccount=test:test-service-account -o yaml --dry-run напечатает (пробный запуск) допустимую привязку кластерной роли с предоставленной вами информацией.   -  person gonzalesraul    schedule 21.08.2019
comment
Спасибо @gonzalesraul, который решил мою проблему.   -  person Sk Snat    schedule 21.08.2019


Ответы (1)


сервисный аккаунт yaml в порядке

исправьте кластерную роль и кластерную привязку 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
person P Ekambaram    schedule 21.08.2019