Cómo crear una cuenta de servicio y un enlace de rol de clúster para el panel de control (Dashboard) de Kubernetes

KubernetesBeginner
Practicar Ahora

Introducción

Las cuentas de servicio (Service Accounts) de Kubernetes son un componente crucial en la gestión de la identidad y el control de acceso de las aplicaciones que se ejecutan dentro de un clúster de Kubernetes. Este tutorial lo guiará a través de la comprensión de las cuentas de servicio de Kubernetes, la configuración del panel de control (Dashboard) de Kubernetes con una cuenta de servicio y la concesión de los permisos necesarios al panel de control.

Comprender las cuentas de servicio (Service Accounts) de Kubernetes

Las cuentas de servicio (Service Accounts) de Kubernetes son un componente crucial en la gestión de la identidad y el control de acceso de las aplicaciones que se ejecutan dentro de un clúster de Kubernetes. Proporcionan una forma para que los pods se autentiquen y autoricen sus interacciones con el servidor de API de Kubernetes, lo que permite una comunicación segura y el acceso a recursos.

¿Qué son las cuentas de servicio (Service Accounts) de Kubernetes?

Las cuentas de servicio (Service Accounts) de Kubernetes están asociadas a los pods y proporcionan una identidad para los procesos que se ejecutan dentro de esos pods. Se utilizan para autenticar y autorizar las interacciones entre el pod y el servidor de API de Kubernetes. Cada espacio de nombres (namespace) en un clúster de Kubernetes tiene una cuenta de servicio predeterminada, y también puede crear cuentas de servicio personalizadas para satisfacer los requisitos específicos de la aplicación.

¿Por qué usar las cuentas de servicio (Service Accounts) de Kubernetes?

Las cuentas de servicio (Service Accounts) de Kubernetes sirven para varios propósitos importantes:

  1. Acceso a la API: Las cuentas de servicio otorgan a los pods los permisos necesarios para acceder a la API de Kubernetes, lo que les permite realizar diversas operaciones, como leer, crear o modificar recursos.
  2. Comunicación segura: Las cuentas de servicio se utilizan para autenticar los pods, lo que garantiza que solo los pods autorizados puedan interactuar con el servidor de API de Kubernetes.
  3. Aislamiento de recursos: Al utilizar diferentes cuentas de servicio para diferentes aplicaciones o componentes, puede lograr el aislamiento de recursos y un control de acceso detallado dentro de su clúster de Kubernetes.

Configurar las cuentas de servicio (Service Accounts) de Kubernetes

Para configurar una cuenta de servicio (Service Account) de Kubernetes, puede seguir estos pasos:

  1. Crear una cuenta de servicio: Puede crear una nueva cuenta de servicio utilizando el comando kubectl create serviceaccount. Por ejemplo, para crear una cuenta de servicio llamada "my-app-sa" en el espacio de nombres (namespace) "default", ejecutaría:
kubectl create serviceaccount my-app-sa -n default
  1. Asignar la cuenta de servicio a un pod: Al crear un pod, puede especificar la cuenta de servicio que utilizará el pod. Esto se hace en el archivo de configuración YAML del pod en el campo spec.serviceAccountName:
apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  serviceAccountName: my-app-sa
  containers:
    - name: my-app
      image: my-app:v1
  1. Conceder permisos a la cuenta de servicio: De forma predeterminada, las cuentas de servicio tienen permisos limitados. Para conceder los permisos necesarios a la cuenta de servicio, puede crear un Role o ClusterRole y vincularlo a la cuenta de servicio utilizando un RoleBinding o ClusterRoleBinding.

Los permisos específicos necesarios dependerán de las acciones que su aplicación deba realizar dentro del clúster de Kubernetes.

Configurar el panel de control (Dashboard) de Kubernetes con una cuenta de servicio

El panel de control (Dashboard) de Kubernetes es una interfaz web (UI) poderosa que le permite administrar su clúster de Kubernetes. Para proteger el panel de control y controlar el acceso a él, puede configurarlo para que utilice una cuenta de servicio (Service Account) de Kubernetes.

Crear una cuenta de servicio para el panel de control (Dashboard) de Kubernetes

  1. Cree una nueva cuenta de servicio para el panel de control (Dashboard) de Kubernetes:
