Kubernetes: dicas e truques na orquestração de containers - Parte 4

Renato Groffe
Azure na Pratica
Published in
3 min readJun 15, 2020

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):

https://bit.ly/anp-github-blog-groffe-25

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:

ASP.NET 5 Preview 4 + REST API + Docker + Linux Alpine

--

--

Renato Groffe
Azure na Pratica

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker