Unicamp Kubernetes Service
A Nuvem 2.0 da Unicamp oferece suporte a Kubernetes, porém manter um cluster, gerenciar, e manter uma estrutura de Load Balancer, é custoso. Pensando nas Unidades que tem demanda pelo uso de Kubernetes, porém não justificam a adoção de um cluster inteiro exclusivo da Unidade, o Detic está oferecendo um cluster de Kubernetes compartilhado.
Solicitando acesso
Para aderir ao uso do cluster compartilhado, é necessário abrir uma solicitação no endereço: https://unicamp-agil.atlassian.net/servicedesk/customer/portal/16/group/84/create/236. Ao abrir a solicitação, por favor informe os seguintes campos:
Nome da Unidade
Projeto ou serviço que utilizará o cluster
Usuários da autenticação central das pessoas que administrarão os recursos do cluster
Requisição de Certificado para cada usuário do item acima (Enviar apenas o arquivo
.csr
. Guardar o arquivo.key
que será utilizado para realizar o login do cluster, junto com o certificado que será gerado e enviado de volta pelo e-mail do chamado)Quantidade de CPU e Memória necessária para rodar os recursos (Documentação de como Kubernetes trata esses recursos)
A requisição de certificado deve ser gerada conforme o comando abaixo, para cada usuário.
user=<meu_usuario_autenticacao_central> && openssl req -newkey rsa:2048 -nodes -keyout $user.key -out $user.csr -subj "/CN=$user"
Será enviado o certificado de cada usuário (<meu_usuario_autenticacao_central>.crt
), o CA do kubernetes (kube-ca.crt
) e o namespace
criado.
Acessando o cluster
Para acessar o cluster, é necessário ter instalado o kubectl (disponível para Linux, MacOS e Windows) e executar os comandos abaixo.
export user=<meu_usuario_autenticacao_central>
kubectl config set-credentials uks-$user --embed-certs --client-certificate $user.crt --client-key $user.key
kubectl config set-cluster uks --embed-certs --certificate-authority kube-ca.crt --server https://177.220.120.104:6443
kubectl config set-context uks --cluster uks --user uks-$user --namespace <MEU_NAMESPACE>
kubectl config use-context uks
Obs: O nome da credencial, do cluster e do contexto são sugestões, pode ser adaptado conforme a necessidade de cada um.
Observações
Ingress
Não temos IPs disponíveis nesse ambiente, portanto o uso de Service
do tipo LoadBalancer
não funciona.
Para contornar essa indisponibilidade, está disponível um IngressController
nginx configurado como default, portanto é possível utilizar Ingress
para criar seu endpoint. O IP do IngressController é 177.220.120.107 e responde pelo nome uks.nuvem.unicamp.br. Deve-se criar um CNAME no DNS da Unidade apontando para o nome uks.nuvem.unicamp.br.
Caso queira fazer apenas testes, pode-se utilizar um subdomínio (1 nível) de uks.nuvem.unicamp.br que já está configurado com o CNAME, exemplo: meu-projeto.uks.nuvem.unicamp.br
Storage
Existe um serviço de NFS já configurado com StorageClass default.
Network Policies
É muito importante o uso de NetworkPolicies
para proteger seus pods
, pois, como o cluster é compartilhado, os serviços estão expostos no cluster inteiro.