Malha de serviço de kubernetes

Malha de serviço de kubernetes
Kubernetes tem muitos tipos de recursos que ajudam a abstrair a idéia de serviços ou microsserviços. Por exemplo, se o front -end do seu aplicativo quiser interagir com o back -end, ele não precisa se importar com qual vagem está procurando, ou nem mesmo qual endereço IP espera que um pod de back -end ocupe. As vagens são expostas por meio de um serviço. (Se você é novo no Kubernetes, recomendo esta postagem para entender melhor o que os pods são junto com outros conceitos importantes.)

Essencialmente, Kubernetes expõe um serviço de back -end internamente dentro do cluster e o front-end interage com este serviço. As vagens que oferecem o serviço podem muito bem ser substituídas e ninguém notaria nada. Mas à medida que os recursos em seus aplicativos crescem, o número de serviços que você precisa manter também cresce. Cada serviço pode potencialmente conversar com todos os outros serviços no cluster, e a rede resultante é denominada Malha de serviço.

Existem muitos complementos para Kubernetes para nos ajudar a simplificar o gerenciamento desta malha de serviço. Muitos recursos de chaves, como TLS, balanceamento de carga automatizado, APIs de segurança, mesmo na rede interna, etc. são oferecidas por esses acréscimos. Muitas opções como istio, linkerd e conduíte podem ser integradas a Kubernetes para fazer isso. Estaremos analisando Istio neste post, pois é a versão 1.0 foi anunciado recentemente.

Pré -requisitos

Para começar com o ISTIO, você precisaria de um cluster de Kubernetes funcionando. Existem três maneiras de conseguir isso.

  1. Você pode instalar o Minikube para criar um único cluster de nós em sua máquina local.
  2. Ou, se você estiver usando o Docker no Windows ou Mac, poderá ativar um cluster Kubernetes de um único nó em Configurações do Docker.
  3. Ou você pode usar serviços on -line como o Katacoda Playground. Nós estaremos usando isso.

Por que usar uma malha de serviço?

A instalação de uma malha de serviço, como o ISTIO, facilita o trabalho com microsserviços. Enquanto se desenvolve, você não precisa se preocupar com o fato de que seu microsserviço teria que oferecer suporte para TLs mútuos, balanceamento de carga ou qualquer outro aspecto, como a descoberta de serviços. Uma malha de serviço ideal permite conectar microsserviços, protegê -los um do outro e do mundo exterior e gerenciá -los de uma maneira organizada. Ajuda os desenvolvedores e os operadores imensamente.

Instalando o ISTIO

Instalar o ISTIO requer ter um cluster de Kubernetes. Se você tem um único cluster de nós como você obtém com Minikube ou Docker na área de trabalho, todos os comandos podem ser executados no seu nó local. No entanto, se você estiver usando um cluster de vários nós como o que o Playground Katacoda oferece, lembre-se de que a maioria dos comandos e procedimentos de configuração é feita no nó mestre. Sim, afeta todo o cluster, mas precisamos interagir apenas com o nó principal.

Começamos com clonagem (ou download) o último lançamento de Istio do Github. Os usuários do Windows podem querer visitar esta página e obter o apropriado .fecho eclair arquivo.

$ curl -l https: // git.io/getLatestistio | sh -
$ CD ISTIO-1.0.0

O nome do repos.0.0 é o último lançamento estável. Este repo contém não apenas a extensão da malha de serviço, mas também um aplicativo de amostra chamado Bookinfo para fins de experimentação. O script também adiciona o novo diretório $ pwd/istio-1.0.0/BIN para sua variável de caminho.

Este diretório contém istioctl binário que pode ser usado para interagir com o cluster. Os usuários do Windows podem simplesmente chamar o binário indo para a pasta ISTIO-1.0.0 \ bin e chamando .\ istioctl Usando PowerShell ou prompt de comando. Mas é um complemento opcional.

Se você estiver usando o Mac, pode fazer isso usando o seguinte comando:

$ Caminho de exportação = $ PWD/BIN: $ PATH

Em seguida, precisamos estender nossa API Kubernetes com definições de recursos personalizadas (CRDs) que ISTIO nos fornece.

$ kubectl Aplicar -f install/kubernetes/helm/istio/modsates/CRDS.Yaml

Isso pode entrar em vigor em alguns segundos e, uma vez feito, seu kube-apiserver terá extensões ISTIO embutidas nele. A partir daqui, as opções de instalação variam dependendo se você está usando isso para fins de produção ou se estiver experimentando com ele em seu próprio ambiente isolado.

Vamos assumir que o último é o caso e instalar ISTIO sem autenticação TLS.

$ kubectl Aplicar -f install/kubernetes/istio -Demo.Yaml

Isso criará um novo namespace Istio-System, onde todos os vários componentes como Istio-Pilot e Ingress Gateway serão instalados.

Implantação de aplicativos e injetor de istio

Aí vem a utilidade de Istio. Istio adiciona proxies sidecar aos seus serviços, e isso é feito sem modificar o código real do seu aplicativo. Se o injetor automático de istio-sideCar estiver ativado. Você pode rotular um espaço para nome com injeção de istio = ativado e quando seu aplicativo for implantado neste espaço de nome, os próprios pods terão contêineres de enviados especializados junto com os contêineres para o aplicativo principal. Por exemplo, vamos rotular o espaço para nome padrão

$ KUBECTL Jamespace Padrão ISTIO-Injeção = Ativado

Agora vamos implantar o aplicativo de bookinfo de amostra neste espaço de nome. Do diretório raiz do representante de Isitio que clonamos, executamos:

$ kubectl Aplicar -f Amostras/bookinfo/plataforma/kube/bookinfo.Yaml

Você pode listar todos os pods em execução aqui:

$ kubectl Obtenha pods

Escolha qualquer cápsula e veja seus detalhes. Por exemplo, um dos pods do aplicativo Bookinfo na minha implantação é nomeado Detalhes-V1-6865B9B99D-6MXX9

$ KUBECTL Descreva os pods/detalhes-V1-6865b9b99d-6mxx9

Na descrição, você notará que o POD contém dois recipientes, primeiro é um componente da execução real do aplicativo de imagem exemplos-bookinfo-details-v1: 1.8.0 e o segundo é o istio-proxy executando a imagem GCR.io/istio-lançamento/proxyv2: 1.0.0 .

Istio oferece controle de granulação fina sobre sua malha de serviço porque injeta esses contêineres até as vagens onde seus aplicativos residem. Isso combinado com TLS fácil de usar para comunicação e controle de tráfego de granulação fina é uma das muitas razões pelas quais aplicativos grandes podem se beneficiar de uma malha de serviço como Istio.

Referências

A arquitetura real tem muitos componentes como piloto, cidadela e misturador, cada um com seu próprio papel importante a desempenhar. Você pode aprender muito mais sobre esses componentes aqui e tentar implantar seu próprio microsserviço aqui.