Lors de l'installation d'un package helm, j'ai l'erreur suivante comme celle-ci:
[root@k8s-master3 ~]# helm install --name nginx stable/nginx-ingress
Error: release nginx failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Voici ma version de la barre:
[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Et ma version kubectl:
[root@k8s-master3 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.1-alicloud", GitCommit:"19408ab2a1b736fe97a9d9cf24c6fb228f23f12f", GitTreeState:"clean", BuildDate:"2017-10-19T04:05:24Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-11T23:16:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Toute aide sera appréciée, merci beaucoup!
Il semble que vous ayez rencontré un problème lié aux privilèges.
Vous pouvez activer rbac lors du déploiement du graphique:
$ helm install --name nginx --set rbac.create=true stable/nginx-ingress
@ flyer103
Cela ne peut toujours pas fonctionner.
Même problème ici. L'activation de rbac n'aide pas.
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-10T13:17:12Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.2", GitCommit:"bdaeafa71f6c7c04636251031f93464384d54963", GitTreeState:"clean", BuildDate:"2017-10-24T19:38:10Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
$ helm install --name my-hdfs-namenode hdfs-namenode-k8s
Error: release my-hdfs-namenode failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Une aide serait vraiment appréciée!
Ce que vous devez faire est d'accorder à tiller (via le compte de service par défaut) l'accès pour installer les ressources dans l'espace de noms par défaut. Voir https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md
Salut, @bacongobbler
Merci pour l'aide. Je suis vos instructions mentionnées ci-dessus et j'ai fait les choses suivantes:
Tout d'abord, je réinitialise le timon:
helm reset --force
Après cela, je crée un fichier yaml RBAC:
[root@k8s-master3 ~]# cat rbac-config.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: default
Et puis lancez ma barre:
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.7.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
Cependant, le timon n'est pas installé avec succès:
[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Error: cannot connect to Tiller
Et je coud les déploiements dans l'espace kube-system
noms
[root@k8s-master3 ~]# kubectl get deployments --all-namespaces
NAMESPACE NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
ci jenkins 1 1 1 1 5d
default redis-master 1 1 1 0 4d
kube-system default-http-backend 1 1 1 1 5d
kube-system heapster 1 1 1 1 5d
kube-system kube-dns 1 1 1 1 5d
kube-system kubernetes-dashboard 1 1 1 1 5d
kube-system monitoring-influxdb 1 1 1 1 5d
kube-system nginx-ingress-controller 1 1 1 1 5d
kube-system tiller-deploy 1 0 0 0 9m
Des idées sur la façon de résoudre ce problème?
Merci d'avance!
@noprom essayez ceci
supprimer le déploiement de la barre manuellement
créer ces config rbac pour tiller
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-clusterrolebinding
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: ""
exécuter delete (oui supprimer) sur cette configuration rbac
exécuter à nouveau créer
puis exécutez helm init --upgrade pour remplacer
vous ne devriez plus avoir d'erreurs.
@innovia
Génial! Merci, j'ai résolu ce problème.
Merci beaucoup!
Heureux d'aider :)
@noprom s'il vous plaît vérifier mon message sur la façon de configurer la barre et la barre avec rbac par espace de noms
@innovia
Post fantastique! 😄
Merci!
ce qui précède ne fonctionne toujours pas
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
C'est parce que vous n'avez pas l'autorisation de déployer la barre, ajoutez un compte pour cela:
kubectl --namespace kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller-cluster-rule \
--clusterrole=cluster-admin --serviceaccount=kube-system:tiller
kubectl --namespace kube-system patch deploy tiller-deploy \
-p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
Sortie de la console:
serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched
Ensuite, exécutez la commande ci-dessous pour le vérifier:
helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress
@ykfq Merci beaucoup, ça marche! Mais à chaque fois que nous déployons sur un nouveau cluster, nous devons le faire? Quel inconvénient!
@ antran89
Si vous utilisez les instructions d'installation officielles du
helm init
Donc, il existe un autre moyen de le rendre plus facile - installer via un fichier yaml:
vim tiller.yaml
apiVersion: v1
kind: Service
metadata:
name: tiller-deploy
namespace: kube-system
labels:
app: helm
name: tiller
spec:
ports:
- name: tiller
port: 44134
protocol: TCP
targetPort: tiller
selector:
app: helm
name: tiller
type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tiller-deploy
namespace: kube-system
labels:
app: helm
name: tiller
annotations:
deployment.kubernetes.io/revision: "5"
spec:
replicas: 1
selector:
matchLabels:
app: helm
name: tiller
template:
metadata:
labels:
app: helm
name: tiller
spec:
containers:
- env:
- name: TILLER_NAMESPACE
value: kube-system
- name: TILLER_HISTORY_MAX
value: "0"
name: tiller
image: gcr.io/kubernetes-helm/tiller:v2.8.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 44134
name: tiller
protocol: TCP
- containerPort: 44135
name: http
protocol: TCP
livenessProbe:
failureThreshold: 3
httpGet:
path: /liveness
port: 44135
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /readiness
port: 44135
scheme: HTTP
initialDelaySeconds: 1
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
serviceAccount: tiller
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-cluster-rule
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: ""
Créez ensuite les ressources:
kubectl create -f tiller.yaml
Assurez-vous de vérifier votre service.
le contenu yaml ci-dessus a été exporté à partir d'un cluster en cours d'exécution, à l'aide de la commande:
kubectl -n kube-system get svc tiller-deploy -o=yaml
kubectl -n kube-system get deploy tiller-deploy -o=yaml
kubectl -n kube-system get sa tiller -o=yaml
kubectl -n kube-system get clusterrolebinding tiller-cluster-rule -o=yaml
Ce yaml n'a pas encore testé, si vous avez des questions, faites un commentaire.
@ykfq Je n'aime pas l'idée de donner à Tiller les privilèges d'administrateur complets du cluster, mais rien d'autre n'a fonctionné pour moi. J'ai essayé de suivre cet exemple . J'essayais de restreindre Tiller à n'agir que sur les espaces de noms, je l'ai laissé agir.
Mais toujours rencontré ce problème (déployait Concourse):
Error: release concourse failed: namespaces "concourse" is forbidden: User "system:serviceaccount:tiller-system:tiller-user" cannot get namespaces in the namespace "concourse": Unknown user "system:serviceaccount:tiller-system:tiller-user"
Des idées sur la façon de faire fonctionner cet exemple spécifique? J'ai changé certains paramètres, tout le YAML avec les RBAC était celui-ci:
apiVersion: v1
kind: Namespace
metadata:
name: tiller-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller-user
namespace: tiller-system
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-manager
namespace: tiller-system
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["configmaps"]
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-binding
namespace: tiller-system
subjects:
- kind: ServiceAccount
name: tiller-user
namespace: tiller-system
roleRef:
kind: Role
name: tiller-manager
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Namespace
metadata:
name: concourse
---
apiVersion: v1
kind: Namespace
metadata:
name: concourse-main
----
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-role
namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-namespace-role
namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["namespaces"]
verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-main-role
namespace: concourse-main
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-main-role
subjects:
- kind: ServiceAccount
name: tiller-user
namespace: tiller-system
roleRef:
kind: Role
name: tiller-concourse-main-role
apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-role
subjects:
- kind: ServiceAccount
name: tiller-user
namespace: tiller-system
roleRef:
kind: Role
name: tiller-concourse-role
apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller-concourse-namespace-role
subjects:
- kind: ServiceAccount
name: tiller-user
namespace: tiller-system
roleRef:
kind: Role
name: tiller-concourse-namespace-role
apiGroup: rbac.authorization.k8s.io
helm init --upgrade - tiller de compte de service
@brunoban helm v3 supprimera le motoculteur, donc d'après ce que j'ai compris, les autorisations seront
@innovia Oh ... je ne le savais pas. Je vais essayer de me mettre au courant maintenant. Merci!
puis exécutez helm init --upgrade pour remplacer
@innovia Où mettre le fichier de configuration rbac?
@cjbottaro avez-vous lu le message que j'ai écrit Hwo pour configurer la barre et la barre par espace de noms ?
Je ne suis pas votre question, pouvez-vous s'il vous plaît re-expliquer?
@innovia Nevermind, je l'ai compris. Je devais juste courir
kubectl create -f tiller.yaml
helm init --upgrade --service-account tiller
cela a fonctionné pour moi:
kubectl --namespace kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system: tiller
helm init - tiller de compte de service --upgrade
Je suis la documentation officielle de Helm pour "Déployer Tiller dans un espace de noms, limité au déploiement de ressources uniquement dans cet espace de noms". Voici mon script bash:
Namespace="$1"
kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
--namespace $Namespace /
--verb=* /
--resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
--namespace $Namespace /
--role="tiller-role-$Namespace" /
--serviceaccount="$Namespace:tiller-$Namespace"
L'exécution de helm upgrade
me donne l'erreur suivante:
Erreur: ECHEC DE LA MISE A NIVEAU: les configmaps sont interdites: l'utilisateur " system: serviceaccount : kube- system: default " ne peut pas lister les configmaps dans l'espace de noms "kube-system"
Y a-t-il un bug dans la documentation officielle? Ai-je mal lu?
Quelle était la commande complète pour helm init
? Pouvez-vous s'il vous plaît ouvrir un ticket séparé pour cela?
@bacongobbler Problème déplacé ici https://github.com/helm/helm/issues/4933
ce qui précède ne fonctionne toujours pas
namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"
Suivez la commande ci-dessous
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/ tiller: v2.14.0 --stable-repo-url https: //kubernetes.oss-cn-hangzhou.aliyuncs .com / graphiques
Ce que vous devez faire est d'accorder à tiller (via le compte de service par défaut) l'accès pour installer les ressources dans l'espace de noms par défaut. Voir https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md
Le nom du fichier est maintenant rbac.md
et le lien est à https://github.com/helm/helm/blob/master/docs/rbac.md.
C'est parce que vous n'avez pas l'autorisation de déployer la barre, ajoutez un compte pour cela:
kubectl --namespace kube-system create serviceaccount tiller kubectl create clusterrolebinding tiller-cluster-rule \ --clusterrole=cluster-admin --serviceaccount=kube-system:tiller kubectl --namespace kube-system patch deploy tiller-deploy \ -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
Sortie de la console:
serviceaccount "tiller" created clusterrolebinding "tiller-cluster-rule" created deployment "tiller-deploy" patched
Ensuite, exécutez la commande ci-dessous pour le vérifier:
helm list helm repo update helm install --name nginx-ingress stable/nginx-ingress
Ce serait formidable si les documents d'installation du timon étaient mis à jour avec ces instructions précises
J'ai eu le yaml suivant
apiVersion: v1
kind: ServiceAccount
metadata:
name: tiller
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: tiller
roleRef:
apiGroup: ""
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
Si j'ai raison, il me manquait le tiller deployment
dans ce yaml?
helm init --upgrade - tiller de compte de service
La commande ci-dessus résout ce problème, recommande vivement cette étape dans un premier temps :)
Commentaire le plus utile
C'est parce que vous n'avez pas l'autorisation de déployer la barre, ajoutez un compte pour cela:
Sortie de la console:
Ensuite, exécutez la commande ci-dessous pour le vérifier: