En este artículo se proporciona una descripción general de las cuentas de servicio y cómo operan. Una parte crucial de Kubernetes que proporciona acceso seguro al servidor API es la cuenta de servicio. Una interacción con un clúster de Kubernetes requiere comunicación con el servidor API. Las solicitudes se realizan al servidor API para comunicarse. Cuando un servidor API recibe una solicitud, primero intenta autenticarla. Si esta autenticación falla, la solicitud se considera anónima. Esto significa que cada proceso, ya sea parte del clúster o no, debe autenticarse antes de enviar una solicitud al servidor API, incluido un usuario que escribe kubectl en su escritorio y el proceso de kubelet que se ejecuta en un nodo. Este contexto describe los tipos de cuentas de Kubernetes y cómo configurar una cuenta de servicio con ejemplos básicos.
Tipos de cuenta en Kubernetes
En Kubernetes, hay dos tipos de cuentas que se mencionan a continuación:
Cuenta de usuario
Es utilizado por humanos que pueden ser usuarios administradores o desarrolladores que intentan acceder a los recursos a nivel de clúster y acceder al clúster Kubernetes. Esos usuarios pueden administrar el externo del clúster, pero el clúster de Kubernetes es consciente de ello. La cuenta de usuario no tiene un espacio de nombres específico.
Cuenta de servicio
Estas son las cuentas a nivel de máquina. Los procesos que están activos en las cápsulas del clúster están representados por las cuentas de servicio. El servidor API autentica el POD usando una cuenta de servicio antes de que pueda acceder al clúster.
¿Qué es una cuenta de servicio de Kubernetes??
Se aplica para autenticar los procesos a nivel de la máquina para permitirles acceder a nuestro clúster Kubernetes. El servidor API está a cargo de hacer dicha autenticación para los procesos que se ejecutan en el POD. El clúster de Kubernetes administra las cuentas de servicio. Las cuentas de servicio tienen un espacio de nombres específico. Estos son generados automáticamente por el servidor API o manualmente a través de llamadas API.
¿Cómo funciona la cuenta de servicio de Kubernetes??
Explicaremos cómo funciona en un escenario en el que una aplicación de un tercero intenta conectarse a los servidores de la API del clúster de Kubernetes.
Digamos que hay un sitio web, mi página web, que necesita recuperar los datos de un servidor API ubicado en el clúster de Kubernetes, como se ilustra en la figura anterior, para mostrar una lista de objetos. Para acceder a los datos de los servidores de clúster y autenticarlo, requerimos una cuenta de servicio que actúe como el puente que pone a disposición los servidores de la API del clúster.
Requisitos previos
Antes de trabajar con la sonda de inicio, los requisitos previos son un clúster de Kubernetes con dos nodos que no actúan como hosts y software de línea de comandos Kubectl que deben configurarse para comunicarse entre clústeres. Si no ha creado un clúster, puede usar el minikube para crear un clúster. Hay otras opciones de juegos de Kubernetes disponibles en línea que puede usar para crear el clúster.
Crear cuenta de servicio
Ahora debemos crear una cuenta de servicio siguiendo las instrucciones paso a paso para acceder al clúster Kubernetes. Vamos a empezar!
Paso 1: Comience el minikube
Primero, inicie el clúster de minikube para que pueda usar los comandos Kubectl y ejecutar su aplicación. El clúster de Minikube le permite implementar sus nodos, vainas e incluso clúster en el entorno de Kubernetes. Por lo tanto, es esencial mantener el minikube en modo activo utilizando el siguiente comando:
> Minikube Start
Esto activa el clúster de Minikube y prepara el entorno Kubernetes.
Paso 2: use la cuenta de servicio predeterminada para acceder al servicio API
Los pods se autentican como una determinada cuenta de servicio cuando se comunican con el servidor API. La cuenta de servicio predeterminada para cada espacio de nombres de Kubernetes, por defecto, está presente en cada espacio de nombres y constituye el número mínimo de cuentas de servicio. Cuando crea una cápsula, Kubernetes asigna automáticamente la cuenta de servicio llamada predeterminado en ese espacio de nombres si no especifica uno.
Puede recuperar la información para un POD generado ejecutando el siguiente comando:
> Kubectl Get ServiceAcCounts
Paso 3: Salida de API Credencial Automunting
El archivo de manifiesto de la cuenta de servicio YAML debe abrirse primero.
> Nano ServiceAccount.yaml
En lugar del kubelet para montar automáticamente las credenciales de API de un servicio de servicio, puede optar por alterar el comportamiento normal.
Paso 4: crear una cuenta de servicio adicional
Se pueden crear objetos de cuenta de servicio adicionales de la siguiente manera como se mencionó:
> Kubectl Aplicar -f ServiceAcCount.yaml
Paso 5: Use múltiples cuentas de servicio
En este contexto, cada cápsula que se genera en el clúster de Kubernetes con un espacio de nombres específico produce una cuenta de servicio de forma predeterminada con el nombre predeterminado. El token de servicio y el objeto secreto necesario son creados automáticamente por la cuenta de servicio predeterminada.
Al ejecutar el siguiente comando, puede enumerar cada recurso ServiceAcCount en su espacio de nombres actual:
> Kubectl Get ServiceAcCounts
Paso 6: Obtenga un volcado de la cuenta de servicio
Si el objeto de cuenta de servicio se descarga por completo, parece la siguiente captura de pantalla. Se hace con el comando adjunto aquí:
> Kubectl Get ServiceAcCounts/Build -Robot -O Yaml
Paso 7: Limpie la cuenta de servicio
Elimine la cuenta en ejecución antes de configurar la cuenta de servicio Build-Robot con el siguiente comando:
> Kubectl Eliminar ServiceAcCount/Build-robot
Paso 8: crear un token API
Suponga que ya tiene el nombre de la cuenta de servicio "Build-Robot" como se menciona en el ejemplo anterior. Usando el siguiente comando, puede obtener un breve token API para esa cuenta de servicio:
> Kubectl Crear demo token1
La salida del comando anterior se lleva a la autenticación para esa cuenta de servicio. Uso del comando implica duración, puede generar una duración de token única.
Paso 9: Cree un token API manual de larga vida para la cuenta de servicio
Cree un nuevo secreto con una anotación única si desea obtener un token API para una cuenta de servicio. Aquí está el siguiente comando:
> nano secreto.yaml
Aquí está el archivo de configuración completo:
En la captura de pantalla adjunta, puede ver que una cuenta de servicio se crea con éxito.
Paso 10: Ver los detalles del objeto secreto
Debe usar el siguiente comando para hacer visible el contenido de un elemento secreto:
> kubectl describir secretos/demo1
Como puede ver, el token API de ServiceCcount "Build-robot" ahora está presente en el objeto secreto.
Al ejecutar el comando mencionado anteriormente, puede ver el valor de llave hash codificado del token que se muestra en la imagen anterior.
Por lo tanto, este objeto secreto predeterminado se puede utilizar para otorgar un acceso a los servidores API que se encuentran en el mismo espacio de nombres de clúster para nuestra aplicación, que se implementa en el POD del mismo espacio de nombres.
Paso 11: Agregue el ImagePullSecrets a una cuenta de servicio
Haz una imagen de imagen. Luego, asegúrese de que se generara. Para eso, el comando es el siguiente:
> Kubectl Crear Secret Docker-Registry MyRegistryKey--Docker-Server = Dummy_Server \ --Docker-UserName = Dummy_Username --Docker-password = Dummy_Docker_Password \-Docker-Email = Dummy_Docker_EMAIL
Asegúrese de que se cree. Puede verificar esto con el comando dado aquí:
> Kubectl obtiene secretos myregistrykey
Paso 12: Agregue el ImagePullSecret a una cuenta de servicio
Alterar la cuenta de servicio predeterminada del espacio de nombres de tal manera que use este secreto como un ImagePullSecret. El comando se da de la siguiente manera:
> Kubectl Patch ServiceAcCount predeterminado -p '"ImagePullSecrets": ["nombre": "myregistrykey"]
Conclusión
Aprendimos sobre la cuenta de servicio que, al ofrecer autenticación, autorización y control de administración, permite que el servidor API haga que la aplicación sea segura. Para autenticar la comunicación entre programas externos y API, la cuenta de servicio sirve como un enlace a un proceso que se ejecuta en un POD. El ejemplo de práctica para crear la cuenta de servicio y configurarla con un ejemplo simple se implementa en este artículo.