Respuesta más segura
La respuesta aceptada brinda acceso de administrador completo a Helm, que no es la mejor solución en cuanto a seguridad. Con un poco más de trabajo, podemos restringir el acceso de Helm a un espacio de nombres en particular. Más detalles en la documentación de Helm .
$ kubectl create namespace tiller-world
namespace "tiller-world" created
$ kubectl create serviceaccount tiller --namespace tiller-world
serviceaccount "tiller" created
Defina un rol que le permita a Tiller administrar todos los recursos tiller-world
como en role-tiller.yaml
:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-manager
namespace: tiller-world
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
Entonces corre:
$ kubectl create -f role-tiller.yaml
role "tiller-manager" created
en rolebinding-tiller.yaml
,
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: tiller-binding
namespace: tiller-world
subjects:
- kind: ServiceAccount
name: tiller
namespace: tiller-world
roleRef:
kind: Role
name: tiller-manager
apiGroup: rbac.authorization.k8s.io
Entonces corre:
$ kubectl create -f rolebinding-tiller.yaml
rolebinding "tiller-binding" created
Luego, puede ejecutar helm init
para instalar Tiller en el tiller-world
espacio de nombres.
$ helm init --service-account tiller --tiller-namespace tiller-world
Ahora prefija todos los comandos con --tiller-namespace tiller-world
o establezca TILLER_NAMESPACE=tiller-world
en sus variables de entorno.
Más respuesta a prueba de futuro
Deja de usar Tiller. Helm 3 elimina por completo la necesidad de Tiller. Si está usando Helm 2, puede usarlo helm template
para generar el yaml desde su gráfico de Helm y luego ejecutarlo kubectl apply
para aplicar los objetos a su clúster de Kubernetes.
helm template --name foo --namespace bar --output-dir ./output ./chart-template
kubectl apply --namespace bar --recursive --filename ./output -o yaml
--clusterrole=cluster-admin
, lo que sin duda solucionará los problemas de permisos, pero puede que no sea la solución que desea. Es mejor crear sus propias cuentas de servicio, roles (clúster) y enlaces de roles (clúster) con los permisos exactos que necesita.