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.generateName para garantir um ID de projeto único. No entanto, observe que você deve usar kubectl create (em vez de kubectl apply) com esta opção, pois kubectl apply nã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 por spec.displayName. Se spec.displayName não for fornecido, o campo metadata.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

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

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.