Kubernetes: dicas e truques na orquestração de containers - Parte 4
Neste quarto artigo dou continuidade à série com dicas e truques envolvendo a orquestração de containers com Kubernetes.
A seguir listei os links dos 3primeiros posts que já publiquei, caso ainda não tenha consultado os mesmos ou deseje revê-los:
Kubernetes: dicas e truques na orquestração de containers - Parte 1
Kubernetes: dicas e truques na orquestração de containers - Parte 2
Kubernetes: dicas e truques na orquestração de containers - Parte 3
E aproveito este espaço para um convite… Que tal participar do primeiro treinamento online sobre GitHub Actions promovido pelo Azure na Prática e que acontecerá durante o dia 08/08/2020 (sábado), cobrindo boas práticas + estratégias de build/deployment e o uso desta solução de automação com tecnologias como Docker, Kubernetes, Azure App Service, Azure Functions e outros serviços da nuvem Microsoft? Acesse então o link a seguir para efetuar sua inscrição no preço promocional com 25% de desconto, apenas R$ 300,00 (inclui certificado e grupo para resolução de dúvidas após o curso):
Namespaces: organizando e isolando recursos num cluster Kubernetes
É extremamente comum que um cluster Kubernetes seja compartilhado por múltiplos projetos, cada um contando com diferentes objetos. Tal fato nos leva à necessidade de empregar algum recurso a fim de organizar/isolar as estruturas específicas de um projeto. Com isto evitaríamos potenciais erros, teríamos a possibilidade de separar componentes mesmo por ambiente (Teste/Produção) e até de aplicar políticas customizadas de controle de acesso a grupos específicos de objetos.
E como faríamos tudo isso com o Kubernetes? Através do uso de namespaces!
A instrução a seguir permite a criação de um novo namespace:
kubectl create namespace <NOME DO NAMESPACE>
Com o comando kubectl get namespaces podemos listar os diferentes namespaces existentes em um cluster (exceto por teste-githubactions, os demais namespaces relacionados neste exemplo se referem a estruturas do próprio ecossistema do Kubernetes):
Ao manipular objetos e estruturas do Kubernetes que estejam vinculadas a um namespace devemos sempre referenciá-lo, utilizando para isto o atributo -n seguindo por seu respectivo nome. Caso desejemos visualizar Deployments, Pods e Services de um namespace chamado teste-githubactions usaríamos então:
kubectl get deployments -n teste-githubactionskubectl get pods -n teste-githubactionskubectl get services -n teste-githubactions
Para excluir um namespace utilizamos a instrução:
kubectl delete namespace <NOME DO NAMESPACE>
Ao tentar listar os objetos vinculados a teste-githubactions após sua exclusão constaremos que todos os componentes foram removidos juntamente com este namespace:
Deployment no Azure Kubernetes Service utilizando GitHub Actions
Na listagem a seguir está um exemplo de workflow do GitHub Actions para build automatizado de imagens Docker e deployment em um cluster Kubernetes utilizando:
- O Azure Container Registry para armazenamento de imagens;
- Um cluster do Azure Kubernetes Services.
A próxima imagem traz um exemplo de execução desse mesmo workflow via GitHub Actions:
Abordei em detalhes este workflow (incluindo sua execução) em uma live recente do Canal .NET:
Para o deployment no cluster Kubernetes utilizei uma cópia do seguinte repositório do GitHub: