Quintal - uma malha de serviço automatizada sobre uma infraestrutura híbrida e em várias nuvens



Teste quintais em seus próprios clusters: curl https://getbackyards.sh | sh && backyards install -a --run-demo curl https://getbackyards.sh | sh && backyards install -a --run-demo . Se estiver interessado, consulte os detalhes da versão mais recente .

Em junho, lançamos o Backyards , uma “malha de serviço” automatizada em cima do nosso operador Istio . Simplifica bastante o gerenciamento de malha de serviço em uma infraestrutura híbrida e em várias nuvens. O Backyards está integrado à plataforma de gerenciamento de contêiner Pipeline no Banzai Cloud, mas também está disponível como um produto independente . Obviamente, a integração com o Pipeline oferece muitos benefícios específicos (como gerenciar aplicativos em várias nuvens ), mas o Backyards funciona em qualquer instalação do Kubernetes.

No anúncio de quintais, discutimos algumas das principais funções: criar uma malha de serviço em poucos cliques, monitorar aplicativos através de uma representação gráfica exclusiva e gerenciar as funções do Istio a partir de uma interface conveniente. Mencionamos então que a plataforma é capaz de gerenciar redes de serviços de multi-cluster Istio em implementações híbridas e em várias nuvens.

Neste artigo, examinaremos mais de perto esse recurso - a malha automatizada de serviço de vários clusters .

Seja um ou mais clusters, um ambiente híbrido ou com várias nuvens, o Backyards usa o mesmo conjunto de recursos e uma interface conveniente. É extremamente fácil começar com um cluster e, em poucos cliques, expanda a malha de serviço para outros clusters (nuvem múltipla ou nuvem híbrida).

Motivação


Os sistemas híbridos e com várias nuvens entram rapidamente no dia a dia das empresas. O interesse e a tomada de decisões cresceram muito desde que o Google lançou o Anthos em abril deste ano.

Também notamos um aumento desse interesse na maioria das empresas com as quais discutimos esse tópico. Alguém prefere processar dados em seus próprios datacenters, acessando serviços em nuvem apenas nos horários de pico de carregamento. Outros procuram constantemente as taxas mais baixas e as melhores ofertas dos fornecedores de nuvem, aumentando a carga de trabalho somente quando o preço permitir. Todos eles precisam de uma maneira conveniente de se mover entre nuvens diferentes, a pedido de um cliente específico, devido a regulamentações regulatórias ou requisitos de negócios, além de criar várias topologias diferentes sobre essa infraestrutura híbrida e de várias nuvens.

À medida que a demanda por soluções híbridas e de vários clusters aumentava, começamos a pensar em como satisfazer as necessidades de nossos clientes.

Os usuários do pipeline trabalham com uma ou mais nuvens. Depende de quais funções específicas eles precisam. Podem ser distinguidas três funções principais:


Antecedentes


Desde o início, a plataforma Pipeline deu suporte à conexão de diferentes provedores de nuvem em diferentes níveis (clusters, implantações e serviços). Essa sempre foi uma das nossas prioridades.

Ao mesmo tempo, estávamos trabalhando ativamente no Istio. O operador foi lançado primeiro para simplificar a implantação e o gerenciamento do Istio e depois explorou seus recursos de vários clusters. Como resultado, criamos o Backyards, um produto automatizado para infraestrutura híbrida e em várias nuvens , integrado ao Pipeline, com o operador de código aberto Istio.

Quintais em Pipeline


No Pipeline, você pode instalar uma malha de serviço híbrida ou com vários clusters e gerenciá-la em um ambiente local ou em qualquer combinação dos cinco provedores de nuvem suportados.

A função de agrupar clusters (grupo de clusters) permite formar grupos de clusters, desde que você selecione um cluster como principal. Você pode associá-los a várias funções, como Multi-cluster Deployment ou Service Mesh .

Multi-cluster Deployment permite implantar o aplicativo simultaneamente em vários clusters. Aqui não nos concentramos nesse recurso, mas ele será usado para implantar facilmente o aplicativo em vários clusters. Leia mais sobre isso neste artigo .

Este artigo analisará mais de perto o recurso Service Mesh . Ele instala o Istio no cluster principal e une automaticamente todos os clusters do grupo usando o operador Istio . Depois disso, você obtém uma visão intercluster de seus serviços, e uma malha multicluster do ponto de vista do gerenciamento praticamente não difere da convencional de cluster único.

Funções


Criando uma malha de serviço


Vamos começar criando um cluster na AWS usando a distribuição Kubernetes leve e com certificação CNCF - PKE . Em seguida, crie uma malha de serviço Istio nesse cluster.

Ao criar uma malha de serviço, um grupo de clusters também é formado em segundo plano.

