Melhores práticas e recomendações para executar contêineres e Kubernetes em ambientes de produção

Melhores práticas e recomendações para executar contêineres e Kubernetes em ambientes de produção
O ecossistema de tecnologias de contêineres está em rápida evolução e mudança, e, portanto, há uma falta de boas práticas de trabalho nesse campo. No entanto, Kubernetes e contêineres estão sendo cada vez mais utilizados — tanto para modernizar aplicativos legados quanto para desenvolver aplicativos modernos baseados na nuvem. 

Time Kubernetes aaS da Mail.ru reuniu previsões, dicas e melhores práticas para líderes do setor da Gartner, 451 Research, StacxRoх e outros. Elas permitirão garantir e acelerar a implementação de contêineres em ambientes de produção.

Como saber se sua empresa está pronta para implantar contêineres em um ambiente de produção

De acordo com a Gartner, em 2022, mais de 75% das organizações estarão utilizando aplicativos em contêineres na produção. Isso representa um aumento significativo em relação ao momento atual, quando menos de 30% das empresas utilizam tais aplicativos. 

De acordo com 451 Research, o mercado previsto para a aplicação de tecnologias de contêineres em 2022 será de $ 4,3 bilhões. Isso mais do que dobra as quantias previstas em 2019, com uma taxa de crescimento do mercado de 30%.

Em na pesquisa da Portworx e Aqua Security 87% dos entrevistados afirmaram que atualmente utilizam tecnologias de contêineres. Para comparação, em 2017, esse número era de 55%. 

Apesar do crescente interesse e da adoção de contêineres, sua implantação em produção requer treinamento devido à imaturidade tecnológica e à falta de know-how. As organizações devem ter uma visão realista dos processos de negócios que exigem a contêinerização de aplicativos. Os líderes de TI devem avaliar se possuem o conjunto de habilidades necessário para avançar, considerando a necessidade de um aprendizado rápido. 

Os especialistas da Gartner acreditam que as perguntas na figura abaixo ajudarão a entender se você está pronto para implantar contêineres em produção:

Melhores práticas e recomendações para executar contêineres e Kubernetes em ambientes de produção

Os erros mais comuns ao aplicar contêineres em produção

As organizações frequentemente subestimam os esforços necessários para operar contêineres em produção. A Gartner descobriu vários erros comuns nos cenários dos clientes ao aplicar contêineres em ambientes de produção:

Melhores práticas e recomendações para executar contêineres e Kubernetes em ambientes de produção

Como garantir a segurança dos contêineres

A segurança não pode ser tratada como algo para ser feito "depois". Ela deve ser integrada ao processo DevOps, e por isso surgiu até um termo especial — DevSecOps. As organizações precisam planejar a proteção do ambiente de contêiner durante todo o ciclo de vida do desenvolvimento, que inclui o processo de montagem e desenvolvimento, a implantação e a execução do aplicativo.

Recomendações da Gartner: 

  1. Integre o processo de escaneamento de imagens de aplicativo para detectar vulnerabilidades no pipeline de integração contínua/entrega contínua (CI/CD). Os aplicativos são escaneados nas fases de construção e execução do software. Enfatize a necessidade de escanear e identificar componentes de código aberto, bibliotecas e estruturas. O uso de versões antigas e vulneráveis por desenvolvedores é uma das principais causas de vulnerabilidades em containers.
  2. Melhore a configuração com os testes do Center for Internet Security (CIS), que estão disponíveis tanto para Docker quanto para Kubernetes.
  3. Certifique-se de aplicar controle de acesso, mantenha a separação de funções e implemente uma política de gerenciamento de segredos. Informações confidenciais, como chaves SSL (Secure Sockets Layer) ou credenciais de bancos de dados, devem ser criptografadas pelo orquestrador ou por serviços de gerenciamento de terceiros e fornecidas em tempo de execução.
  4. Evite containers com privilégios elevados utilizando a gestão de políticas de segurança, isso reduzirá os riscos potenciais de invasão.
  5. Utilize ferramentas de segurança que forneçam listas brancas, monitoramento comportamental e detecção de anomalias para prevenir ações maliciosas.

