|
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
Criando um Projeto
Os recursos do projeto só podem ser criados no cluster de gerenciamento. Veja abaixo sobre criando namespaces sob projetos em um cluster gerenciado.
Criando um Projeto Básico
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
EOF
Ao criar um novo projeto, você tem duas opções principais para definir o nome:
-
Geração Automática: Use
metadata.generateNamepara garantir um ID de projeto único. No entanto, observe que você deve usarkubectl create(em vez dekubectl apply) com esta opção, poiskubectl applynão a suporta. -
Nomeação Manual: Você pode definir explicitamente o ID do projeto usando
metadata.name. Se um projeto com esse nome exato já existir, o pedido de nome é negado. O nome exibido na interface é definido porspec.displayName. Sespec.displayNamenão for fornecido, o campometadata.nameé usado em vez disso.
Defina metadata.namespace e spec.clusterName para o ID do cluster ao qual o projeto pertence.
Se você criar um projeto através de uma conta de membro do cluster e quiser que essa conta possa acessar o projeto, deve incluir a anotação field.cattle.io/creatorId e configurá-la com o ID de usuário da conta do membro do cluster.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
annotations:
field.cattle.io/creatorId: user-id
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
EOF
Definir o campo field.cattle.io/creatorId cria um ProjectRoleTemplateBinding que concede ao usuário especificado a capacidade de ver os recursos do projeto com o comando get e visualizar o projeto na interface do Rancher. Contas de proprietário e administrador do cluster não precisam definir essa anotação para realizar essas tarefas.
Definir a anotação field.cattle.io/creator-principal-name para o principal do usuário preserva-a em um projectroletemplatebinding criado automaticamente para o proprietário do projeto.
Se você não quiser que o criador seja adicionado como membro proprietário (por exemplo, se o criador for um administrador do cluster) ao projeto, pode definir a anotação field.cattle.io/no-creator-rbac como true, o que impedirá a criação do projectroletemplatebinding correspondente.
Criando um Projeto Com uma Quota de Recursos
Consulte Kubernetes Resource Quota.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
resourceQuota:
limit:
limitsCpu: 1000m
namespaceDefaultResourceQuota:
limit:
limitsCpu: 50m
EOF
Criando um Projeto Com Limites de Contêiner
Consulte Kubernetes Limit Ranges.
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: Project
metadata:
generateName: p-
namespace: c-m-abcde
spec:
clusterName: c-m-abcde
displayName: myproject
containerDefaultResourceLimit:
limitsCpu: 100m
limitsMemory: 100Mi
requestsCpu: 50m
requestsMemory: 50Mi
EOF
Namespace de Apoio
Após criar o projeto, o campo status.backingNamespace é preenchido. Isso representa o namespace no cluster de gerenciamento que é criado para gerenciar recursos relacionados ao projeto. Exemplos de recursos armazenados no namespace de apoio são segredos com escopo de projeto e vinculações de modelo de função do projeto.
Adicionando um Membro a um Projeto
Procure o namespace de apoio do projeto para especificar o valor do campo metadata.namespace e procure o ID do projeto para especificar o valor do campo projectName.
kubectl --namespace c-m-abcde get projects
Procure o ID do template de papel para especificar o valor do campo roleTemplateName (por exemplo, project-member ou project-owner).
kubectl get roletemplates
Ao adicionar um membro usuário, especifique o campo userPrincipalName:
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: ProjectRoleTemplateBinding
metadata:
generateName: prtb-
namespace: c-m-abcde-p-vwxyz
projectName: c-m-abcde:p-vwxyz
roleTemplateName: project-member
userPrincipalName: keycloak_user://user
EOF
Ao adicionar um membro grupo, especifique o campo groupPrincipalName em vez disso:
kubectl create -f - <<EOF
apiVersion: management.cattle.io/v3
kind: ProjectRoleTemplateBinding
metadata:
generateName: prtb-
namespace: p-vwxyz
projectName: c-m-abcde:p-vwxyz
roleTemplateName: project-member
groupPrincipalName: keycloak_group://group
EOF
Crie um projectroletemplatebinding para cada papel que você deseja atribuir ao membro do projeto.
Listando Membros do Projeto
Procure o namespace de apoio do projeto:
kubectl --namespace c-m-abcde get projects
Para listar as ligações de modelo de função do projeto no namespace de apoio do projeto:
kubectl --namespace c-m-abcde-p-vwxyz get projectroletemplatebindings
Apagando um Membro de um Projeto
Procure os IDs das ligações de modelo de função do projeto que contêm o membro no namespace do projeto, conforme descrito na seção Listando Membros do Projeto.
Delete a ligação de modelo de função do projeto no namespace do projeto:
kubectl --namespace c-m-abcde-p-vwxyz delete projectroletemplatebindings prtb-qx874 prtb-7zw7s
Criando um Namespace em um Projeto
O recurso do Projeto reside no cluster de gerenciamento, mesmo que o Projeto seja para um cluster gerenciado. Os namespaces sob o projeto residem no cluster gerenciado.
No cluster de gerenciamento, procure o ID do projeto para o cluster que você está administrando, se gerado usando metadata.generateName:
kubectl --namespace c-m-abcde get projects
No cluster gerenciado, crie um namespace com uma anotação de projeto:
kubectl apply -f - <<EOF
apiVersion: v1
kind: Namespace
metadata:
name: mynamespace
annotations:
field.cattle.io/projectId: c-m-abcde:p-vwxyz
EOF
Observe o formato, <cluster ID>:<project ID>.
Apagando um Projeto
Procure o projeto a ser excluído no namespace do cluster:
kubectl --namespace c-m-abcde get projects
Delete o projeto no namespace do cluster:
kubectl --namespace c-m-abcde delete project p-vwxyz
Observe que este comando não exclui os namespaces e recursos que anteriormente pertenciam ao projeto.
Ele exclui todas as ligações de modelo de função do projeto, portanto, recriar o projeto não restaurará os membros adicionados ao projeto, e você terá que adicionar os usuários como membros novamente.