Como configurar as contas de serviço em Kubernetes

Como configurar as contas de serviço em Kubernetes

Uma visão geral das contas de serviço e como elas operam são fornecidas neste artigo. Uma parte crucial do Kubernetes que fornece acesso seguro ao servidor API é a conta de serviço. Uma interação com um cluster Kubernetes requer comunicação com o servidor API. São feitas solicitações ao servidor da API para se comunicar. Quando um servidor de API recebe uma solicitação, ele primeiro tenta autenticá -lo. Se essa autenticação falhar, o pedido será considerado anônimo. Isso significa que todo processo, seja parte do cluster ou não, deve se autenticar antes de enviar uma solicitação ao servidor da API, incluindo um usuário digitando Kubectl em sua área de trabalho e o processo KBELET que é executado em um nó. Este contexto descreve os tipos de contas Kubernetes e como configurar uma conta de serviço com exemplos básicos.

Tipos de conta em Kubernetes

Em Kubernetes, existem dois tipos de contas mencionadas no seguinte:

Conta de usuário

É usado por humanos que podem ser usuários de administrador ou desenvolvedores que estão tentando acessar os recursos no nível do cluster e acessar o cluster Kubernetes. Esses usuários podem gerenciar o externo do cluster, mas o cluster de Kubernetes está ciente disso. A conta de usuário não tem um espaço de nome específico.

Conta de serviço

Estas são as contas no nível da máquina. Os processos ativos nas vagens do cluster são representados pelas contas de serviço. O servidor da API autentica o pod usando uma conta de serviço antes que ele possa acessar o cluster.

O que é uma conta de serviço Kubernetes?

É aplicado para autenticar os processos no nível da máquina para permitir que eles acessem nosso cluster Kubernetes. O servidor da API é responsável por fazer essa autenticação para os processos que são executados na vagem. O cluster Kubernetes gerencia as contas de serviço. As contas de serviço têm um espaço de nome específico. Estes são gerados automaticamente pelo servidor de API ou manualmente por meio de chamadas de API.

Como funciona a conta do serviço Kubernetes?

Explicaremos como funciona em um cenário em que um aplicativo de terceiros tenta se conectar aos servidores da API de cluster de Kubernetes.


Digamos que exista um site, minha página da web, que precisa recuperar os dados de um servidor de API localizado no cluster Kubernetes, conforme ilustrado na figura anterior, para exibir uma lista de objetos. Para acessar os dados dos servidores de cluster e autenticá -los, precisamos de uma conta de serviço que atue como a ponte que é disponibilizada pelos servidores da API de cluster.

Pré -requisitos

Antes de trabalhar com a investigação de inicialização, os pré-requisitos são um cluster de Kubernetes com dois nós que não estão agindo como hosts e software de linha de comando kubectl que deve ser configurado para se comunicar entre clusters. Se você não criou um cluster, pode usar o minikube para criar um cluster. Existem outras opções de playground Kubernetes disponíveis on -line que você pode usar para criar o cluster.

Criar conta de serviço

Agora devemos criar uma conta de serviço seguindo as instruções passo a passo para acessar o cluster Kubernetes. Vamos começar!

Etapa 1: comece o minikube

Primeiro, inicie o cluster Minikube para que você possa usar os comandos Kubectl e executar seu aplicativo. O cluster Minikube permite implantar seus nós, pods e até agrupamentos no ambiente Kubernetes. Portanto, é essencial manter o minikube no modo ativo usando o seguinte comando:

> Minikube Start


Isso ativa o cluster Minikube e prepara o ambiente Kubernetes.


Etapa 2: use a conta de serviço padrão para acessar o serviço de API

Os pods autenticam como uma determinada conta de serviço quando se comunicam com o servidor de API. A conta de serviço padrão para cada espaço de nome de Kubernetes, por padrão, está presente em todos os namespace e constitui o número mínimo de contas de serviço. Quando você constrói um pod, o Kubernetes aloca automaticamente a conta de serviço chamada Padrão nesse espaço de nome se você não especificar um.

Você pode recuperar as informações de um pod gerado executando o seguinte comando:

> Kubectl Obtenha ServiceAcCounts



Etapa 3: Saída da API Credencial Automation