Recomendações da StacxRox:

  1. Utilize as capacidades incorporadas do Kubernetes. Configure o acesso dos usuários através de funções. Certifique-se de não conceder permissões desnecessárias a indivíduos, mesmo que possa levar algum tempo para refletir sobre as permissões minimamente necessárias. Pode parecer tentador conceder ao administrador do cluster privilégios amplos, pois isso economiza tempo na fase inicial. No entanto, qualquer compromisso ou erro nas contas pode levar a consequências destrutivas no futuro. 
  2. Evite a duplicação de permissões de acesso. Às vezes, pode ser útil fazer com que diferentes funções se sobreponham, mas isso pode causar problemas operacionais e criar 'zonas mortas' ao remover permissões. Além disso, é importante remover funções não utilizadas e inativas.
  3. Estabeleça políticas de rede: isole os módulos para limitar o acesso a eles; permita explicitamente o acesso à internet para os módulos que precisam, usando etiquetas; permita explicitamente a comunicação entre os módulos que precisam se comunicar entre si. 

Como organizar a monitoração de containers e serviços neles

Segurança e monitoração — principais problemas das empresas ao implantar clusters Kubernetes. Os desenvolvedores estão sempre mais focados nas funcionalidades dos aplicativos que desenvolvem do que nos aspectos de monitoração desses aplicativos. 

Recomendações da Gartner:

  1. Procure monitorar o estado dos containers ou serviços neles junto com a monitoração do sistema host.
  2. Prefira fornecedores e ferramentas com integração profunda na orquestração de containers, especialmente Kubernetes.
  3. Escolha ferramentas que ofereçam registro detalhado, descoberta automática de serviços e recomendações em tempo real usando análise e/ou aprendizado de máquina.

No blog da SolarWinds, é recomendado:

  1. Usar ferramentas para descoberta automática e rastreamento de métricas de containers, correlação de métricas de desempenho, como CPU, memória e tempo de atividade.
  2. Garantir o planejamento adequado de capacidade prevendo os prazos de esgotamento com base nas métricas de monitoração dos containers.
  3. Organizar a monitoração de aplicativos implantados em containers, com parâmetros de disponibilidade e desempenho, o que é útil tanto para o planejamento de capacidade quanto para a resolução de problemas de desempenho.
  4. Automatizar fluxos de trabalho, oferecendo suporte à gestão e escalabilidade para containers e seus ambientes de implantação.
  5. Automatizar o controle de acesso para monitorar a base de usuários, desativar contas obsoletas e de convidados, remover privilégios desnecessários.
  6. Assegure-se de que seu conjunto de ferramentas pode rastrear esses containers e aplicativos em diferentes ambientes (nuvem, local ou híbrido) para visualização e correlação de desempenho em infraestrutura, rede, sistemas e aplicativos.

Como armazenar dados e garantir sua segurança

Com o aumento do número de contêineres em execução com estado, os clientes precisam considerar o armazenamento de dados fora do host, bem como a necessidade de proteger esses dados. 

De acordo com da pesquisa Portworx e Aqua Security, a segurança dos dados está em primeiro lugar na lista de preocupações de segurança mencionadas pela maioria dos respondentes (61%). 

A criptografia de dados é a principal estratégia de segurança (64%), no entanto, os respondentes também utilizam monitoramento de runtime

(49%), varredura de vulnerabilidades em registros (49%), varredura de vulnerabilidades em pipelines CI/CD (49%) e bloqueio de anomalias através da proteção de runtime (48%).

Recomendações da Gartner:

  1. Escolha soluções de armazenamento de dados construídas sobre princípios de arquitetura de microsserviços. É melhor optar por aquelas que atendem aos requisitos de armazenamento de dados para serviços de contêineres, são independentes de hardware, gerenciadas por API, possuem arquitetura distribuída, suportam implantação local e implantação em nuvem pública.
  2. Evite plugins e interfaces proprietárias. Escolha fabricantes que forneçam integração com Kubernetes e suportem interfaces padrão, como CSI (Container Storage Interfaces).

Como trabalhar com redes

O modelo tradicional de rede corporativa, onde os profissionais de TI criam ambientes de desenvolvimento, teste, garantia de qualidade e produção para cada projeto, nem sempre se alinha bem com o fluxo de trabalho de desenvolvimento contínuo. Além disso, redes de contêineres abrangem vários níveis.

Em no blog da Magalix, reunimos regras de alto nível que devem ser seguidas na implementação de uma solução de rede de cluster:

  1. Os pods programados no mesmo nó devem ser capazes de trocar dados com outros módulos sem o uso de NAT (tradução de endereços de rede).
  2. Todos os demônios do sistema (processos em segundo plano, como kubelet) em execução em um determinado nó podem interagir com os pods que estão sendo executados nesse mesmo nó.
  3. Os pods que usam a rede do host, devem ser capazes de se conectar a todos os outros pods em todos os outros nós sem o uso de NAT. Observe que a rede do host é suportada apenas em hosts Linux.

