Kubernetes

Malha de serviço Kubernetes

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

Essencialmente, o Kubernetes expõe um serviço de back-end internamente dentro do cluster e o front-end interage com este serviço. Os pods que oferecem o serviço podem muito bem ser substituídos e ninguém notaria nada. Mas, à medida que os recursos de seus aplicativos aumentam, o número de serviços que você precisa manter também aumenta. Cada serviço pode potencialmente se comunicar com todos os outros serviços do cluster, e a rede resultante é denominada como Malha de serviço.

Existem muitos complementos para o Kubernetes para nos ajudar a simplificar o gerenciamento desta malha de serviço. Muitos recursos importantes, como TLS, balanceamento de carga automatizado, proteção de APIs até mesmo na rede interna, etc., são oferecidos por esses complementos. Muitas opções, como Istio, Linkerd e Conduit, podem ser integradas ao Kubernetes para fazer isso. Analisaremos o Istio nesta postagem, pois é a versão 1.0 foi anunciado recentemente.

Pré-requisitos

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

  1. Você pode instalar o Minikube para criar um cluster de nó único em sua máquina local.
  2. Ou, se você estiver usando o Docker no Windows ou Mac, pode habilitar um cluster Kubernetes de nó único nas configurações do Docker.
  3. Ou você pode usar serviços online como o parque infantil Katacoda. Estaremos usando isso.

Por que usar uma malha de serviço?

Instalar uma malha de serviço, como o Istio, facilita o trabalho com microsserviços. Durante o desenvolvimento, você não precisa se preocupar com o fato de que seu microsserviço teria que oferecer suporte para TLS mútuo, balanceamento de carga ou qualquer outro aspecto, como descoberta de serviço. Uma malha de serviço ideal permite conectar microsserviços, protegê-los uns dos outros e do mundo externo e gerenciá-los de forma organizada. Isso ajuda os desenvolvedores e os operadores imensamente.

Instalando o Istio

A instalação do Istio requer um cluster Kubernetes. Se você tiver um cluster de nó único como o que obtém com Minikube ou Docker on Desktop, todos os comandos podem ser executados em seu nó local. No entanto, se você estiver usando um cluster de vários nós como o que o playground Katacoda oferece, tenha em mente que a maioria dos comandos e procedimentos de configuração são feitos no nó mestre. Sim, isso afeta todo o cluster, mas precisamos interagir apenas com o nó mestre.

Começamos clonando (ou baixando) a versão mais recente do 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 repo pode mudar ao longo do tempo conforme a versão mais recente chega, no momento da redação deste 1.0.0 é a versão estável mais recente. Este repo contém não apenas a extensão de 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 PATH.

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 acessando a pasta istio-1.0.0 \ bin e chamando .\ istioctl usando o PowerShell ou prompt de comando. Mas é um complemento opcional.

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

$ export PATH = $ PWD / bin: $ PATH

Em seguida, precisamos estender nossa API Kubernetes com Custom Resource Definitions (CRDs) que o istio nos fornece.

$ kubectl apply -f install / kubernetes / helm / istio / templates / crds.yaml

Isso pode entrar em vigor em alguns segundos e, assim que terminar, seu kube-apiserver terá extensões do Istio integradas a ele. A partir daqui, as opções de instalação variam dependendo se você está usando isso para fins de produção ou se está experimentando em seu próprio ambiente isolado.

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

$ kubectl apply -f install / kubernetes / istio-demo.yaml

Isso criará um novo sistema de istio de namespace, onde todos os vários componentes como istio-pilot e gateway de entrada serão instalados.

Implantação de aplicativos e Istio Injector

Aí vem a utilidade do Istio. O Istio adiciona proxies secundários aos seus serviços, e isso é feito sem modificar o código real do seu aplicativo. Se istio-sidecar-injector automático estiver habilitado. Você pode rotular um namespace com istio -jection = enabled e quando seu aplicativo for implantado neste namespace, os próprios pods terão contêineres Envoy especializados junto com os contêineres do aplicativo principal. Por exemplo, vamos rotular o namespace padrão

$ kubectl label namespace default istio -jection = enabled

Agora vamos implantar o aplicativo BookInfo de amostra neste namespace. No diretório raiz do representante Isitio que clonamos, execute:

$ kubectl apply -f samples / bookinfo / platform / kube / bookinfo.yaml

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

$ kubectl get pods

Escolha qualquer pod entre eles e veja seus detalhes. Por exemplo, um dos pods do aplicativo BookInfo em minha implantação é denominado details-v1-6865b9b99d-6mxx9

$ kubectl describe pods / details-v1-6865b9b99d-6mxx9

Na descrição, você notará que o pod contém dois contêineres, o primeiro é um componente do aplicativo de imagem em execução. Examples-bookinfo-details-v1: 1.8.0 e o segundo é o istio-proxy executando a imagem gcr.io / istio-release / proxyv2: 1.0.0 .

O Istio oferece controle refinado sobre sua malha de serviço porque injeta esses contêineres nos próprios pods onde residem seus aplicativos. Isso combinado com TLS fácil de usar para comunicação e controle de tráfego refinado é um dos muitos motivos pelos quais grandes aplicativos podem se beneficiar de uma malha de serviço como o Istio.

Referências

A arquitetura real tem muitos componentes como Pilot, Citadel e Mixer, cada um com sua própria função importante a desempenhar. Você pode aprender muito mais sobre esses componentes aqui e tentar implantar seu próprio microsserviço aqui.

Instale o emulador Dolphin mais recente para Gamecube e Wii no Linux
O Dolphin Emulator permite que você jogue seus jogos de Gamecube e Wii escolhidos em computadores pessoais Linux (PC). Sendo um emulador de jogo disp...
Como usar o GameConqueror Cheat Engine no Linux
O artigo cobre um guia sobre como usar o mecanismo de cheat GameConqueror no Linux. Muitos usuários que jogam no Windows costumam usar o aplicativo “C...
Melhores emuladores de console de jogo para Linux
Este artigo irá listar software de emulação de console de jogo popular disponível para Linux. A emulação é uma camada de compatibilidade de software q...