kubectl create serviceaccount dashboard-sa -n kubernetes-dashboard
  1. Verifique la creación de la cuenta de servicio:
kubectl get serviceaccounts -n kubernetes-dashboard

Conceder permisos a la cuenta de servicio del panel de control

  1. Cree un enlace de rol de clúster (ClusterRoleBinding) para conceder los permisos necesarios a la cuenta de servicio del panel de control:
kubectl create clusterrolebinding dashboard-sa-cluster-admin-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-sa

Esto vincula el rol de clúster (ClusterRole) cluster-admin a la cuenta de servicio dashboard-sa en el espacio de nombres (namespace) kubernetes-dashboard, otorgándole acceso administrativo completo al clúster.

Configurar el panel de control (Dashboard) de Kubernetes para que utilice la cuenta de servicio

  1. Modifique la implementación (deployment) del panel de control (Dashboard) de Kubernetes para que utilice la cuenta de servicio dashboard-sa:
kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard

Actualice el campo spec.template.spec.serviceAccountName a dashboard-sa.

  1. Reinicie el pod del panel de control (Dashboard) de Kubernetes para que los cambios surtan efecto:
kubectl delete pod -n kubernetes-dashboard -l app.kubernetes.io/name=kubernetes-dashboard

Ahora, el panel de control (Dashboard) de Kubernetes utilizará la cuenta de servicio dashboard-sa para interactuar con el servidor de API de Kubernetes, proporcionando acceso seguro a los recursos del clúster.

Conceder permisos al panel de control (Dashboard) de Kubernetes

Para conceder los permisos necesarios al panel de control (Dashboard) de Kubernetes, puede utilizar el control de acceso basado en roles (Role-Based Access Control, RBAC) de Kubernetes para definir y asignar los roles y permisos adecuados.

Comprender el RBAC de Kubernetes

El RBAC de Kubernetes es un potente mecanismo para controlar el acceso a los recursos de Kubernetes. Le permite definir roles con permisos específicos y luego asignar esos roles a usuarios, grupos o cuentas de servicio.

Los componentes principales del RBAC son:

  • Roles: Definen un conjunto de permisos que se pueden otorgar a un sujeto.
  • ClusterRoles: Similares a los Roles, pero se aplican a nivel de clúster.
  • RoleBindings: Vinculan un Role a un sujeto (usuario, grupo o cuenta de servicio).
  • ClusterRoleBindings: Vinculan un ClusterRole a un sujeto.

Conceder permisos al panel de control (Dashboard) de Kubernetes

Para conceder los permisos necesarios al panel de control (Dashboard) de Kubernetes, puede crear un ClusterRole y un ClusterRoleBinding.

  1. Cree un ClusterRole que otorgue los permisos necesarios:
kubectl create clusterrole dashboard-cluster-role --resource=deployments,pods,services,secrets,configmaps,jobs,cronjobs --verb=get,list,watch,create,update,delete

Este ClusterRole otorga permisos de lectura, escritura y eliminación a los recursos de Kubernetes especificados.

  1. Cree un ClusterRoleBinding para vincular el ClusterRole a la cuenta de servicio del panel de control (Dashboard) de Kubernetes:
kubectl create clusterrolebinding dashboard-cluster-role-binding --clusterrole=dashboard-cluster-role --serviceaccount=kubernetes-dashboard:dashboard-sa

Esto vincula el ClusterRole dashboard-cluster-role a la cuenta de servicio dashboard-sa en el espacio de nombres (namespace) kubernetes-dashboard.

Ahora, el panel de control (Dashboard) de Kubernetes tendrá los permisos necesarios para acceder y administrar los recursos dentro del clúster de Kubernetes.

Resumen

En este tutorial, ha aprendido sobre las cuentas de servicio (Service Accounts) de Kubernetes, su importancia y cómo configurarlas. También ha aprendido cómo configurar el panel de control (Dashboard) de Kubernetes con una cuenta de servicio y conceder los permisos necesarios al panel de control. Al comprender y configurar adecuadamente las cuentas de servicio de Kubernetes, puede garantizar una comunicación segura y un control de acceso detallado dentro de su clúster de Kubernetes.