Após alguns segundos, a "grade" está instalada e pronta para uso.



Implantação de aplicativo


Agora precisamos de um aplicativo de demonstração com microsserviços para mostrar os recursos de nosso produto. Para fins de demonstração, criamos um projeto AllSpark muito simples e também fizemos um diagrama Helm com uma configuração preliminar da implantação do AllSpark, que simula um sistema de reserva de ingressos de cinema. Tudo é feito em nosso serviço de serviço em nuvem (SaaS) para diagramas Helm .

Usando a função de Multi-cluster Deployment acima mencionada, implantaremos esse aplicativo acessando a guia Multi Cluster Deployments na interface do usuário. Inclua o repositório https://charts.banzaicloud.io/gh/spotguidetest no Pipeline, o diagrama meshdemo e clique em meshdemo (para instalar todos os componentes, verifique se todos os valores estão definidos como true ).



Foi possível escolher uma implantação simples para um cluster, mas indicamos uma opção multicluster, que será útil mais tarde ao trabalhar com vários clusters.

Visão geral da malha de serviço


Se você retornar à lista de malhas de serviço e clicar no botão observe , um painel de controle será exibido. Como não há tráfego em nosso aplicativo de teste e não há métricas no sistema, aqui ainda não veremos nenhuma visualização. A interface possui uma função de test flight que direciona o tráfego para os pontos de extremidade selecionados. Se você clicar no botão HTTP no canto superior direito, poderá preencher um formulário contendo informações sobre o terminal e enviar algum tráfego de teste aos seus serviços. No nosso exemplo, o tráfego deve ir para o serviço de primeira página na porta 8080.

Após alguns segundos, uma programação de seus serviços será exibida. Os nós nele representam serviços ou cargas de trabalho e as setas representam conexões de rede entre diferentes serviços. O gráfico é baseado nas métricas do Istio provenientes do Prometheus.



Crie clusters adicionais


Estender a malha de serviço a clusters adicionais - mesmo de vários provedores de nuvem diferentes - leva apenas alguns cliques. Vamos criar três clusters adicionais em três provedores diferentes, é mais interessante. Podemos implantar facilmente outro cluster PKE no Azure, bem como clusters OKE e GKE.



Extensão de malha de serviço


Vamos voltar à lista de malhas de serviço, pressionar o botão RESIZE MESH e, em seguida, ADD NEW CLUSTER . Selecione os clusters criados anteriormente e pressione o botão ADD . Isso é tudo.



A expansão pode levar vários minutos: cada cluster deve se conectar e atingir o estado HEALTHY .

Implantando um aplicativo em vários clusters


Agora temos uma malha de serviço em vários clusters, e a função de Multi-cluster Deployment vários clusters no Pipeline foi ativada anteriormente, portanto, é fácil implantar nossos microsserviços de demonstração nesses clusters. Neste diagrama Helm específico, você pode facilmente ligar e desligar os componentes. Como a função Multi-cluster Deployment suporta a redefinição de parâmetros para cada cluster, você só precisa editar a implantação e estabelecer quais componentes queremos executar em qual cluster.

Para a implantação de vários clusters, alteramos as configurações da seguinte maneira:

PKE AWS

services: true
istioresources: true
frontpage: true
catalog: true
bookings: true

PKE Azure

services: true
moviesv1: true
moviesv2: true
moviesv3: true

OKE

services: true
payments: true
notifications: true

GKE

services: true
analytics: true




Visão geral da malha de serviço em vários clusters


Mais uma vez, selecione test flight na interface para direcionar tráfego adicional para o terminal selecionado anteriormente. Após alguns segundos, algo semelhante ao gráfico abaixo aparecerá. Agora, nosso aplicativo está distribuído em quatro clusters em quatro provedores diferentes.

Incrível , né ?!



Configuração NRA


Antes de terminar este artigo, dê uma olhada na última configuração: Horizontal Pod Autoscaler . Na página Single-cluster Deployment no Pipeline, você pode configurar facilmente o HPA para qualquer implantação (no nosso caso, analytics-v1 ).



Ao instalar o HPA e enviar tráfego suficiente aos seus serviços para iniciar o dimensionamento automático, você verá como cada vez mais pods aparecem na interface que correspondem ao projeto analytics-v1 . Você também verá um aumento no fluxo de consultas ao longo das bordas do gráfico, refletido nos números e na espessura das bordas.



Sumário


Graças aos quintais da Pipeline, é fácil configurar uma malha de serviço híbrida ou de vários clusters. Você pode implantar, rastrear, gerenciar e solucionar problemas de aplicativos em vários clusters usando uma interface de usuário conveniente.

Experimente grátis !

Source: https://habr.com/ru/post/pt479742/


All Articles