Comment créer un compte de service et un lien de rôle de cluster pour le tableau de bord Kubernetes

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Les comptes de service Kubernetes sont un composant essentiel pour gérer l'identité et le contrôle d'accès des applications exécutées dans un cluster Kubernetes. Ce tutoriel vous guidera dans la compréhension des comptes de service Kubernetes, la configuration du tableau de bord Kubernetes avec un compte de service et l'octroi des autorisations nécessaires au tableau de bord.

Comprendre les comptes de service Kubernetes

Les comptes de service Kubernetes sont un composant essentiel pour gérer l'identité et le contrôle d'accès des applications exécutées dans un cluster Kubernetes. Ils offrent un moyen aux pods d'authentifier et d'autoriser leurs interactions avec le serveur API Kubernetes, permettant ainsi une communication sécurisée et un accès aux ressources.

Qu'est-ce que les comptes de service Kubernetes?

Les comptes de service Kubernetes sont associés aux pods et fournissent une identité aux processus s'exécutant dans ces pods. Ils sont utilisés pour authentifier et autoriser les interactions entre le pod et le serveur API Kubernetes. Chaque espace de noms (namespace) dans un cluster Kubernetes dispose d'un compte de service par défaut, et vous pouvez également créer des comptes de service personnalisés pour répondre aux besoins spécifiques de vos applications.

Pourquoi utiliser les comptes de service Kubernetes?

Les comptes de service Kubernetes servent plusieurs objectifs importants :

  1. Accès à l'API : Les comptes de service octroient aux pods les autorisations nécessaires pour accéder à l'API Kubernetes, leur permettant d'effectuer diverses opérations telles que la lecture, la création ou la modification de ressources.
  2. Communication sécurisée : Les comptes de service sont utilisés pour authentifier les pods, garantissant que seuls les pods autorisés peuvent interagir avec le serveur API Kubernetes.
  3. Isolation des ressources : En utilisant différents comptes de service pour différentes applications ou composants, vous pouvez obtenir une isolation des ressources et un contrôle d'accès précis dans votre cluster Kubernetes.

Configuration des comptes de service Kubernetes

Pour configurer un compte de service Kubernetes, vous pouvez suivre les étapes suivantes :

  1. Créer un compte de service : Vous pouvez créer un nouveau compte de service en utilisant la commande kubectl create serviceaccount. Par exemple, pour créer un compte de service nommé "my-app-sa" dans l'espace de noms "default", vous exécuteriez :
kubectl create serviceaccount my-app-sa -n default
  1. Attribuer le compte de service à un pod : Lors de la création d'un pod, vous pouvez spécifier le compte de service à utiliser par le pod. Cela se fait dans le fichier de configuration YAML du pod, dans le champ spec.serviceAccountName :
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  serviceAccountName: my-app-sa
  containers:
    - name: my-app
      image: my-app:v1
  1. Octroyer des autorisations au compte de service : Par défaut, les comptes de service ont des autorisations limitées. Pour octroyer les autorisations nécessaires au compte de service, vous pouvez créer un Role ou un ClusterRole et le lier au compte de service en utilisant un RoleBinding ou un ClusterRoleBinding.

Les autorisations spécifiques nécessaires dépendront des actions que votre application doit effectuer dans le cluster Kubernetes.

Configuration du tableau de bord Kubernetes avec un compte de service

Le tableau de bord Kubernetes est une interface utilisateur (UI) web puissante qui vous permet de gérer votre cluster Kubernetes. Pour sécuriser le tableau de bord et contrôler l'accès à celui-ci, vous pouvez le configurer pour qu'il utilise un compte de service Kubernetes.

Création d'un compte de service pour le tableau de bord Kubernetes

  1. Créez un nouveau compte de service pour le tableau de bord Kubernetes :
kubectl create serviceaccount dashboard-sa -n kubernetes-dashboard
  1. Vérifiez la création du compte de service :
kubectl get serviceaccounts -n kubernetes-dashboard

