Melhores práticas e práticas recomendadas para execução de contêineres e Kubernetes em ambientes de produção

Melhores práticas e práticas recomendadas para execução de contêineres e Kubernetes em ambientes de produção
O ecossistema da tecnologia de contentorização está a evoluir e a mudar rapidamente, pelo que faltam boas práticas de trabalho nesta área. No entanto, Kubernetes e contêineres estão sendo cada vez mais usados, tanto para modernizar aplicações legadas quanto para desenvolver aplicações modernas em nuvem. 

Equipe Kubernetes aaS de Mail.ru coletou previsões, conselhos e melhores práticas para líderes de mercado do Gartner, 451 Research, StacxRoх e outros. Eles permitirão e acelerarão a implantação de contêineres em ambientes de produção.

Como saber se sua empresa está pronta para implantar containers em ambiente de produção

De acordo com o Gartner, em 2022, mais de 75% das organizações usarão aplicações conteinerizadas na produção. Isto é significativamente maior do que atualmente, quando menos de 30% das empresas utilizam tais aplicações. 

Conforme Pesquisa 451O mercado projetado para aplicações de tecnologia de contêineres em 2022 será de US$ 4,3 bilhões, o que representa mais que o dobro do valor projetado em 2019, com uma taxa de crescimento de mercado de 30%.

В Pesquisa Portworx e Aqua Security 87% dos entrevistados disseram que atualmente usam tecnologias de contêineres. Para efeito de comparação, em 2017 havia 55% desses entrevistados. 

Apesar do crescente interesse e adoção de contentores, colocá-los em produção requer uma curva de aprendizagem devido à imaturidade tecnológica e à falta de know-how. As organizações devem ser realistas em relação aos processos de negócios que exigem a conteinerização de aplicativos. Os líderes de TI devem avaliar se possuem as habilidades necessárias para avançar com a necessidade de aprender rapidamente. 

Especialistas do Gartner Acreditamos que as perguntas na imagem abaixo ajudarão você a determinar se está pronto para implantar contêineres em produção:

Melhores práticas e práticas recomendadas para execução de contêineres e Kubernetes em ambientes de produção

Os erros mais comuns ao usar contêineres na produção

As organizações muitas vezes subestimam o esforço necessário para operar os contêineres na produção. Gartner descobriu Alguns erros comuns em cenários de clientes ao usar contêineres em ambientes de produção:

Melhores práticas e práticas recomendadas para execução de contêineres e Kubernetes em ambientes de produção

Como manter os contêineres seguros

A segurança não pode ser tratada “mais tarde”. Ele deve ser integrado ao processo DevOps, por isso existe até um termo especial - DevSecOps. As organizações precisam planejar protegendo seu ambiente de contêiner durante todo o ciclo de vida de desenvolvimento, que inclui o processo de construção e desenvolvimento, implantação e lançamento do aplicativo.

Recomendações do Gartner

  1. Integre o processo de varredura de imagens de aplicativos em busca de vulnerabilidades em seu pipeline de integração/entrega contínua (CI/CD). Os aplicativos são verificados nos estágios de criação e inicialização do software. Enfatize a necessidade de verificar e identificar componentes, bibliotecas e estruturas de código aberto. Os desenvolvedores que usam versões antigas e vulneráveis ​​são uma das principais causas das vulnerabilidades dos contêineres.
  2. Melhore sua configuração com testes do Center for Internet Security (CIS), que estão disponíveis para Docker e Kubernetes.
  3. Certifique-se de aplicar controles de acesso, garantir a separação de funções e implementar uma política de gerenciamento de segredos. Informações confidenciais, como chaves Secure Sockets Layer (SSL) ou credenciais de banco de dados, são criptografadas pelo orquestrador ou por serviços de gerenciamento de terceiros e expostas em tempo de execução
  4. Evite contêineres elevados gerenciando políticas de segurança para reduzir possíveis riscos de violação.
  5. Use ferramentas de segurança que fornecem listas de permissões, monitoramento comportamental e detecção de anomalias para evitar atividades maliciosas.

Recomendações da StacxRox:

  1. Aproveite os recursos integrados do Kubernetes. Configure o acesso para usuários que usam funções. Certifique-se de não conceder permissões desnecessárias a entidades individuais, mesmo que possa levar algum tempo para pensar nas permissões mínimas necessárias. Pode ser tentador conceder amplos privilégios ao administrador do cluster, pois isso inicialmente economiza tempo. No entanto, qualquer comprometimento ou erro na conta pode levar a consequências devastadoras no futuro. 
  2. Evite permissões de acesso duplicadas. Às vezes, pode ser útil ter diferentes funções sobrepostas, mas isso pode levar a problemas operacionais e também criar pontos cegos ao remover permissões. Também é importante remover funções não utilizadas e inativas.
  3. Defina políticas de rede: isole módulos para limitar o acesso a eles; permitir explicitamente o acesso à Internet para os módulos que precisam dele usando tags; Permitir explicitamente a comunicação entre os módulos que precisam se comunicar entre si. 

Como organizar o monitoramento de contêineres e serviços neles

Segurança e Monitoramento - principais problemas das empresas ao implantar clusters Kubernetes. Os desenvolvedores estão sempre mais focados nos recursos dos aplicativos que desenvolvem do que nos aspectos monitorando esses aplicativos

Recomendações do Gartner:

  1. Tente monitorar o estado dos contêineres ou serviços neles em conjunto com o monitoramento dos sistemas host.
  2. Procure fornecedores e ferramentas com integração profunda à orquestração de contêineres, especialmente Kubernetes.
  3. Escolha ferramentas que forneçam registro detalhado, descoberta automática de serviços e recomendações em tempo real usando análises e/ou aprendizado de máquina.

O blog SolarWinds aconselha:

  1. Use ferramentas para descobrir e rastrear automaticamente métricas de contêiner, correlacionando métricas de desempenho como CPU, memória e tempo de atividade.
  2. Garanta o planejamento ideal da capacidade prevendo datas de esgotamento da capacidade com base em métricas de monitoramento de contêineres.
  3. Monitore aplicativos em contêineres quanto à disponibilidade e desempenho, o que é útil tanto para planejamento de capacidade quanto para solução de problemas de desempenho.
  4. Automatize fluxos de trabalho fornecendo suporte de gerenciamento e dimensionamento para contêineres e seus ambientes de hospedagem.
  5. Automatize o controle de acesso para monitorar sua base de usuários, desabilitar contas obsoletas e de convidados e remover privilégios desnecessários.
  6. Garanta que seu conjunto de ferramentas possa monitorar esses contêineres e aplicativos em vários ambientes (nuvem, local ou híbrido) para visualizar e avaliar o desempenho em infraestrutura, rede, sistemas e aplicativos.

Como armazenar dados e garantir sua segurança

Com o aumento dos contentores de trabalho com estado, os clientes precisam de considerar a presença de dados fora do anfitrião e a necessidade de proteger esses dados. 

Conforme Pesquisa Portworx e Aqua Security, a segurança dos dados está no topo da lista de preocupações de segurança citadas pela maioria dos entrevistados (61%). 

A criptografia de dados é a principal estratégia de segurança (64%), mas os entrevistados também usam monitoramento de tempo de execução

(49%), verificação de vulnerabilidades em registros (49%), verificação de vulnerabilidades em pipelines de CI/CD (49%) e bloqueio de anomalias por meio de proteção em tempo de execução (48%).

Recomendações do Gartner:

  1. Escolha soluções de armazenamento baseadas em princípios arquitetura de microsserviços. É melhor focar naqueles que atendem aos requisitos de armazenamento de dados para serviços de contêiner, são independentes de hardware, orientados por API, possuem uma arquitetura distribuída, suportam implantação local e implantação na nuvem pública.
  2. Evite plug-ins e interfaces proprietários. Escolha fornecedores que forneçam integração com Kubernetes e suportem interfaces padrão, como CSI (Container Storage Interfaces).

Como trabalhar com redes

O modelo de rede empresarial tradicional, onde as equipes de TI criam ambientes de desenvolvimento, teste, garantia de qualidade e produção em rede para cada projeto, nem sempre se adapta bem ao fluxo de trabalho de desenvolvimento contínuo. Além disso, as redes de contêineres abrangem múltiplas camadas.

