2016-02-11 2 views
0

Nous exécutons Kubernetes avec SELinux activé. Nous aimerions utiliser serviceAccounts. Quand je désactive les conteneurs SELinux, je peux lire les secrets, comme prévu. Mais quand j'active SELinux, nous ne pouvons pas lire les secrets à l'intérieur du conteneur. Par exemple:Kubernetes serviceAccounts et SELinux

localhost$ kubectl exec -it my-pod bash 
my-pod$ ls /var/run/secrets/kubernetes.io/serviceaccount/ 
token 
my-pod$ cat /var/run/secrets/kubernetes.io/serviceaccount/token 
Permission denied 

Quelle est la méthode recommandée pour utiliser serviceAccounts avec SELinux?

Merci, Andrej

Répondre

4

Vous devez probablement exécuter la commande suivante pour définir le contexte SELinux correctement dans le répertoire des volumes. J'ai un problème ouvert pour que cela se produise automatiquement à l'avenir:

sudo chcon -Rt svirt_sandbox_file_t /var/lib/kubelet 

Hope that helps.

+0

Merci, cela a fait l'affaire en effet :-) – Andrej

+0

BTW, est-il possible d'utiliser serviceAccounts pour POD statique (obsolète) en quelque sorte? – Andrej

+0

Vous voulez dire des pods à partir d'un fichier manifest avec une installation complète de kubernetes, ou avec un kubelet autonome? –

2

Il y a une règle de politique selinux pour cela (dans Fedora 23 au moins) mais malheureusement il y a une faute de frappe.

semanage fcontext -l | grep /var/lib/kub 
/var/lib/kublet(/.*)?        all files   system_u:object_r:docker_var_lib_t:s0 

Devrait être "kubelet". J'ai ouvert un bug here.