Octroi d'autorisations au compte de service du tableau de bord

  1. Créez un ClusterRoleBinding pour octroyer les autorisations nécessaires au compte de service du tableau de bord :
kubectl create clusterrolebinding dashboard-sa-cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-sa

Cela lie le ClusterRole cluster-admin au compte de service dashboard-sa dans l'espace de noms (namespace) kubernetes-dashboard, lui accordant un accès administratif complet au cluster.

Configuration du tableau de bord Kubernetes pour utiliser le compte de service

  1. Modifiez le déploiement du tableau de bord Kubernetes pour qu'il utilise le compte de service dashboard-sa :
kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard

Mettez à jour le champ spec.template.spec.serviceAccountName pour qu'il soit égal à dashboard-sa.

  1. Redémarrez le pod du tableau de bord Kubernetes pour que les modifications prennent effet :
kubectl delete pod -n kubernetes-dashboard -l app.kubernetes.io/name=kubernetes-dashboard

Maintenant, le tableau de bord Kubernetes utilisera le compte de service dashboard-sa pour interagir avec le serveur API Kubernetes, offrant un accès sécurisé aux ressources du cluster.

Octroi d'autorisations au tableau de bord Kubernetes

Pour octroyer les autorisations nécessaires au tableau de bord Kubernetes, vous pouvez utiliser le contrôle d'accès basé sur les rôles (Role-Based Access Control - RBAC) de Kubernetes pour définir et attribuer les rôles et autorisations appropriés.

Comprendre le RBAC de Kubernetes

Le RBAC de Kubernetes est un mécanisme puissant pour contrôler l'accès aux ressources Kubernetes. Il vous permet de définir des rôles avec des autorisations spécifiques, puis d'attribuer ces rôles à des utilisateurs, des groupes ou des comptes de service.

Les principaux composants du RBAC sont :

  • Rôles (Roles) : Définissent un ensemble d'autorisations qui peuvent être accordées à un sujet.
  • Rôles de cluster (ClusterRoles) : Similaires aux rôles, mais s'appliquent à l'ensemble du cluster.
  • Liens de rôle (RoleBindings) : Lient un rôle à un sujet (utilisateur, groupe ou compte de service).
  • Liens de rôle de cluster (ClusterRoleBindings) : Lient un rôle de cluster à un sujet.

Octroi d'autorisations au tableau de bord Kubernetes

Pour octroyer les autorisations nécessaires au tableau de bord Kubernetes, vous pouvez créer un rôle de cluster (ClusterRole) et un lien de rôle de cluster (ClusterRoleBinding).

  1. Créez un rôle de cluster qui accorde les autorisations requises :
kubectl create clusterrole dashboard-cluster-role --resource=deployments,pods,services,secrets,configmaps,jobs,cronjobs --verb=get,list,watch,create,update,delete

Ce rôle de cluster accorde les autorisations de lecture, d'écriture et de suppression pour les ressources Kubernetes spécifiées.

  1. Créez un lien de rôle de cluster pour lier le rôle de cluster au compte de service du tableau de bord Kubernetes :
kubectl create clusterrolebinding dashboard-cluster-role-binding --clusterrole=dashboard-cluster-role --serviceaccount=kubernetes-dashboard:dashboard-sa

Cela lie le rôle de cluster dashboard-cluster-role au compte de service dashboard-sa dans l'espace de noms (namespace) kubernetes-dashboard.

Maintenant, le tableau de bord Kubernetes aura les autorisations nécessaires pour accéder et gérer les ressources dans le cluster Kubernetes.

Résumé

Dans ce tutoriel, vous avez appris à connaître les comptes de service Kubernetes, leur importance et comment les configurer. Vous avez également appris à configurer le tableau de bord Kubernetes avec un compte de service et à octroyer les autorisations nécessaires au tableau de bord. En comprenant et en configurant correctement les comptes de service Kubernetes, vous pouvez garantir une communication sécurisée et un contrôle d'accès précis dans votre cluster Kubernetes.