В blog Magalix coletado regras de alto nível que a implementação de uma solução de rede de cluster deve cumprir:

  1. Os pods agendados no mesmo nó devem ser capazes de se comunicar com outros pods sem usar NAT (Network Address Translation).
  2. Todos os daemons do sistema (processos em segundo plano, como kubelet) em execução em um nó específico podem se comunicar com pods em execução no mesmo nó.
  3. Pods usando rede hospedeira, deve ser capaz de se comunicar com todos os outros pods em todos os outros nós sem usar NAT. Observe que a rede de host só é suportada em hosts Linux.

As soluções de rede devem ser totalmente integradas às políticas e primitivas do Kubernetes. Os líderes de TI devem buscar um alto grau de automação de rede e fornecer aos desenvolvedores as ferramentas certas e flexibilidade suficiente.

Recomendações do Gartner:

  1. Descubra se o seu CaaS (container como serviço) ou o seu SDN (Software Defined Network) suporta redes Kubernetes. Caso contrário, ou o suporte for insuficiente, use a interface de rede CNI (Container Network Interface) para seus contêineres, que oferece suporte às funcionalidades e políticas necessárias.
  2. Certifique-se de que seu CaaS ou PaaS (plataforma como serviço) oferece suporte à criação de controladores de entrada e/ou balanceadores de carga que distribuem o tráfego de entrada entre os nós do cluster. Se esta não for uma opção, explore o uso de proxies ou malhas de serviço de terceiros.
  3. Treine seus engenheiros de rede em redes Linux e ferramentas de automação de rede para reduzir a lacuna de habilidades e aumentar a agilidade.

Como gerenciar o ciclo de vida do aplicativo

Para a entrega automatizada e contínua de aplicativos, você precisa complementar a orquestração de contêineres com outras ferramentas de automação, como produtos de infraestrutura como código (IaC). Isso inclui Chef, Puppet, Ansible e Terraform. 

Também são necessárias ferramentas de automação para criar e implementar aplicativos (consulte “Quadrante Mágico para Orquestração de Liberação de Aplicativos"). Os contêineres também fornecem recursos de extensibilidade semelhantes aos disponíveis na implantação de máquinas virtuais (VMs). Portanto, os líderes de TI devem ter ferramentas de gerenciamento do ciclo de vida do contêiner.

Recomendações do Gartner:

  1. Defina padrões para imagens de contêiner base com base no tamanho, licenciamento e flexibilidade para que os desenvolvedores adicionem componentes.
  2. Use sistemas de gerenciamento de configuração para gerenciar o ciclo de vida de contêineres que colocam a configuração em camadas com base em imagens base localizadas em repositórios públicos ou privados.
  3. Integre sua plataforma CaaS com ferramentas de automação para automatizar todo o fluxo de trabalho de seu aplicativo.

Como gerenciar contêineres com orquestradores

A principal funcionalidade para implantação de contêineres é fornecida nas camadas de orquestração e planejamento. Durante o agendamento, os contêineres são colocados nos hosts mais ideais do cluster, conforme determinado pelos requisitos da camada de orquestração. 

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

Recomendações do Gartner:

  1. Defina requisitos básicos para controles de segurança, monitoramento, gerenciamento de políticas, persistência de dados, rede e gerenciamento do ciclo de vida de contêineres.
  2. Com base nesses requisitos, selecione a ferramenta que melhor atende às suas necessidades e casos de uso.
  3. Use a pesquisa do Gartner (consulte "Como escolher um modelo de implantação do Kubernetes") para entender os prós e os contras dos diferentes modelos de implantação do Kubernetes e escolher o melhor para sua aplicação.
  4. Selecione um provedor que possa fornecer orquestração híbrida para contêineres de trabalho em vários ambientes com forte integração de back-end, planos de gerenciamento comuns e modelos de preços consistentes.

Como usar os recursos dos provedores de nuvem

O Gartner acreditaque o interesse na implantação de contêineres em IaaS de nuvem pública está crescendo devido à disponibilidade de ofertas CaaS prontas, bem como à forte integração dessas ofertas com outros produtos oferecidos por provedores de nuvem.

As nuvens IaaS oferecem consumo de recursos sob demanda, escalabilidade rápida e gerenciamento de serviço, o que ajudará a evitar a necessidade de um conhecimento aprofundado da infraestrutura e da sua manutenção. A maioria dos provedores de nuvem oferece um serviço de gerenciamento de contêineres e alguns oferecem diversas opções de orquestração. 

Os principais provedores de serviços gerenciados em nuvem são apresentados na tabela: 

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

Alibaba
Serviço de nuvem nativo
Alibaba Cloud Container Service, Alibaba Cloud Container Service para Kubernetes

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

Enxame Gigante
MSP
Infraestrutura Kubernetes gerenciada por Giant Swarm

Google
Serviço de nuvem nativo
Google Container Engine (GKE)

IBM
Serviço de nuvem nativo
Serviço IBM Cloud Kubernetes

Microsoft
Serviço de nuvem nativo
Serviço Azure Kubernetes, Azure Service Fabric

Oracle
Serviço de nuvem nativo
Mecanismo de contêiner OCI para Kubernetes

Platform9
MSP
Kubernetes gerenciado

Red Hat
Serviço hospedado
OpenShift dedicado e on-line

VMware
Serviço hospedado
Nuvem PKS (beta)

Soluções em nuvem Mail.ru*
Serviço de nuvem nativo
Contêineres de nuvem Mail.ru

* Não vamos esconder, nós mesmos nos adicionamos aqui durante a tradução :)

