Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Projetos e namespaces do Kubernetes com SUSE Rancher Prime

Um namespace é um conceito do Kubernetes que permite um cluster virtual dentro de um cluster, o que é útil para dividir o cluster em "clusters virtuais" separados, cada um com seu próprio controle de acesso e cotas de recursos.

Um projeto é um grupo de namespaces, e é um conceito introduzido pelo Rancher. Os projetos permitem que você gerencie múltiplos namespaces como um grupo e realize operações do Kubernetes neles. Você pode usar projetos para suportar multi-tenancy, de modo que uma equipe possa acessar um projeto dentro de um cluster sem ter acesso a outros projetos no mesmo cluster.

Os projetos são menos enfatizados na interface do usuário porque não é necessário criar recursos do Kubernetes dentro do escopo de um projeto. No entanto, recursos como Segredos ainda podem ser criados no escopo de um projeto.

Esta seção descreve como projetos e namespaces funcionam com o Rancher.

Sobre Namespaces

Um namespace é um conceito introduzido pelo Kubernetes. De acordo com a documentação oficial do Kubernetes sobre namespaces,

O Kubernetes suporta múltiplos clusters virtuais respaldados pelo mesmo cluster físico. Esses clusters virtuais são chamados de namespaces. […​] Os namespaces são destinados ao uso em ambientes com muitos usuários espalhados por várias equipes ou projetos. Para clusters com poucos a dezenas de usuários, você não deve precisar criar ou pensar em namespaces.

Os namespaces fornecem a seguinte funcionalidade:

  • Fornecendo um escopo para nomes: Os nomes dos recursos precisam ser únicos dentro de um namespace, mas não entre namespaces. Os namespaces não podem ser aninhados um dentro do outro e cada recurso do Kubernetes pode estar em apenas um namespace.

  • Cotas de recursos: Os namespaces fornecem uma maneira de dividir os recursos do cluster entre vários usuários.

Você pode atribuir recursos no nível do projeto para que cada namespace no projeto possa usá-los. Você também pode contornar essa herança atribuindo recursos explicitamente a um namespace.

Você pode atribuir os seguintes recursos diretamente aos namespaces:

Para gerenciar permissões em um cluster Kubernetes padrão, os administradores do cluster configuram políticas de acesso baseadas em função para cada namespace. Com o Rancher, as permissões dos usuários são atribuídas no nível do projeto, e as permissões são automaticamente herdadas por qualquer namespace pertencente ao projeto específico.

Para mais informações sobre como criar e mover namespaces, veja Namespaces.

Questões de controle de acesso com base em função com namespaces e kubectl

Como os projetos são um conceito introduzido pelo Rancher, o kubectl não tem a capacidade de restringir a criação de namespaces a um projeto ao qual o criador tem acesso.

Isso significa que, quando usuários padrão com permissões limitadas a projetos criam um namespace com kubectl, ele pode ser inutilizável porque kubectl não exige que o novo namespace esteja restrito a um determinado projeto.

Se suas permissões estão restritas ao nível do projeto, é melhor criar um namespace através do Rancher para garantir que você terá permissão para acessar o namespace.

Se um usuário padrão for proprietário de um projeto, o usuário poderá criar namespaces dentro desse projeto. A interface do Rancher impedirá que esse usuário crie namespaces fora do escopo dos projetos aos quais ele tem acesso.

Sobre Projetos

Em termos de hierarquia:

  • Clusters contêm projetos

  • Projetos contêm namespaces

Você pode usar projetos para suportar multi-tenancy, de modo que uma equipe possa acessar um projeto dentro de um cluster sem ter acesso a outros projetos no mesmo cluster.

Na versão base do Kubernetes, recursos como direitos de acesso baseados em função ou recursos de cluster são atribuídos a namespaces individuais. Um projeto permite que você economize tempo ao dar a um indivíduo ou a uma equipe acesso a múltiplos namespaces simultaneamente.

Você pode usar projetos para realizar ações como:

  • Atribuir usuários a um grupo de namespaces (ou seja, membros do projeto).

  • Atribuir usuários a funções específicas em um projeto. Uma função pode ser proprietário, membro, somente leitura ou personalizada.

  • Atribuir recursos ao projeto.

Quando você cria um cluster, dois projetos são automaticamente criados dentro dele:

O Projeto Padrão do Cluster

Quando você provisiona um cluster com o Rancher, ele cria automaticamente um default projeto para o cluster. Este é um projeto que você pode usar para começar com seu cluster, mas você sempre pode excluí-lo e substituí-lo por projetos que tenham nomes mais descritivos.

Se você não precisa de mais do que o namespace padrão, também não precisa de mais do que o projeto Projeto Padrão no Rancher.

Se você precisar de outro nível de organização além do projeto Projeto Padrão, pode criar mais projetos no Rancher para isolar namespaces, aplicações e recursos.

O Projeto do Sistema

Ao solucionar problemas, você pode visualizar o projeto system para verificar se namespaces importantes no sistema Kubernetes estão funcionando corretamente. Este projeto de fácil acesso evita que você tenha que solucionar problemas de contêineres de namespaces do sistema individualmente.

Para abri-lo, acesse a visualização do cluster e clique em Cluster  Projetos/Namespaces. Esta visualização mostra todos os namespaces no projeto system.