O arquivo de manifesto da conta de serviço YAML deve ser aberto primeiro.

> Nano ServiceAccount.Yaml


Em vez do kubelet para montar automaticamente as credenciais da API de um serviço de serviço, você pode optar por alterar o comportamento normal.


Etapa 4: Crie uma conta de serviço adicional

Objetos de conta de serviço adicionais podem ser criados da seguinte maneira, conforme mencionado:

> Kubectl Aplicar -F ServiceAccount.Yaml



Etapa 5: Use várias contas de serviço

Nesse contexto, todos os pods que são gerados no cluster Kubernetes com um espaço de nome específico produz uma conta de serviço por padrão com o nome padrão. O token de serviço e o objeto secreto necessário são criados automaticamente pela conta de serviço padrão.

Ao executar o comando a seguir, você pode listar todos os recursos do ServiceAcCount em seu espaço de nome atual:

> Kubectl Obtenha ServiceAcCounts



Etapa 6: Obtenha um despejo da conta de serviço

Se o objeto da conta de serviço estiver completamente despejado, parece a seguinte captura de tela. É feito com o comando anexado aqui:

> Kubectl Obtenha serviceAcCounts/Build -Robot -o Yaml



Etapa 7: Limpe a conta de serviço

Exclua a conta em execução antes de configurar a conta de serviço Build-Robot com o seguinte comando:

> kubectl exclua serviceAccount/build-robot



Etapa 8: Crie um token de API

Suponha que você já tenha o nome da conta de serviço "Build-Robot", conforme mencionado no exemplo anterior. Usando o comando a seguir, você pode obter um breve token da API para essa conta de serviço:

> Kubectl Criar token Demo1



A saída do comando anterior é levada à autenticação para essa conta de serviço. Usando o comando implica -Duração, você pode gerar uma duração exclusiva de token.

Etapa 9: Crie um token de API de vida longa manualmente para a conta de serviço

Crie um novo segredo com uma anotação única se você deseja obter um token de API para uma conta de serviço. Aqui está o seguinte comando:

> Nano segredo.Yaml


Aqui está o arquivo de configuração completo:


Na captura de tela em anexo, você pode ver que uma conta de serviço é criada com sucesso.


Etapa 10: Veja os detalhes do objeto secreto

Você deve usar o seguinte comando para tornar visível o conteúdo de um item secreto:

> Kubectl Descreva segredos/demonstrações1


Como você pode ver, o token da API de "Build-Robot" ServiceAccount está agora presente no objeto secreto.


Ao executar o comando acima mencionado, você pode ver o valor da chave de hash codificada do token, que é exibida na imagem anterior.

Portanto, esse objeto secreto padrão pode ser usado para conceder um acesso aos servidores da API que estão localizados no mesmo espaço de nome de cluster para o nosso aplicativo, que é implantado na vagem do mesmo espaço de nome.

Etapa 11: Adicione os Secretos ImagePullSecretos a uma conta de serviço

Faça um ImagePullSecret. Então, verifique se foi gerado. Para isso, o comando é o seguinte:

> Kubectl Crie Docker-Registry Secret MyRegistryKey-Docker-Server = Dummy_Server \--Docker-Username = DUMMY_USERNAME-DOCKER-PASSWORD = DUMMY_DOCKER_PASSWORD \-Docker-email = Dummy_Docker_EMail


Verifique se está criado. Você pode verificar isso com o comando dado aqui:

> Kubectl Obtenha segredos MyRegistryKey



Etapa 12: Adicione o ImagePullSecret a uma conta de serviço

Altere a conta de serviço padrão do espaço para o nome, de modo que ele use este segredo como um ImagePullSecret. O comando é dado o seguinte:

> kubectl patch serviceAccount default -p '"imagePullSecrets": ["name": "myRegistryKey"]


Conclusão

Aprendemos sobre a conta de serviço que, oferecendo autenticação, autorização e controle de administração, permite o servidor de API para tornar o aplicativo seguro. Para autenticar a comunicação entre programas externos e APIs, a conta de serviço serve como um link para um processo que é executado em uma vagem. O exemplo da prática para criar a conta de serviço e configurá -la com um exemplo simples é implementado neste artigo.