Os provedores de nuvem pública também estão adicionando novos recursos e lançando produtos locais. Num futuro próximo, os fornecedores de nuvens desenvolverão suporte para nuvens híbridas e ambientes multinuvem. 

Recomendações do Gartner:

  1. Avalie objetivamente a capacidade da sua organização de implantar e gerenciar ferramentas apropriadas e considere serviços alternativos de gerenciamento de contêineres em nuvem.
  2. Escolha o software com cuidado, use código aberto sempre que possível.
  3. Escolha provedores com modelos operacionais comuns em ambientes híbridos que oferecem gerenciamento de painel único de clusters federados, bem como provedores que facilitam a auto-hospedagem de IaaS.

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

  1. Vale a pena procurar distribuições que suportem alta disponibilidade pronta para uso. Isso inclui suporte para várias arquiteturas importantes, componentes etcd altamente disponíveis e backup e recuperação.
  2. Para garantir a mobilidade em seus ambientes Kubernetes, é melhor escolher provedores de nuvem que ofereçam suporte a uma ampla variedade de modelos de implantação, desde locais até híbridos e multinuvem. 
  3. As ofertas do provedor também devem ser avaliadas com base na facilidade de configuração, instalação e criação de cluster, bem como em atualizações, monitoramento e solução de problemas. O requisito básico é oferecer suporte a atualizações de cluster totalmente automatizadas com tempo de inatividade zero. A solução escolhida também deve permitir que você execute atualizações manualmente. 
  4. A gestão de identidade e acesso é importante tanto do ponto de vista da segurança como da governação. Certifique-se de que a distribuição Kubernetes escolhida oferece suporte à integração com as ferramentas de autenticação e autorização que você usa internamente. O RBAC e o controle de acesso refinado também são conjuntos de recursos importantes.
  5. A distribuição escolhida deve ter uma solução de rede nativa definida por software que cubra uma ampla gama de diferentes requisitos de aplicativos ou infraestrutura ou oferecer suporte a uma das implementações de rede populares baseadas em CNI, incluindo Flannel, Calico, kube-router ou OVN.

A introdução de contêineres na produção está se tornando a direção principal, como evidenciado pelos resultados de uma pesquisa realizada em Sessões do Gartner sobre infraestrutura, operações e estratégias de nuvem (IOCS) em dezembro de 2018:

Melhores práticas e práticas recomendadas para execução de contêineres e Kubernetes em ambientes de produção
Como você pode ver, 27% dos entrevistados já utilizam contêineres em seu trabalho e 63% planejam fazê-lo.

В Pesquisa Portworx e Aqua Security 24% dos entrevistados relataram investir mais de meio milhão de dólares por ano em tecnologias de contêineres e 17% dos entrevistados gastaram mais de um milhão de dólares por ano nelas. 

Artigo preparado pela equipe da plataforma em 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 para implementação.
  3. 25 ferramentas úteis para implantação e adoção do Kubernetes.

Fonte: habr.com

Adicionar um comentário