O projeto system:

  • É criado automaticamente quando você provisiona um cluster.

  • Lista todos os namespaces que existem em v3/settings/system-namespaces, se existirem.

  • Permite que você adicione mais namespaces ou mova seus namespaces para outros projetos.

  • Não pode ser excluído porque é necessário para as operações do cluster.

Em clusters RKE2/K3s onde a opção de isolamento de rede do projeto está habilitada, o projeto system substitui a opção de isolamento de rede do projeto para que possa se comunicar com outros projetos, coletar logs e verificar a saúde.

Autorização do Projeto

Usuários padrão estão autorizados apenas para acesso ao projeto em duas situações:

  • Um administrador, proprietário do cluster ou membro do cluster adiciona explicitamente o usuário padrão na aba Membros do projeto.

  • Usuários padrão podem acessar projetos que criam por conta própria.

Criando Projetos

Esta seção descreve como criar um novo projeto com um nome e com política de segurança de pod opcional, membros e cotas de recursos.

Nomeie um Novo Projeto

  1. No canto superior esquerdo, clique em ☰ > Gerenciamento de Cluster.

  2. Na página Clusters, vá para o cluster no qual você deseja criar um projeto e clique em Explorar.

  3. Clique em Cluster  Projetos/Namespaces.

  4. Clique em Criar Projeto.

  5. Digite um Nome do Projeto.

Use a seção Membros para fornecer acesso e funções de projeto a outros usuários.

Por padrão, seu usuário é adicionado como o Owner do projeto.

Notas sobre Permissões:
  • Usuários atribuídos à função Owner ou Member para um projeto herdam automaticamente a função namespace creation. No entanto, essa função é um ClusterRole do Kubernetes, o que significa que seu escopo se estende a todos os projetos no cluster. Portanto, usuários explicitamente atribuídos à função Owner ou Member para um projeto podem criar namespaces em outros projetos aos quais estão atribuídos, mesmo com apenas a função Read Only atribuída.

  • Por padrão, a função Rancher de project-member herda da função Kubernetes-edit, e a função project-owner herda da função Kubernetes-admin. Assim, tanto as funções project-member quanto project-owner permitirão o gerenciamento de namespaces, incluindo a capacidade de criar e excluir namespaces.

  • Escolha Custom para criar uma função personalizada rapidamente: Funções de Projeto Personalizadas.

Para adicionar membros:

  1. Na aba Membros, clique em Adicionar.

  2. No campo Selecionar Membro, pesquise por um usuário ou grupo que você deseja atribuir acesso ao projeto. Você só pode pesquisar grupos se a autenticação externa estiver habilitada.

    Notes
    • Pelo menos 2 caracteres devem ser digitados na caixa de pesquisa para que os resultados apareçam.

    • Os usuários podem ser pesquisados com base em seu nome de usuário ou nome exibido.

    • A pesquisa é baseada em prefixo (por exemplo, um usuário chamado Stan Dard aparecerá ao pesquisar por Sta, mas não ao pesquisar por Dar) e é sensível a maiúsculas e minúsculas.

  3. Na seção Permissões do Projeto, escolha uma função. Para mais informações, consulte a documentação sobre funções de projeto.

Opcional: Adicionar Cotas de Recursos

As cotas de recursos limitam os recursos que um projeto (e seus namespaces) podem consumir. Para mais informações, veja Cotas de Recursos.

Para adicionar uma cota de recurso,

  1. Na aba Cotas de Recursos, clique em Adicionar Recurso.

  2. Selecione um Tipo de Recurso. Para mais informações, veja Cotas de Recursos..

  3. Insira valores para o Limite do Projeto e o Limite Padrão do Namespace.

  4. Opcional: Especifique Limite Padrão de Recursos do Contêiner, que será aplicado a cada contêiner iniciado no projeto. O parâmetro é recomendado se você tiver limites de CPU ou Memória definidos pela Cota de Recursos. Ele pode ser substituído em um nível de namespace individual ou de contêiner. Para mais informações, veja Limite Padrão de Recursos do Contêiner

  5. Clique em Criar.

Resultado: Seu projeto foi criado. Você pode visualizá-lo a partir da visualização de Projetos/Namespaces do cluster.

Campo Descrição

Limite do Projeto

O limite geral de recursos para o projeto.

Limite Padrão do Namespace

O limite padrão de recursos disponível para cada namespace. Esse limite é propagado para cada namespace no projeto quando criado. O limite combinado de todos os namespaces do projeto não deve exceder o limite do projeto.

Excluindo Projetos

  1. No canto superior esquerdo, clique em ☰ > Gerenciamento de Cluster.

  2. Na página Clusters, vá para o cluster ao qual o projeto está vinculado e clique em Explorar.

  3. Clique em Cluster  Projetos/Namespaces.

  4. Encontre o projeto que você deseja excluir e clique em .

  5. Selecione Excluir.

Quando você exclui um projeto, quaisquer namespaces que estavam anteriormente associados ao projeto permanecerão no cluster. Você pode encontrar esses namespaces na interface do Rancher, na aba Não em um Projeto da página Projetos/Namespaces. Você pode reatribuir esses namespaces a um projeto, movendo‑os.

Leitura recomendada

Você pode criar projetos e membros do projeto de forma mais programática através da API Pública. Veja o documento de fluxo de trabalho do projeto para mais informações.