Nesse repositório são descritas as formas de acessos dos usuários a nuvem CaaS/PaaS (Containers as a service/Platform as a Service/) kubernetes (k8s) do IFSC-SJE. Também são descritos seus namespaces e limites.
Para ter acesso a nuvem CaaS/PaaS k8s (https://tectonic.sj.ifsc.edu.br) entre em contato com a CTIC-SJE pelo email [email protected] pedindo a criação de um usuário e relatando brevemente qual será o uso e por quanto tempo necessita do acesso.
Utilizamos autenticação RBAC do k8s provida pelo tectonic-identity e vinculamos os usuários a determinados namespaces informados a seguir.
Motivação para usar namespaces(retirado daqui e traduzido pelo google translate):
Um único cluster deve ser capaz de satisfazer as necessidades de múltiplos usuários ou grupos de usuários (uma "comunidade de usuários").
Os namespaces k8s ajudam diferentes projetos, equipes ou clientes a compartilhar um cluster k8s.
Ele faz isso fornecendo o seguinte:
- Um escopo para Nomes.
- Um mecanismo para anexar autorização e política a uma subseção do cluster.
Cada comunidade de usuários quer ser capaz de trabalhar isoladamente de outras comunidades.
Cada comunidade de usuários tem sua própria:
- Recursos (pods, serviços, controladores de replicação, etc.)
- Políticas (que podem ou não podem realizar ações em sua comunidade)
- Restrições (esta comunidade tem permissão dessa quantidade de cota, etc.)
O espaço de nomes fornece um escopo exclusivo para:
- Recursos nomeados (para evitar colisões básicas de nomeação)
- Autoridade de gerenciamento delegada para usuários confiáveis
- Capacidade de limitar o consumo de recursos da comunidade
Os casos de uso incluem:
- Como um operador de cluster, eu quero apoiar múltiplas comunidades de usuários em um único cluster.
- Como operador de cluster, eu quero delegar autoridade para partições do cluster para usuários confiáveis nessas comunidades.
- Como operador de cluster, eu quero limitar a quantidade de recursos que cada comunidade pode consumir para limitar o impacto a outras comunidades que usam o cluster.
- Como um usuário de cluster, eu quero interagir com recursos que são pertinentes para minha comunidade de usuários em isolamento do que outras comunidades de usuários estão fazendo no cluster.
- producao
- desenvolvimento
- alunos
- professores
- ensino
- pesquisa
- projetos
Foram configuradas as seguintes Resource Quotas (cotas de recurso) para os seguintes namespace:
Name: resourcequota-alunos
Namespace: alunos
Resource Used Hard
-------- ---- ----
limits.cpu 0 3
limits.memory 0 10Gi
pods 0 20
requests.cpu 0 1
requests.memory 0 500Mi
Name: resourcequota-professores
Namespace: professores
Resource Used Hard
-------- ---- ----
limits.cpu 0 3
limits.memory 0 10Gi
pods 0 20
requests.cpu 0 1
requests.memory 0 500Mi
Name: resourcequota-ensino
Namespace: ensino
Resource Used Hard
-------- ---- ----
limits.cpu 0 10
limits.memory 0 10Gi
pods 0 15
requests.cpu 0 2
requests.memory 0 2Gi
Name: resourcequota-projetos
Namespace: projetos
Resource Used Hard
-------- ---- ----
limits.cpu 0 6
limits.memory 0 10Gi
pods 0 10
requests.cpu 0 2
requests.memory 0 2Gi
Para verificar a cota utilizada:
kubectl describe quota resourcequota-NAMESPACE --namespace=NAMESPACE
Quando um POD for instanciado sem valores de request e limit serão atribuidos os seguintes valores:
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 256Mi
defaultRequest:
memory: 128Mi
type: Container
---
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
cpu: 300m
defaultRequest:
cpu: 200m
type: Container
Para verificar o LimitRange utilize:
kubectl describe limitrange --namespace=NAMESPACE