Você está na página 1de 20

https://www.fiap.com.

br/shift/

FIAP – SHIFT
Este documento contempla os Laboratórios do curso.

Os laboratórios de docker podem ser feitos pelo site http://play-with-docker.com

LAB 4
... passos 1 e 2 são repetição dos passos do LAB anterior ...

1. Instalação do Minikube, Kubectl e Helm

Essa etapa do laboratório será executada no DESKTOP WINDOWS.

Preparando nosso ambiente:

 Abrir o Google Chrome e definir como Navegador Padrão:

Página 1
https://www.fiap.com.br/shift/

 Executar o cmd em modo Administrador:

 Instalar o choco  gerenciador de pacotes para Windows disponível em https://chocolatey.org/

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -
NoProfile -InputFormat None -ExecutionPolicy Bypass -Command
"iex ((New-Object
System.Net.WebClient).DownloadString('https://chocolatey.org/ins
tall.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\
bin"

 Instalar os componentes que serão utilizados:

Página 2
https://www.fiap.com.br/shift/

> choco install minikube kubernetes-helm curl

2. Executando a VM do Minikube

 Fazer a download dos componentes e iniciar o Minikube:

> minikube start --memory=8192

... vamos assistir um filme enquanto tudo é preparado ...

Página 3
https://www.fiap.com.br/shift/

 Verificar informações do Cluster Kubernetes:

> kubectl cluster-info

> kubectl get nodes

> kubectl get namespaces

> kubectl get pods -n kube-system

> minikube ip
> kubectl config view

Página 4
https://www.fiap.com.br/shift/

 Iniciar o Dashboard e navegar pelos diversos componentes:

> minikube dashboard

(abrir novo cmd)

3. Instalando o Istio a partir do gerenciador de pacotes do K8S (Helm)

 Fazer o download do Istio e descompactar:

istio-1.3.0-win.zip

cd C:\Users\logonpflocal\Downloads\istio-1.3.0

Página 5
https://www.fiap.com.br/shift/

 Ativando o Helm:

> helm init

 Aguardar uns instantes, verificar se o pod Tiller está em execução e instalar o Istio:

> kubectl get pod -n kube-system

> helm install install/kubernetes/helm/istio-init --name istio-


init --namespace istio-system

 Verificar se na instalação foram configurados 23 permissões do Istio CRDs (Cluster Role


Bindind) no K8S api-server:

Página 6
https://www.fiap.com.br/shift/

> helm list

> kubectl get crds | grep 'istio.io' | wc -l

 Criar o Deployment do Istio:

> helm install install/kubernetes/helm/istio --name istio --


namespace istio-system --values
install/kubernetes/helm/istio/values-istio-demo.yaml --set
gateways.istio-ingressgateway.type=NodePort

Página 7
https://www.fiap.com.br/shift/

 Verificar se os componentes do Istio estão em execução:

Aguardar alguns segundos e verificar no Dashboard:

Página 8
https://www.fiap.com.br/shift/

4. Deploy da aplicação BookInfo (exemplo)

O aplicativo Bookinfo é dividido em 4 microservices:

 produto (produtctpage). O microsserviço “produto” chama os Microserviços detalhes e revisão para


preencher as informações da página.
 detalhes (details). esse microsserviço contém informações do livro.
 revisão (reviews). esse microserviço contém as avaliações de livros e também chama o microsserviço de
rating.
 rating. contém informações de classificação de livros.

Existem 3 versões do microsserviço de rating:

 A versão v1 não chama o serviço de rating.


 A versão v2 chama o serviço de rating e exibe cada classificação como 1 a 5 estrelas de cor preta.
 A versão v3 chama o serviço de rating e exibe cada classificação como 1 a 5 estrelas de cor vermelha.

Página 9
https://www.fiap.com.br/shift/

 Fazer o deploy da aplicação BookInfo, habilitando o uso do side car (Envoy) para controlar
o Service Mesh:

> kubectl label namespace default istio-injection=enabled

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

 Verificar se os serviços estão em execução:

Aguardar alguns segundos e verificar no Dashboard:

Página 10
https://www.fiap.com.br/shift/

 Expor a aplicação para o mundo externo usando Ingress do Istio Gateway:

> minikube addons enable ingress

> kubectl apply -f samples/bookinfo/networking/bookinfo-


gateway.yaml

> kubectl get gateway

Acessar pelo CHROME App BookInfo: http://IP:Nodeport/productpage

> Exemplo: http:/192.168.99.100:31380/productpage

Todos os microsserviços são empacotados com um sidecar Envoy (representado por um retângulo
preto na figura acima) que intercepta chamadas de entrada e saída para os serviços, fornecendo
controle de roteamento, coleta de telemetria e aplicação de políticas do Istio para todo o aplicativo.

Página 11
https://www.fiap.com.br/shift/

5. Visualização do Service Mesh

 Definir as versão do Bookinfo disponíveis na aplicação:

> kubectl apply -f samples/bookinfo/networking/destination-rule-


all.yaml

 Visualização usando o Kiali:

> kubectl -n istio-system port-forward svc/kiali 20001:20001

Acessar no navegador: http://127.0.0.1:20001


Login = admin
Senha = admin

A aplicação BookInfo roda no namespace “default”.


Clicar no ícone Graph para verificar a topologia do Service Mesh.

Caso a topologia não mostre as 3 versões existentes da aplicação,


acesse novamente a página da aplicação
(http:/192.168.99.100:31380/productpage) algumas vezes.

Página 12
https://www.fiap.com.br/shift/

Demonstra-se a topologia dos Microserviços que compõem a aplicação:


Pode-se alterar o intervalor para trazer mais informações:

Página 13
https://www.fiap.com.br/shift/

6. Utilizando as funções de Deploy e Controles do Service Mesh

 Ativando uma versão da Aplicação para Usuários específicos:

Este exemplo é possível pelo fato do BookInfo adicionar um cabeçalho (end-user) nas
solicitações HTTP.

> kubectl apply -f samples/bookinfo/networking/virtual-service-


reviews-test-v2.yaml

> kubectl get virtualservice reviews -o yaml

> Acessar a página várias vezes e agora a versão 1 sem estrelas


sempre aparece.

Página 14
https://www.fiap.com.br/shift/

> Fazer login com o usuário “jason” (senha vazia)

> Acessar a página várias vezes logado e agora a versão 2 com


estrelas sempre aparece.

> Fazer logout do usuário “jason”

Página 15
https://www.fiap.com.br/shift/

 Realizando um Canary Deployment:

Nesse exercício, iremos configurar a distribuição para 20% (v2, com estrelas pretas) versus 80% (v1,
sem estrelas)

> kubectl apply -f samples/bookinfo/networking/virtual-service-


reviews-80-20.yaml
> kubectl get virtualservice reviews -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
...
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 80
- destination:
host: reviews
subset: v2
weight: 20

Acesse o site diversas vezes para verificar a distribuição da carga

Agora, vamos configurar a distribuição para 50% (v3, com estrelas vermelhas) versus 50% (v1, sem
estrelas)

> kubectl apply -f samples/bookinfo/networking/virtual-service-


reviews-50-v3.yaml
> kubectl get virtualservice reviews -o yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
...
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
weight: 50
- destination:
host: reviews
subset: v3
weight: 50

Acesse o site diversas vezes para verificar a distribuição da carga

7. Utilizando as funções de Telemetria e Observabilidade do Service Mesh

Página 16
https://www.fiap.com.br/shift/

 Verificar métricas do Istio através do Prometheus:

> kubectl -n istio-system port-forward svc/prometheus 9090:9090

Vamos agora ativar as métricas

Abrir novo cmd + cd C:\Users\logonpflocal\Downloads\istio-1.3.0

> kubectl apply -f samples/bookinfo/telemetry/metrics.yaml

> kubectl apply -f samples/bookinfo/telemetry/tcp-metrics.yaml

Acessar 20 vezes a aplicação para gerar as métricas:


> curl http:/192.168.99.100:31380/productpage?[1-20]

Acessar no navegador: http://localhost:9090

Página 17
https://www.fiap.com.br/shift/

Pesquisar por: istio_request_total

 Visualizar métricas do Istio através do Grafana:

Abrir novo cmd

> kubectl -n istio-system port-forward svc/grafana 3000:3000

Acessar no navegador: http://localhost:3000

Clicar em Home e Verificar os diversos relatórios disponíveis:

Página 18
https://www.fiap.com.br/shift/

Visualizar, por exemplo, o relatório Istio Service Dashboard:

Visualizar, por exemplo, o relatório Istio Mesh Dashboard:

Página 19
https://www.fiap.com.br/shift/

Página 20

Você também pode gostar