Настройка конвейера выпуска kubernetes + istio с помощью terraform + helm дает запрещенную ошибку - PullRequest
0 голосов
/ 03 апреля 2019

Я уже очень много раз пытался настроить этот конвейер в devops Azure, где я хочу развернуть кластер AKS и поместить istio поверх.

Развертывание AKS с использованием Terraform прекрасно работает.

После этого я пытаюсь установить istio с помощью helm, но команда, которую я использую, выдает запрещенную ошибку.

helm.exe install --namespace istio-system --name istio-init --wait C:\Istio\install\kubernetes\helm\istio

Я использовал локальный путь, так как это был единственный хороший способ найти для helm схему istio, которая есть у меня в агенте сборки.

Сообщение об ошибке

Error: release istio-init failed: clusterroles.rbac.authorization.k8s.io "istio-galley-istio-system" is forbidden: attempt to grant extra privileges: [{[*] [admissionregistration.k8s.io] [validatingwebhookconfigurations] [] []} {[get] [config.istio.io] [*] [] []} {[list] [config.istio.io] [*] [] []} {[watch] [config.istio.io] [*] [] []} {[get] [*] [deployments] [istio-galley] []} {[get] [*] [endpoints] [istio-galley] []}] user=&{system:serviceaccount:kube-system:tillerserviceaccount 56632fa4-55e7-11e9-a4a1-9af49f3bf03a [system:serviceaccounts system:serviceaccounts:kube-system system:authenticated] map[]} ownerrules=[] ruleResolutionErrors=[[clusterroles.rbac.authorization.k8s.io "cluster-admin" not found, clusterroles.rbac.authorization.k8s.io "system:discovery" not found, clusterroles.rbac.authorization.k8s.io "cluster-admin" not found, clusterroles.rbac.authorization.k8s.io "system:discovery" not found, clusterroles.rbac.authorization.k8s.io "system:discovery" not found, clusterroles.rbac.authorization.k8s.io "cluster-admin" not found]]

Служебная учетная запись, которую я использую (system: serviceaccount: kube-system: tillerserviceaccount, как вы можете видеть в сообщении об ошибке), конфигурируется с помощью этой конфигурации rbac:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tillerserviceaccount
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tillerbinding
roleRef:
  apiGroup: ""
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tillerserviceaccount
    namespace: kube-system

Тем не менее сообщение об ошибке говорит в ruleResolutionErrors, что оно ищет cluster-admin, но оно не найдено.

Я даже попытался сделать крайнее и установил все учетные записи служб в качестве администраторов кластера для проверки:

kubectl create clusterrolebinding serviceaccounts-admins --clusterrole=cluster-admin --group=system:serviceaccounts

Но даже после этого я получаю ту же ошибку с тем же правилом ResolutionErrors.

Я застрял и ценю любую помощь в том, что я могу сделать по-другому.

1 Ответ

1 голос
/ 03 апреля 2019

это ролевая привязка, которую мы используем в кластерах dev:

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: tillerbinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tillerserviceaccount
    namespace: kube-system

edit: в этом случае ошибка произошла из-за AKS, созданного без RBAC.

...