As soluções de rede devem ser integradas de perto com os primitvos e as políticas do Kubernetes. Os líderes de TI devem buscar um alto grau de automação de rede, oferecendo aos desenvolvedores as ferramentas adequadas e a flexibilidade necessária.

Recomendações da Gartner:

  1. Verifique se seu CaaS (Container as a Service) ou sua rede SDN (Software Defined Network) oferece suporte às redes do Kubernetes. Se não, ou se o suporte for insuficiente, utilize a interface de rede CNI (Container Network Interface) que suporte a funcionalidade e as políticas necessárias para seus containers.
  2. Certifique-se de que seu CaaS ou PaaS (Platform as a Service) suporte a criação de controladores de entrada e/ou balanceadores de carga que distribuam o tráfego de entrada entre os nós do cluster. Se isso não for possível, considere o uso de proxies de terceiros ou mecanismos de service mesh.
  3. Capacite seus engenheiros de rede a trabalharem com redes Linux e ferramentas de automação de rede, a fim de reduzir a lacuna de habilidades e aumentar a flexibilidade.

Como gerenciar o ciclo de vida das aplicações

Para uma entrega de aplicações automatizada e ininterrupta, é necessário complementar a orquestração de containers com outras ferramentas de automação, como produtos de infraestrutura como código (IaC). Incluem-se aqui Chef, Puppet, Ansible e Terraform. 

Ferramentas de automação de construção e implantação de aplicações também são necessárias (veja "Quadrante Mágico para orquestração de lançamentos de aplicações"). Containers também oferecem capacidades de escalabilidade semelhantes às disponíveis na implantação de máquinas virtuais (VMs). Assim, os líderes de TI devem ter ferramentas para gerenciar o ciclo de vida dos containers.

Recomendações da Gartner:

  1. Estabeleça padrões para imagens de containers com base em tamanho, licenciamento e flexibilidade para a adição de componentes pelos desenvolvedores.
  2. Utilize sistemas de gerenciamento de configuração para gerenciar o ciclo de vida dos containers, que armazenam a configuração em camadas baseadas em imagens de base, localizadas em repositórios públicos ou privados.
  3. Integre a plataforma CaaS com ferramentas de automação para automatizar todo o fluxo de trabalho da aplicação.

Como gerenciar containers com orquestradores

As principais funcionalidades para a implantação de contêineres são fornecidas nos níveis de orquestração e planejamento. No planejamento, os contêineres são alocados nos hosts mais otimizados no cluster, conforme exigido pelos requisitos do nível de orquestração. 

O Kubernetes se tornou o padrão de fato para a orquestração de contêineres, com uma comunidade ativa e é suportado pela maioria dos principais provedores comerciais. 

Recomendações da Gartner:

  1. Defina os requisitos básicos para os controles de segurança, monitoramento, gerenciamento de políticas, persistência de dados, gerenciamento de redes e ciclo de vida dos contêineres.
  2. Com base nesses requisitos, escolha a ferramenta que melhor atenda às suas necessidades e cenários de uso.
  3. Use pesquisas da Gartner (veja "Como escolher um modelo de implantação do Kubernetes"), para entender as vantagens e desvantagens dos diferentes modelos de implantação do Kubernetes e escolher o mais adequado para a sua tarefa.
  4. Escolha um fornecedor que possa fornecer orquestração híbrida para contêineres de trabalho em múltiplos ambientes, com integração estreita com backends, planos de gerenciamento comuns e modelos de precificação consistentes.

Como utilizar as capacidades dos provedores de nuvem

Na Gartner, acredita-se que, o interesse pela implantação de contêineres em nuvem IaaS pública está crescendo devido à disponibilidade de ofertas prontas de CaaS, além da integração estreita dessas ofertas com outros produtos oferecidos pelos provedores de nuvem.

As nuvens IaaS oferecem consumo de recursos sob demanda, escalabilidade rápida e gerenciamento de serviços, que ajuda a evitar a necessidade de conhecimentos profundos sobre a infraestrutura e seu gerenciamento. A maioria dos provedores de nuvem oferece serviços de gerenciamento de contêineres, e alguns oferecem várias opções de orquestração. 

Os principais provedores de serviços gerenciados em nuvem estão listados na tabela: 

Provedor de nuvem
Tipo de serviço
Produto/serviço

Alibaba
Serviço Nativo de Nuvem
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes

Amazon Web Services (AWS)
Serviço Nativo de Nuvem
Amazon Elastic Container Services (ECS), Amazon ECS para Kubernetes (EKS), AWS Fargate

Giant Swarm
MSP
Infraestrutura Gerenciada de Kubernetes da Giant Swarm

Google
Serviço Nativo de Nuvem
Google Container Engine (GKE)

IBM
Serviço Nativo de Nuvem
IBM Cloud Kubernetes Service

Microsoft
Serviço Nativo de Nuvem
Azure Kubernetes Service, Azure Service Fabric

Oracle
Serviço Nativo de Nuvem
OCI Container Engine for Kubernetes

Platform9
MSP
Kubernetes Gerenciado

Red Hat
Serviço Hospedado
OpenShift Dedicado & Online

VMware
Serviço Hospedado
Cloud PKS (Beta)

Soluções em Nuvem Mail.ru*
Serviço Nativo de Nuvem
Contêineres em Nuvem Mail.ru

* Não vamos esconder, nós mesmos nos adicionamos na tradução 🙂

Fornecedores de nuvens públicas também estão adicionando novas funcionalidades e lançando produtos locais. Em breve, os provedores de nuvem irão expandir o suporte para nuvens híbridas e ambientes multicloud. 

Recomendações da Gartner:

  1. Avalie objetivamente as capacidades da sua organização para implementar e gerenciar as ferramentas adequadas, além de considerar serviços alternativos para gerenciamento de contêineres em nuvem.
  2. Escolha cuidadosamente o software, utilizando open source quando possível.
  3. Opte por fornecedores com modelos operacionais unificados em ambientes híbridos que oferecem gerenciamento de clusters integrados de um único painel, assim como provedores que simplificam o uso autônomo de IaaS.

Algumas dicas para escolher um provedor Kubernetes aaS do blog Replex:

  1. É importante buscar distribuições que suportem alta disponibilidade de forma nativa. Isso inclui suporte a várias arquiteturas principais, componentes etcd de alta disponibilidade, bem como backups e recuperação.
  2. Para garantir a mobilidade dos ambientes Kubernetes, é melhor escolher provedores de nuvem que suportem uma ampla gama de modelos de implantação: de locais a híbridos e multicloud. 
  3. As ofertas dos provedores também devem ser avaliadas com base na facilidade de configuração, instalação e criação de clusters, bem como atualizações, monitoramento e resolução de problemas. Um requisito básico é o suporte a atualizações de cluster totalmente automatizadas com tempo de inatividade zero. A solução escolhida também deve permitir a execução de atualizações manualmente. 
  4. Gerenciamento de identidade e acesso é importante tanto do ponto de vista da segurança quanto da gestão. Certifique-se de que a distribuição Kubernetes escolhida suporte a integração com as ferramentas de autenticação e autorização usadas internamente na empresa. RBAC e controle de acesso detalhado também são conjuntos de funcionalidades importantes.
  5. A distribuição selecionada deve ter uma solução de rede própria, definida pelo software e que atenda a uma ampla gama de requisitos de diferentes aplicações ou infraestrutura, ou então deve suportar uma das implementações populares de rede baseadas em CNI, incluindo Flannel, Calico, kube-router ou OVN.

A implementação de contêineres na produção está se tornando uma prioridade, como mostram os resultados de uma pesquisa realizada na sessão Gartner sobre infraestrutura, operações e estratégias de nuvem (IOCS) em dezembro de 2018:

Melhores práticas e recomendações para executar contêineres e Kubernetes em ambientes de produção
Como podemos ver, 27% dos entrevistados já utilizam contêineres em seu trabalho, enquanto 63% planejam fazê-lo.

Em na pesquisa da Portworx e Aqua Security 24% dos entrevistados relataram que investem mais de meio milhão de dólares por ano em tecnologias de contêineres, e 17% dos respondentes gastam mais de um milhão de dólares por ano nelas. 

Este artigo foi preparado pela equipe da plataforma de nuvem Soluções em Nuvem Mail.ru.

O que mais ler sobre o assunto:

  1. Melhores práticas de DevOps: relatório DORA.
  2. Kubernetes no espírito da pirataria com um modelo de implementação.
  3. 25 ferramentas úteis para o deploy e implementação do Kubernetes.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster