kubectl сообщает о значении пространства имен, требуемом в файле манифеста

#kubernetes #kubectl

#kubernetes #kubectl

Вопрос:

В чем проблема с моим файлом манифеста?

 cat manifests/node-exporter-clusterRoleBinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: node-exporter
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: node-exporter
subjects:
- kind: ServiceAccount
  name: node-exporter

cat manifests/kube-state-metrics-clusterRoleBinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kube-state-metrics
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kube-state-metrics
subjects:
- kind: ServiceAccount
  name: kube-state-metrics
 

Если я применяю этот манифест к пространству имен, я получаю сообщение об ошибке, как показано ниже:

 
kubectl -f manifests/kube-state-metrics-clusterRoleBinding.yaml -n test-monitoring

The ClusterRoleBinding "node-exporter" is invalid: subjects[0].namespace: Required value

kubectl apply -f manifests/kube-state-metrics-clusterRoleBinding.yaml -n test-monitoring

The ClusterRoleBinding "kube-state-metrics" is invalid: subjects[0].namespace: Required value
 

Есть проблемы с файлами манифестов?

Ответ №1:

Поскольку a ServiceAccount является объектом с пространством имен, вам необходимо явно добавить namespace из ServiceAccount as:

 subjects:
- kind: ServiceAccount
  name: kube-state-metrics
  namespace: <namespace-of-kube-state-metrics-serviceaccount>