Helm: Error: error al instalar: El usuario "sistema: anónimo" no puede crear despliegues.extensiones en el espacio de nombres "kube-system" .: "No hay política coincidente. \ NUsuario desconocido \" sistema: anónimo \ "" (publicar despliegues.extensiones)

Creado en 8 jul. 2017  ·  3Comentarios  ·  Fuente: helm/helm

Hola,

Tener

Timón 2.5.0
Kubernetes 1.6 con RBAC habilitado en GCP

Problema

Ejecute estos comandos en un contenedor con kubectl y helm:

$ kubectl config set-credentials $K8S_USER --username=$K8S_USER --password=$K8S_PASS
$ kubectl config set-cluster test-cluster  --server=https://$K8S_SERVER --insecure-skip-tls- verify=$K8S_INSECURE_SKIP_TLS_VERIFY 
$ kubectl config set-context default-context --cluster=$K8S_CLUSTER_NAME --user=$K8S_USER 
$ kubectl config use-context default-context
$ kubectl cluster-info
Kubernetes master is running at https://****

$ helm init
$HELM_HOME has been configured at /config/.helm.
Error: error installing: User "system:anonymous" cannot create deployments.extensions in the namespace "kube-system".: "No policy matched.\nUnknown user \"system:anonymous\"" (post deployments.extensions)

Pregunta

¿Qué puedo hacer para corregir este error?

questiosupport

Todos 3 comentarios

Deberá vincular permisos suficientes a la cuenta de servicio del pod de Tiller para que pueda instalar los objetos solicitados por sus gráficos. Lo mejor es crear una cuenta de servicio nueva para Tiller en el mismo espacio de nombres en el que se ejecuta su pod (en su caso, "kube-system"), luego cree un _Role_ en los espacios de nombres en los que desea instalar gráficos o un _ClusterRole_ si desea compartir la definición en varios espacios de nombres, luego cree objetos _RoleBinding_ o _ClusterRoleBinding_ para otorgar estos permisos a la cuenta de servicio específica de Tiller antes mencionada.

Creé el manifiesto con la cuenta de servicio y la definición de ClusterRoleBinding

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
secrets:
  - tiller-secret
---
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: kube-system

Luego agregó este usuario de servicio a la especificación de Tiller

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

Luego cambió la lista de comandos para la autenticación en k8s en mi manifiesto de canalización.

begin_script:
  - echo "$CA" > /ca.crt
  - kubectl config set-cluster k8s-cluster --embed-certs=true --server=https://$K8S_SERVER --certificate-authority=/ca.crt
  - kubectl config set-credentials tiller --token=$USER_TOKEN
  - kubectl config set-context k8s-cluster --cluster=k8s-cluster --user=tiller
  - kubectl config use-context k8s-cluster 

$CA y $USER_TOKEN - son las variables secretas que guardan los datos de ca.crt y el token de usuario de tiller.

Utilice este comando para obtener ca.crt y user_token:

$ secret=$(kubectl get sa tiller -o json --namaspace=kube-system | jq -r .secrets[].name)
$ kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -D # $CA
$ kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -D # $USER_TOKEN

Tenga en cuenta que _helm init_ respeta un indicador --service-account partir de la confirmación 64e9e471838ac44e551c32abcbd19f671c80ecce.

¿Fue útil esta página
0 / 5 - 0 calificaciones