Uploaded by Spock Nimoy

Apostila-rancher-kubernetes

advertisement
Caique Araujo / caiquearaujoac@gmail.com
Caique Araujo / caiquearaujoac@gmail.com
Sumário
1 Preparando instâncias na Cloud
1.1 Ambientação . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Google Cloud Platform . . . . . . . . . . . . . . . . . . . . . .
1.2.1 Lab 1.1 - Criar conta gratuita na Google Cloud Platform
1.3 Projeto na GCP . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1 Lab 1.2 - Criar projeto na GCP . . . . . . . . . . . . .
1.4 APIs na GCP . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Lab 1.3 - Ativar APIs na GCP . . . . . . . . . . . . . .
1.5 Permissões e Chave de acesso . . . . . . . . . . . . . . . . . .
1.5.1 Lab 1.4 - Gerenciar permissão e criar chave de acesso .
1.6 Gerenciar Firewall e IP externos . . . . . . . . . . . . . . . . .
1.6.1 Lab 1.5 - Configurar Firewall e IP externos . . . . . . .
1.7 Instâncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 Lab 1.6 - Criar instâncias na GCP . . . . . . . . . . . .
1.8 Instalar Docker e servidor NFS nas instâncias . . . . . . . . . .
1.8.1 Lab 1.7 - Instalar aplicações nas instâncias . . . . . . .
2 Gerenciar e Importar Clusters Kubernetes
2.1 Conhecendo o Rancher . . . . . . . . . . . . . . . . . . . . . .
2.1.1 Arquitetura do Rancher . . . . . . . . . . . . . . . . .
2.1.2 Lab 2.1 - Instalar o Rancher em uma instância na GCP
2.1.3 Lab 2.2 - Conhecendo Painel do Rancher . . . . . . . .
2.2 Gerenciar Cluster personalizado . . . . . . . . . . . . . . . . .
2.2.1 Lab 2.3 - Criar cluster personalizado . . . . . . . . . .
2.3 Importar Cluster Kubernetes . . . . . . . . . . . . . . . . . . .
2.3.1 Lab 2.4 - Importar cluster kubernetes . . . . . . . . . .
2.3.2 Lab 2.5 - Criar Cluster Kubernetes Google GKE . . . .
2.3.3 Lab 2.6 - Criar Cluster Kubernetes EKS . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
13
13
17
18
22
23
31
31
41
41
61
61
.
.
.
.
.
.
.
.
.
.
68
68
69
69
74
77
77
87
87
102
111
3 Gerenciar Aplicações no Rancher
124
3.1 Apps & Marketplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
2
3
Sumário
Caique Araujo / caiquearaujoac@gmail.com
3.2
3.1.1 Lab
3.1.2 Lab
3.1.3 Lab
3.1.4 Lab
Longhorn .
3.2.1 Lab
3.1
3.2
3.3
3.4
. .
3.5
.
-
Gerenciar Repositórios no Rancher . . . . . . . . . . . . .
Instalar aplicação nfs-subdir-external-provisioner no Rancher
Instalar aplicação OpenLDAP no Rancher . . . . . . . . .
Popular base LDAP . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instalar Longhorn no Rancher . . . . . . . . . . . . . . . .
4 Gerenciar Autenticação e CLI
4.1 Gerenciar Autenticação no Rancher . . . . . . . . . . . . . . . . . . . .
4.1.1 Lab 4.1- Gerenciar autenticação Local e autorização no Rancher .
4.1.2 Lab 4.2 - Gerenciar autenticação LDAP e autorização no Rancher
4.2 Kubectl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Lab 4.3 - Gerenciar recursos através do Kubectl Shell . . . . . .
4.2.2 Lab 4.4 - Acesso externo através do Kubectl . . . . . . . . . . .
4.3 Rancher CLI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Lab 4.5 - Gerenciar recursos através do Rancher CLI . . . . . . .
5 Gerenciar Workloads e Serviços
5.1 Workloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.1 Pods . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.2 Deploy . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.1.3 StatefulSets . . . . . . . . . . . . . . . . . . . . . . . .
5.1.4 DaemonSets . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.2.1 Lab 5.1 - Gerenciar Deploy e Serviços no Rancher . . . .
5.3 Ingress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.3.1 Lab 5.2 - Gerenciar Ingress no Rancher . . . . . . . . . .
5.4 Jobs e CronJobs . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4.1 Lab 5.3 - Gerenciar Jobs e CronJobs no Rancher . . . . .
5.5 Horizontal Pod Autoscaler . . . . . . . . . . . . . . . . . . . . .
5.5.1 Lab 5.4 - Gerenciar Horizontal Pod Autoscaler no Rancher
5.6 ConfigMaps e Secrets . . . . . . . . . . . . . . . . . . . . . . .
5.6.1 Lab 5.5 - Gerenciar ConfigMaps e Secrets no Rancher . .
5.6.2 Lab 5.6 - Gerenciar Ingress com TLS . . . . . . . . . . .
6 Gerenciar Storage
6.1 Volumes . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1 Volume Local . . . . . . . . . . . . . . . . . . .
6.1.2 Lab 6.1 - Gerenciar Volume Local no Rancher . .
6.1.3 Volume em bloco e Distribuído . . . . . . . . . .
6.1.4 Lab 6.2 - Gerenciar Volume em Bloco no Rancher
6.1.5 Lab 6.3 - Gerenciar Volume NFS no Rancher . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
125
134
140
145
151
151
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
159
159
160
168
183
183
188
194
194
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
198
. 198
. 198
. 199
. 199
. 199
. 199
. 200
. 209
. 209
. 214
. 214
. 228
. 228
. 234
. 234
. 248
.
.
.
.
.
.
258
. 258
. 258
. 259
. 268
. 269
. 279
4
Sumário
Caique Araujo / caiquearaujoac@gmail.com
6.2
Longhorn . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Recursos . . . . . . . . . . . . . . . . . . . . . . . .
6.2.2 Componentes . . . . . . . . . . . . . . . . . . . . .
6.2.3 Arquitetura . . . . . . . . . . . . . . . . . . . . . . .
6.2.4 Lab 6.4 - Gerenciar volume distribuído com Longhorn
6.2.5 Lab 6.5 - Gerenciar Backup de volumes com Longhorn
6.2.6 Lab 6.6 - Gerenciar Restore de volumes com Longhorn
7 GitOps at Scale com Fleet
7.1 GitOps . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1 GitOps em escala . . . . . . . . . . . . . . . . .
7.2 Fleet . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1 Lab 7.1 - Criar o 2ž Cluster Kubernetes GKE . . .
7.2.2 Lab 7.2 - Configurar Cluster Groups no Rancher .
7.3 Wordpress no Rancher . . . . . . . . . . . . . . . . . . .
7.3.1 Lab 7.3 - Realizar Deploy Single Cluster com Fleet
7.3.2 Lab 7.4 - Instalar aplicação Helm via Fleet . . . .
7.3.3 Lab 7.5 - Realizar Deploy Multi Cluster com Fleet
7.3.4 Lab 7.6 - Realizar mudanças via Git CLI . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
290
290
291
291
292
299
302
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
314
314
314
315
316
324
331
332
341
350
358
8 Gerenciamento de Logs
8.1 ELK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2 K3S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.2.1 Lab 8.1 - Instalação do K3S e Helm na VM custom . . . . . . . . .
8.2.2 Lab 8.2 - Instalação do ElasticSearch e Kibana via Helm . . . . . . .
8.3 Banzai Cloud Logging Operator . . . . . . . . . . . . . . . . . . . . . . . .
8.3.1 Flow e ClusterFlow . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.3.2 Lab 8.3 - Instalar Cloud Logging no Rancher . . . . . . . . . . . . .
8.3.3 Lab 8.4 - Configurar envio de logs do cluster para o Elasticsearch . .
8.3.4 Lab 8.5 - Configurar envio de logs de aplicações para o Elasticsearch
8.3.5 Lab 8.6 - Indexar logs no Kibana . . . . . . . . . . . . . . . . . . .
8.3.6 Lab 8.7 - Visualizar logs de Pods através do Kibana . . . . . . . . .
368
. 368
. 369
. 369
. 371
. 375
. 376
. 376
. 379
. 382
. 386
. 392
9 Gerenciar Monitoramento
9.1 Introdução ao Prometheus e Grafana . . . . . . . . . . .
9.1.1 Lab 9.1 - Ativar monitoramento no Rancher . . .
9.1.2 Lab 9.2 - Visualizar Targets e Service Discovery no
9.1.3 Lab 9.3 - Deploy do Apache Exporter . . . . . . .
9.2 ServiceMonitors e PodMonitors . . . . . . . . . . . . . .
9.2.1 ServiceMonitor . . . . . . . . . . . . . . . . . . .
9.2.2 PodMonitors . . . . . . . . . . . . . . . . . . . .
9.2.3 Lab 9.4 - Configurar Service Monitors no Rancher
397
. 397
. 398
. 403
. 405
. 417
. 417
. 418
. 418
. . . . . . .
. . . . . . .
Prometheus
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5
Sumário
Caique Araujo / caiquearaujoac@gmail.com
9.3
9.4
9.5
9.6
9.2.4 Lab 9.5 - Visualizar métricas no Prometheus . . . . . . . . .
Dashboards do Grafana . . . . . . . . . . . . . . . . . . . . . . . .
9.3.1 Lab 9.6 - Visualizar métricas no Dashboards do Grafana . . .
9.3.2 Visualizar métricas do Cluster . . . . . . . . . . . . . . . . .
9.3.3 Adicionar Dashboard do Apache o Grafana . . . . . . . . . .
Prometheus Rules . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prometheus Alert . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.5.1 Lab 9.7 - Configurar Prometheus Rules e Alert no Prometheus
Receivers e Route . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.1 Slack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.6.2 Lab 9.8 - Configurar integração entre Prometheus e Slack . .
9.6.3 Lab 9.9 - Simular falha no serviço do Apache . . . . . . . . .
10 Gerenciar Segurança com Rancher
10.1 NetworkPolicies . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1.1 Lab 10.1 - Gerenciar políticas Egress e Ingress para bloquear
10.1.2 LAB 10.2 - Criar políticas para liberar acesso via Labels . .
10.1.3 LAB 10.3 - Criar políticas para liberar acesso via DNS . . .
10.1.4 LAB 10.4 - Criar política para liberar acesso a internet . . .
10.2 RBAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2.1 Lab 10.5 - Gerenciar RBAC no Rancher . . . . . . . . . . .
10.3 OPA Gatekeeper . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3.1 Lab 10.6 - Instalação do OPA Gatekeeper no Rancher . . .
10.3.2 Lab 10.7 - Criar ConstraintTemplates no OPA Gatekeeper .
10.3.3 Lab 10.8 - Criar Constraints no OPA Gatekeeper . . . . . .
10.3.4 Lab 10.9 - Testando regras do OPA Gatekeeper . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
422
425
425
425
429
434
434
434
439
439
439
451
. . . .
acesso
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
457
457
458
466
473
477
480
481
498
499
502
510
519
.
.
.
.
.
.
.
526
. 526
. 527
. 536
. 536
. 543
. 546
. 548
11 Gerenciar Manutenção e Backup
11.1 Cordon/Drain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.1.1 Lab 11.1 - Gerenciar disponibilidade dos Nodes no Rancher . . .
11.2 Backup/Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.2.1 Lab 11.2 - Instalar nfs-subdir-external-provisioner no cluster Local
11.2.2 Lab 11.3 - Instalar Rancher Backups . . . . . . . . . . . . . . .
11.2.3 Lab 11.4 - Gerenciar backup de cluster no Rancher . . . . . . . .
11.2.4 Lab 11.5 - Gerenciar restore de cluster no Rancher . . . . . . . .
.
.
.
.
.
.
.
12 Provisionar Rancher na GCP/AWS/Azure através do Terraform
12.1 Terraform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12.1.1 LAB 12.1 - Instalação do Terraform . . . . . . . . . . . . . . . . . .
12.1.2 LAB 12.2 - Instalação e configuração do google-cloud-sdk no Linux .
12.1.3 Lab 12.3 - Provisionar o Rancher e Cluster Kubernetes com provedor
GCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
552
. 552
. 553
. 554
. 559
6
Sumário
Caique Araujo / caiquearaujoac@gmail.com
12.1.4 Lab 12.4 - Provisionar
AWS . . . . . . . . .
12.1.5 Lab 12.5 - Provisionar
Azure . . . . . . . . .
o
.
o
.
Rancher
. . . . .
Rancher
. . . . .
e
.
e
.
Cluster
. . . .
Cluster
. . . .
Kubernetes com
. . . . . . . . .
Kubernetes com
. . . . . . . . .
provedor
. . . . . . 566
provedor
. . . . . . 572
Caique Araujo / caiquearaujoac@gmail.com
1
Preparando instâncias na Cloud
Competências da Aula
•
•
•
•
•
•
•
Criar conta gratuita na GCP
Criar projetos na GCP
Ativar APIs na GCP
Gerenciar permissão e chave de acesso
Configurar Firewall e IP externos
Criar instâncias na GCP
Instalar aplicações nas instâncias
Ambientação
Em nosso curso vamos precisar de instâncias em um provedor de Cloud para instalar e utilizar
o Rancher. A Google Cloud Platform sera utilizada de forma gratuita para realizar as aulas,
mas é possível a sua escolha, outro provedor como a AWS, Azure, entre outros.
Google Cloud Platform
O Google Cloud Platform é uma plataforma de computação em nuvem da Google. É uma das
principais ofertas de computação em nuvem do mercado e oferece serviços de armazenamento,
processamento, análise de dados e gerenciamento de conteúdo
7
8
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
A plataforma oferece uma variedade de serviços, incluindo hospedagem de sites, armazenamento de dados, execução de aplicativos e infraestrutura de rede.
Lab 1.1 - Criar conta gratuita na Google Cloud Platform
Neste laboratório vamos aprender como criar uma cona gratuita no Google Cloud Platform.
Para começar, acesse o a página da GCP para iniciar o cadastro do nível gratuito, através no
link abaixo:
https://cloud.google.com/free
Clique no botão Comece a usar gratuitamente para iniciar o cadastro.
Fig. 1.1: Criar conta gratuita na GCP - ETAPA 1
Em seguida entre com sua conta da Google e clique no botão Próxima. Caso não possua
uma, clique no link Criar conta.
9
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.2: Criar conta gratuita na GCP- ETAPA 2
Nesta primeira etapa selecione a opção Eu concordo com os Termos de Serviço do Google
Cloud Platform, e clique no botão CONTINUAR para continuar o cadastro.
Fig. 1.3: Criar conta gratuita na GCP - ETAPA 3
10
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Na próxima etapa, selecione em Tipo de conta a opção Pessoal física, e preencha as
seguintes informações:
• CPF
• Data de nascimento no formato DD/MM/AAAA
Fig. 1.4: Criar conta gratuita na GCP - ETAPA 4
Logo abaixo preencha outras informações:
•
•
•
•
•
•
•
•
Nome
Linha de endereço 1
Linha de endereço 2 que pode ser opcional
Bairro
Estado (precisa selecionar)
Cidade
CEP
Número de telefone que pode ser opcional
11
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.5: Criar conta gratuita na GCP - ETAPA 5
Em Forma de pagamento, sera preciso fornecer os seguintes dados de seu cartão de crédito:
•
•
•
•
Número do cartão
Quando expira em (Mês e Ano)
CVV
Nome do titular do cartão
Clique no botão INICIAR MINHA TESTE GRATUITO para concluir o cadastro.
12
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.6: Criar conta gratuita na GCP - ETAPA 6
Como resultado final sera mostrado o Painel de administração da GCP.
Fig. 1.7: Painel de administração da GCP - ETAPA 7
13
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Projeto na GCP
Um projeto organiza todos os seus recursos do Google Cloud. O projeto é um guia para
organizar todos os seus recursos do Google Cloud Platform. Antes de começar, é importante
que você tenha uma conta do Google Cloud Platform.
Lab 1.2 - Criar projeto na GCP
Neste laboratório vamos aprender como criar dois projetos, através do painel do Google Cloud
Platform.
Uma vez logado no painel da GCP, clique em My First Project ao lado da caixa de pesquisa.
Fig. 1.8: Criar projetos na GCP - ETAPA 1
Em seguida clique no botão NOVO PROJETO.
14
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.9: Criar projetos na GCP - ETAPA 2
Digite na caixa Nome do projeto, o nome cluster1 e clique no botão CRIAR.
15
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.10: Criar projetos na GCP - ETAPA 3
Repita a criação de um novo projeto, agora com o nome cluster2.
16
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.11: Criar projetos na GCP - ETAPA 4
17
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.12: Criar projetos na GCP - ETAPA 5
APIs na GCP
As APIs do Google Cloud Platform são um conjunto de APIs que permitem que os desenvolvedores acessem os serviços do Google Cloud Platform. Durante o curso vamos utilizar as APIs
IAM e Kubernetes.
A API IAM permite que os administradores gerenciem a identidade e o controle de acesso dos
recursos do Google Cloud Platform. Isso inclui criar, editar e excluir políticas e funções do IAM
e gerenciar contas e grupos de usuários. Além disso, a API permite que os administradores
auditem a atividade do IAM e exportem dados do IAM para sistemas externos.
A API Kubernetes permite que os desenvolvedores gerenciem clusters e nós em um ambiente
Kubernetes, bem como implantem e gerenciem aplicativos. Esta API requer uma conta e um
projeto do Google Cloud Platform.
18
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Lab 1.3 - Ativar APIs na GCP
Neste laboratório vamos aprender como ativar as APIs IAM e Kubernetes nos projetos
cluster1 e cluster2.
Uma vez logado no painel da GCP, selecione o projeto projeto1 ao lado da caixa de pesquisa.
Fig. 1.13: Ativar APIs na GCP - ETAPA 1
Em seguida, clique no Menu de navegação que fica no canto superior esquerdo, e em seguida
selecione APIs e serviços Biblioteca.
19
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.14: Ativar APIs na GCP - ETAPA 2
Digite na caixa de pesquisa, IAM e tecle ENTER.
Fig. 1.15: Ativar APIs na GCP - ETAPA 3
Secione na lista Identity and Access Managemenent (IAM) API.
20
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.16: Ativar APIs na GCP - ETAPA 4
E clique no botão ATIVAR.
Fig. 1.17: Ativar APIs na GCP - ETAPA 5
Retorne a página de Biblioteca para pesquisar Kubernetes, e secione na lista Kubernetes
Engine API.
21
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.18: Ativar APIs na GCP - ETAPA 6
E clique no botão ATIVAR.
Fig. 1.19: Ativar APIs na GCP - ETAPA 7
Repita a ativação das APIs IAM e Kubernetes no projeto cluster2.
22
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.20: Ativar API IAM no projeto cluster2 - ETAPA 1
Fig. 1.21: Ativar API Kubernetes no projeto cluster2 - ETAPA 2
Permissões e Chave de acesso
Durante o curso vamos gerenciar clusters da GCP através do painel do Rancher e sera preciso
que o nosso usuário padrão, possua permissão total aos recursos do Kubernetes na Cloud.
A chave de acesso é um identificador exclusivo que você cria para autorizar o acesso aos seus
recursos do Google Cloud Platform. Em nosso curso sera necessário gerar uma chave com
permissão de Administrator do Kubernetes para a conta padrão no projeto.
23
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Lab 1.4 - Gerenciar permissão e criar chave de acesso
Neste laboratório vamos aprender como adicionar permissão de Administrator do Kubernetes
para a conta padrão nos projetos cluster1 e cluster2, e criar uma chave de aceso no formato
JSON para cada projeto.
Adicionar permissão de Administrator do Kubernetes
Uma vez logado no painel da GCP, selecione o projeto projeto1 ao lado da caixa de pesquisa.
Fig. 1.22: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 1
Em seguida, clique no Menu de navegação e depois em IAM e Administrador IAM
24
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.23: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 2
Em seguida clique em Editar principal na conta do compute@developer.gserviceaccount.com.
Fig. 1.24: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 3
Clique no botão + ADICIONAR OUTRO PAPEL.
25
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.25: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 4
Pesquise na caixa kubernetes e selecione Administrador do Kubernetes Engine.
Fig. 1.26: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 5
Clique no botão SALVAR para aplicar a configuração.
26
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.27: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 6
Verifique se o papel Administrador do Kubernetes Engine esta associado a conta.
Fig. 1.28: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 7
Repita a adição de permissão de Administrator do Kubernetes no projeto cluster2.
27
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.29: Adicionar permissão de Administrator do Kubernetes na GCP - ETAPA 8
Configurar chave de acesso
Uma vez logado no painel da GCP, selecione o projeto projeto1 ao lado da caixa de pesquisa.
Fig. 1.30: Configurar chave de acesso na GCP - ETAPA 1
Na janela do IAM clique em Contas de serviço ao lado esquerdo da tela.
28
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.31: Configurar chave de acesso na GCP - ETAPA 2
Selecione uma conta e no menu da coluna Ações clique na opção Gerenciar chaves.
Fig. 1.32: Configurar chave de acesso na GCP - ETAPA 3
29
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Clique no botão ADICIONAR CHAVE e em seguida na a opção Criar nova chave.
Fig. 1.33: Configurar chave de acesso na GCP - ETAPA 4
Selecione a opção JSON e clique no botão CRIAR para criar sua chave de acesso.
Fig. 1.34: Configurar chave de acesso na GCP - ETAPA 5
Confirme se a chave privada foi salva em seu computador.
30
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.35: Configurar chave de acesso na GCP - ETAPA 6
Repita a configuração de chave de acesso no projeto cluster2.
Fig. 1.36: Configurar chave de acesso na GCP - ETAPA 7
31
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.37: Configurar chave de acesso na GCP - ETAPA 8
Gerenciar Firewall e IP externos
A partir das regras de firewall vamos controlar o tráfego de entrada e saída de máquinas
virtuais (pelas interfaces de rede) e sub-redes.
Os endereços de IP públicos permitem acesso externo a recursos da Cloud, como por exemplo
a uma instância. Esses endereços podem ser estáticos e dedicados a uma instância, até que
você remova essa atribuição, ou dinâmicos onde seu endereço muda conforme você remove e
cria a instância.
Lab 1.5 - Configurar Firewall e IP externos
Neste laboratório vamos aprender como liberar as portas necessárias para as novas instâncias
e criar IPs públicos.
Regra de Firewall: nodeports
Uma vez logado no painel da GCP, selecione o projeto My First Project ao lado da caixa de
pesquisa.
32
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.38: Configurar Firewall nodeports na GCP - ETAPA 1
Em seguida, clique no Menu de navegação e depois em Rede VPC Firewall.
Fig. 1.39: Configurar Firewall nodeports na GCP - ETAPA 2
Em seguida clique na opção CRIAR REGRA DE FIREWALL.
33
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.40: Configurar Firewall nodeports na GCP - ETAPA 3
Defina o nome nodeports na rede default.
Fig. 1.41: Configurar Firewall nodeports na GCP - ETAPA 4
Defina o tráfego como Entrada em Todas as instâncias na rede e no intervalo 0.0.0.0/0.
34
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.42: Configurar Firewall nodeports na GCP - ETAPA 5
Em Portas e protocolos define o uso do protocolo TCP o intervalo 30000-32767. Clique
no botão CRIAR para finalizar.
Fig. 1.43: Configurar Firewall nodeports na GCP - ETAPA 6
Verifique se a regra nodeports foi criada corretamente.
35
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.44: Configurar Firewall nodeports na GCP - ETAPA 7
Repita a criação da regra de firewall nodeports, nos projetos cluster1 e cluster2.
Fig. 1.45: Regra de firewall nodeports no projeto cluster1
36
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.46: Regra de firewall nodeports no projeto cluster2
Regra de Firewall: nfs-server
Uma vez logado no painel da GCP, clique no Menu de navegação e depois em Rede VPC
Firewall, e clique novamente na opção CRIAR REGRA DE FIREWALL.
Fig. 1.47: Configurar Firewall nfs-server na GCP - ETAPA 1
Defina o nome nfs-server na rede default.
37
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.48: Configurar Firewall nfs-server na GCP - ETAPA 2
Defina o tráfego como Entrada, Tags de destino nfs-server e no intervalo 0.0.0.0/0.
Fig. 1.49: Configurar Firewall nfs-server na GCP - ETAPA 3
Em Portas e protocolos, defina o uso do protocolo TCP e a porta 2049. Clique no botão
38
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
CRIAR para finalizar.
Fig. 1.50: Configurar Firewall nfs-server na GCP - ETAPA 4
Verifique se a regra nfs-server foi criada corretamente.
Fig. 1.51: Configurar Firewall nfs-server na GCP - ETAPA 5
39
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Regra de Firewall: logs
Vamos clicar novamente no botão CRIAR REGRA DE FIREWALL.
Fig. 1.52: Configurar Firewall logs na GCP - ETAPA 1
Defina o nome logs na rede default.
Fig. 1.53: Configurar Firewall logs na GCP - ETAPA 2
Defina o tráfego como Entrada, Tags de destino logs e no intervalo 0.0.0.0/0.
40
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.54: Configurar Firewall logs na GCP - ETAPA 3
Em Portas e protocolos, defina o uso do protocolo TCP e as portas 5601, 9200 e 9300.
Clique no botão CRIAR para finalizar.
Fig. 1.55: Configurar Firewall logs na GCP - ETAPA 4
Verifique se a regra logs foi criada corretamente.
41
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.56: Configurar Firewall logs na GCP - ETAPA 5
Instâncias
Uma instância é uma máquina virtual que esta sendo executado em um provedor de nuvem,
como por exemplo na AWS, Azure e GCP. Essas instâncias tem como função executar aplicações como um servidor de banco de dados, e-mail, web, entre outros. É possível realizar
um escalonamento automático, aumentando ou diminuindo os recursos computacionais das
instâncias, dependendo dos requisitos da carga de trabalho.
Lab 1.6 - Criar instâncias na GCP
Neste laboratório vamos aprender como criar as instâncias utilizadas durante o curso.
Criar instância rancher
Uma vez logado no painel da GCP, clique no Menu de navegação e depois clique em
COMPUTAÇÃO Compute Engine Instâncias de VM.
42
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.57: Criar instância rancher - ETAPA 1
Em seguida clique no botão CRIAR INSTÂNCIA.
Fig. 1.58: Criar instância rancher - ETAPA 2
Selecione as seguintes opções para a sua instância:
• Nome: rancher
• Região: us-central1 (lowa)
43
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
• Zona: us-central1-c
• Tipo de máquina: e2-medium
Fig. 1.59: Criar instância rancher - ETAPA 3
Em Disco de inicialização clique no botão MUDAR para selecionar a Imagem da instância.
Fig. 1.60: Criar instância rancher - ETAPA 4
44
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Em nosso exemplo sera usado o Ubuntu 20.04 LTS com 30GB de Disco permanente
equilibrado.
Fig. 1.61: Criar instância rancher - ETAPA 5
Libere o acesso nas portas 80 e 443, selecionando Permitir tráfego HTTP e HTTPS.
Fig. 1.62: Criar instância rancher - ETAPA 6
Para associar um IP fixo a nossa instância, clique em REDE, DISCOS, SEGURANÇA,
GERENCIAMENTO, LOCATÁRIO ÚNICO
45
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.63: Criar instância rancher - ETAPA 7
Em seguida clique no link Rede.
Fig. 1.64: Criar instância rancher - ETAPA 8
Em Interfaces de rede clique em default.
46
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.65: Criar instância rancher - ETAPA 9
Clique na caixa IP externo e no botão CRIAR ENDEREÇO IP.
Fig. 1.66: Criar instância rancher - ETAPA 10
Na caixa Nome digite rancher e clique no botão RESERVAR.
47
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.67: Criar instância rancher - ETAPA 11
Confirme a reserva do novo IP, clicando no botão CONCLUIR.
Fig. 1.68: Criar instância rancher - ETAPA 12
Para terminar clique no botão CRIAR no final da página.
48
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.69: Criar instância rancher - ETAPA 13
Verifique se a instância rancher foi criada corretamente.
Fig. 1.70: Criar instância rancher - ETAPA 14
Criar instância nfs-server
Clique novamente no botão CRIAR INSTÂNCIA.
49
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.71: Criar instância nfs-server - ETAPA 1
Selecione as seguintes opções para a sua instância:
•
•
•
•
Nome: nfs-server
Região: us-central1 (lowa)
Zona: us-central1-c
Tipo de máquina: e2-medium
Fig. 1.72: Criar instância nfs-server - ETAPA 2
50
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Em Disco de inicialização clique no botão MUDAR para selecionar a Imagem da instância.
Fig. 1.73: Criar instância nfs-server - ETAPA 3
Em nosso exemplo sera usado o Ubuntu 20.04 LTS com 100GB de Disco permanente
SSD.
Fig. 1.74: Criar instância nfs-server - ETAPA 4
Para associar um IP fixo a nossa instância, clique em REDE, DISCOS, SEGURANÇA,
GERENCIAMENTO, LOCATÁRIO ÚNICO
51
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.75: Criar instância nfs-server - ETAPA 5
Em seguida clique no link Rede.
Fig. 1.76: Criar instância nfs-server - ETAPA 6
Na caixa Tags de rede digite nfs-server.
52
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.77: Criar instância nfs-server - ETAPA 7
Em Interfaces de rede clique em default.
Fig. 1.78: Criar instância nfs-server - ETAPA 8
Clique na caixa IP externo e no botão CRIAR ENDEREÇO IP.
53
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.79: Criar instância nfs-server - ETAPA 9
Na caixa Nome digite nfs-server e clique no botão RESERVAR.
Fig. 1.80: Criar instância nfs-server - ETAPA 10
Confirme a reserva do novo IP, clicando no botão CONCLUIR.
54
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.81: Criar instância nfs-server - ETAPA 11
Para terminar clique no botão CRIAR no final da página.
Fig. 1.82: Criar instância nfs-server - ETAPA 12
Verifique se a instância nfs-server foi criada corretamente.
55
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.83: Criar instância nfs-server - ETAPA 13
Criar instância custom
Vamos criar uma nova instância, a partir do botão CRIAR INSTÂNCIA.
Fig. 1.84: Criar instância custom - ETAPA 1
Selecione as seguintes opções para a sua instância:
•
•
•
•
Nome: custom
Região: us-central1 (lowa)
Zona: us-central1-c
Tipo de máquina: e2-standard-4
56
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.85: Criar instância custom - ETAPA 2
Em Disco de inicialização clique no botão MUDAR para selecionar a Imagem da instância.
Fig. 1.86: Criar instância custom - ETAPA 3
Em nosso exemplo sera usado o Ubuntu 20.04 LTS com 50GB de Disco permanente
equilibrado.
57
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.87: Criar instância custom - ETAPA 4
Para associar um IP fixo a nossa instância, clique em REDE, DISCOS, SEGURANÇA,
GERENCIAMENTO, LOCATÁRIO ÚNICO
Fig. 1.88: Criar instância custom - ETAPA 5
Em seguida clique no link Rede.
58
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.89: Criar instância custom - ETAPA 6
Na caixa Tags de rede digite logs.
Fig. 1.90: Criar instância custom - ETAPA 7
Em Interfaces de rede clique em default.
59
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.91: Criar instância custom - ETAPA 8
Clique na caixa IP externo e no botão CRIAR ENDEREÇO IP.
Fig. 1.92: Criar instância custom - ETAPA 9
Na caixa Nome digite custom e clique no botão RESERVAR.
Fig. 1.93: Criar instância custom - ETAPA 10
60
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Confirme a reserva do novo IP, clicando no botão CONCLUIR.
Fig. 1.94: Criar instância custom - ETAPA 11
Para terminar clique no botão CRIAR no final da página.
Fig. 1.95: Criar instância custom - ETAPA 12
Verifique se a instância custom foi criada corretamente.
61
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.96: Criar instância custom - ETAPA 13
Instalar Docker e servidor NFS nas instâncias
O Docker é um aplicativo de software livre que permite aos usuários construir, distribuir e
executar aplicativos de software de forma portátil. Ele funciona em conjunto com o kernel do
Linux para criar um ambiente de containers isolados.
Cada container é executado como um processo separado em um host e compartilha um conjunto de arquivos e diretórios com outros containers. Isso permite que os desenvolvedores
criem, testem e realizem deploys em aplicativos de forma rápida e fácil.
O NFS é um protocolo de rede que permite aos usuários compartilhar arquivos e pastas entre
computadores. O NFS é baseado em um modelo cliente/servidor. Os clientes NFS pedem
acesso aos arquivos e pastas armazenados no servidor. O servidor NFS fornece acesso a estes
arquivos e pastas aos clientes.
Lab 1.7 - Instalar aplicações nas instâncias
Neste laboratório vamos aprender como instalar o Docker na instância rancher e custom,
e o servidor NFS na instância nfs-server.
Instalação do Docker
Uma vez logado no painel da GCP, em Compute Engine na linha da instância rancher,
clique no menu suspenso ao lado do SSH e escolha Abrir na janela do navegador.
62
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.97: Instalação do Docker - ETAPA 1
Uma vez logado na instância rancher, baixe o script de instalação do Docker através do
comando curl:
curl -fsSL https://get.docker.com -o get-docker.sh
Em seguida execute o script de instalação do Docker:
sh get-docker.sh
Verifique se o Docker foi instalado corretamente:
sudo docker version
Resultado esperado:
63
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.98: Instalação do Docker - ETAPA 2
Para terminar vamos abandonar a instância, através do comando
exit:
exit
Repita o acesso na instância custom, através no menu suspenso ao lado do SSH e escolha
Abrir na janela do navegador.
64
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.99: Instalação do Docker - ETAPA 3
Repita a instalação do Docker e verifique se o mesmo foi instalado corretamente:
sudo docker version
Resultado esperado:
65
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.100: Instalação do Docker - ETAPA 4
Instalação do servidor NFS
Uma vez logado no painel da GCP, em Compute Engine na linha da instância nfs-servcer,
clique no menu suspenso ao lado do SSH e escolha Abrir na janela do navegador.
66
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
Fig. 1.101: Instalação do servidor NFS - ETAPA 1
Uma vez logado na instância nfs-server, atualize a lista de pacotes e instale os pacotes
nfs-kernel-server e vim:
sudo apt-get update
sudo apt-get install nfs-kernel-server vim -y
Em seguida crie as pastas
/nfs, /nfs2
e
/backups:
sudo mkdir /nfs /nfs2 /backups
E altere a permissão para o usuário
nobody
e grupo
nogroup
na três pastas:
sudo chown nobody:nogroup /nfs /nfs2 /backups
Para configurar o compartilhamento do servidor NFS, edite o arquivo
/etc/exports:
sudo vim /etc/exports +$
Adicione no final do arquivo a pasta que sera compartilhada pelo servidor NFS:
67
1. Preparando instâncias na Cloud
Caique Araujo / caiquearaujoac@gmail.com
/nfs *(rw,sync,no_subtree_check,no_root_squash)
/nfs2 *(rw,sync,no_subtree_check,no_root_squash)
/backups *(rw,sync,no_subtree_check,no_root_squash)
Para iniciar a editação no editor VIM, tecle i. Tecle ESC para sair do modo de edição,
e digite :wq para salvar e sair do editor de textos VIM.
Para aplicar as configurações, reinicie o serviço
nfs-kernel-server:
sudo systemctl restart nfs-kernel-server
Verifique se o servidor NFS esta compartilhando as três pastas:
showmount -e
Resultado esperado:
Fig. 1.102: Instalação do servidor NFS - ETAPA 2
A instância nfs-server pode permanecer desligada até a aula sobre Gerenciar Aplicações no Rancher!
Caique Araujo / caiquearaujoac@gmail.com
2
Gerenciar e Importar Clusters
Kubernetes
Competências da Aula
•
•
•
•
•
•
•
Conhecendo o Rancher
Instalação do Rancher
Acessar painel e conhecer os menus
Gerenciar Cluster personalizado
Importar cluster Kubernetes
Criar Cluster Kubernetes Google GKE
Criar Cluster Kubernetes Amazon EKS
Conhecendo o Rancher
O Rancher é um software de gerenciamento de nuvem que permite aos usuários criar, gerenciar
e implantar aplicações em nuvem. O Rancher fornece uma interface de usuário unificada que
permite aos usuários gerenciar todos os recursos da nuvem, incluindo servidores, contêineres
e redes.
O Rancher também fornece uma plataforma de desenvolvimento que permite aos usuários
implantar aplicações em contêineres rapidamente e facilmente. Além disso, o Rancher oferece
uma solução de segurança integrada que permite aos usuários proteger as suas aplicações em
nuvem.
68
69
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Rancher é composto por três componentes principais:
• RancherOS: Uma distribuição Linux minimalista que roda exclusivamente em containers. Ele fornece um sistema operacional pequeno e independente com todas as
ferramentas necessárias para executar contêineres.
• Rancher: Uma plataforma de gerenciamento de contêineres que fornece uma interface
única para gerenciar todos os aspectos da execução de contêineres no Kubernetes, desde
implantação e agendamento até rede e segurança.
• Cattle: Um conjunto de ferramentas de código aberto para gerenciar clusters Kubernetes. Ele inclui uma ferramenta de linha de comando para criar, atualizar e excluir
clusters, bem como uma interface do usuário da Web para gerenciar nós e pods.
Arquitetura do Rancher
O Rancher é um sistema de gestão de infraestrutura de nuvem baseado em Docker. Ele
fornece uma abordagem uniforme para gerenciar clusters de servidores e contêineres Docker
em qualquer nuvem pública ou privada. O Rancher é projetado para funcionar com uma grande
variedade de provedores de nuvem, incluindo Amazon Web Services, Microsoft Azure, Google
Cloud Platform, Rackspace, e DigitalOcean.
O Rancher é composto de dois componentes principais:
• Rancher Server: Um servidor web que fornece uma interface de usuário para gerenciar
clusters de servidores e contêineres Docker.
• Rancher Agent: É uma agent que é executado em cada servidor do cluster e monitoram
os contêineres Docker para solicitações de execução e configuração.
O Rancher é um projeto open source lançado sob a licença Apache 2.0.
Lab 2.1 - Instalar o Rancher em uma instância na GCP
Neste laboratório vamos aprender como instalar o Rancher na instância rancher na GCP.
• Uma vez logado no painel da GCP, selecione o projeto My First Project ao lado da
caixa de pesquisa.
• Em seguida clique em Compute Engine.
• Nna linha da instância rancher, clique no menu suspenso ao lado do SSH e escolha
Abrir na janela do navegador.
70
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.1: Instalação do Rancher - ETAPA 1
Para instalar o Rancher execute na instância rancher o seguinte comando:
sudo docker container run --privileged -d --name rancher-manager --restart=unless-stopped p 80:80 -p 443:443 rancher/rancher:stable
Verifique se o container do Rancher esta sendo executado:
sudo docker container ls
Resultado esperado:
CONTAINER ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
22227af3ab13
rancher/rancher:stable
"entrypoint.sh"
5 minutes ago
Up 2 minute2
0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
ranchermanager
Acesse o IP publico da instância da Cloud, através do ícone ao lado da coluna IP externo.
71
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.2: Instalação do Rancher - ETAPA 4
Aceite o certificado autoassinado criado pelo Rancher.
Fig. 2.3: Instalação do Rancher - ETAPA 5
Para realizar o primeiro acesso, é preciso informar a senha de bootstrap.
72
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.4: Instalação do Rancher - ETAPA 6
Retorne ao terminal da instância rancher e execute o comando abaixo, para exibir a senha de
bootstrap:
sudo docker logs rancher-manager 2>&1 | grep "Bootstrap Password:"
Resultado esperado:
Fig. 2.5: Instalação do Rancher - ETAPA 7
Copie a senha!
Retorne ao painel do Rancher para colar a senha copiada, e clique no botão Log in with
Local User.
73
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.6: Instalação do Rancher - ETAPA 8
O próximo passo é definir uma senha para o admin, através do opção Set a specific password
to use. Use as caixas New Password e Confirm New Password, para definir a nova senha.
Não esqueça de selecionar a opção I agree to the terms and conditions for using Rancher,
e clique no botão Continue.
Fig. 2.7: Instalação do Rancher - ETAPA 9
Como resultado final sera mostrado o painel do Rancher:
74
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.8: Instalação do Rancher - ETAPA 10
Lab 2.2 - Conhecendo Painel do Rancher
Neste laboratório vamos conhecer e entender a função de diversos menu no painel do Rancher.
Cluster Management
A área de Cluster Management permite o gerenciamento de cluster Kubernetes no Rancher.
Para acessar essa área, clique no menu principal que fica na parte superior ao lado esquerdo
da tela e clique em Cluster Management.
Em seguida clique em
75
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.9: Acessando o Cluster Management - ETAPA 1
A partir dos menus ao lado esquerdo da tela, é possível configurar:
•
•
•
•
•
•
•
Novos clusters.
Credenciais de cloud
Drives.
Politicas de segurança em Pods.
Templates.
Nodes.
Repositórios de pacotes do Helm.
76
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.10: Acessando o Cluster Management - ETAPA 2
Cluster Explorer
A área de Cluster Explorer permite o gerenciamento dos recursos em cluster Kubernetes.
Para acessar essa área, clique no menu principal que fica na parte superior ao lado esquerdo
da tela e clique no nome de um cluster, em nosso caso local.
Fig. 2.11: Acessando o Cluster Explorer - ETAPA 1
A partir dos menus ao lado esquerdo da tela, é possivel visualizar e configurar:
• Cluster: Recursos do cluster como namespaces e nodes.
• Workloads: Gerenciamento de CronJobs, DaemonSets, Deployments, Jobs, StatefulSets e Pods.
• Apps & Marktplace: Gerenciar repositórios e aplicações do Helm.
77
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
• Service Discovery: Gerenciamento de HorizontalPodAutoscalers, Ingresses, NetworkPlocies e Services.
• Storage: Gerenciamento de PersistentVolumes, StorageClass, ConfigMaps, PersistentVolumeClaims e Secrets.
• RBAC: Gerenciamento de membros do Cluster.
• More Resources: Gerenciamento de outros recursos do cluster, que não estão presentes
nos demais menus.
Fig. 2.12: Acessando o Cluster Explorer - ETAPA 2
Gerenciar Cluster personalizado
Quando você cria um cluster personalizado, o Rancher usa o RKE (Rancher Kubernetes Engine) para criar um cluster Kubernetes em servidores bare-metal locais, máquinas virtuais locais
ou em qualquer nó hospedado por um provedor de infraestrutura.
Para usar essa opção, você precisará:
• Acessar os servidores que pretende usar em seu cluster Kubernetes.
• Instalar em cada servidor o Docker.
• Executar o comando fornecido na interface do Rancher em cada servidor para transformar
cada um em um nó do Kubernetes.
Lab 2.3 - Criar cluster personalizado
Neste laboratório vamos aprender como criar um cluster Kubernetes personalizado no Rancher.
78
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Criar cluster personalizado no Rancher
Acesse a área de Cluster Management e clique no botão CREATE:
Fig. 2.13: Criar cluster personalizado no Rancher - ETAPA 1
Em seguida, clique na opção Custom:
Fig. 2.14: Criar cluster personalizado no Rancher - ETAPA 2
Define a o nome custom na caixa Cluster Name:
79
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.15: Criar cluster personalizado no Rancher - ETAPA 3
Role a página e selecione as seguintes opções:
•
•
•
•
Kubernetes Version: v1.21.10-rancher1-1
Network Provider: Flannel
Windows Suport: Disabled
Cloud Provider: None
O plug-in Flannel para Kubernetes permite a comunicação entre contêineres em
diferentes hosts criando uma rede de sobreposição usando a solução de rede definida
por software (SDN).
80
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.16: Criar cluster personalizado no Rancher - ETAPA 4
A seguir vamos deixar padrão as seguintes configurações:
• Private Registry: Configura o uso de um registro privado.
• Advanced Options: Configura opções do cluster, como por exemplo portas de NodePort, uso de Ingress, configurações de segurança e storage.
• Authorized Endpoint: Configura permite a comunicação direta com o cluster, ignorando o proxy de API.
Clique no botão Next para continuar:
Fig. 2.17: Criar cluster personalizado no Rancher - ETAPA 5
81
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
O proximo passo é selecionar quais funções o nosso servidor Kubernetes ira utilizar.
• etcd: Permite executar um Pod do etcd, que é um banco de dados de chaves distribuído,
ele é responsável por armazenar informações do cluster, assim como, podemos usar o
etcd para armazenar qualquer tipo de informação.
• Control Plane: Permite executar um controlador que gerencia os controladores pods,
deployments, replicasets, etc.
• Worker: Permite executar pods de aplicações.
Clique no link Show advanced options para continuar:
Fig. 2.18: Criar cluster personalizado no Rancher - ETAPA 6
Antes de continuar, retorne a sua conta na GCP e acesse o painel do Compute Engine.
Anote o IP Interno e Externo da instância custom.
Fig. 2.19: Criar cluster personalizado no Rancher - ETAPA 7
82
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
A proxima etapa é preencher as seguintes caixas:
• Node Internal Address: Digite o IP Interno da instância custom.
• Node Public Address: Digite o IP Externo da instância custom.
• Node Name: Digite o nome custom.
Fig. 2.20: Criar cluster personalizado no Rancher - ETAPA 8
Role até o final da página e você ira encontrar o comando que deve ser executado na instância
custom. Copie o comando através do ícone ao lado direito Copy to Clipboard.
Fig. 2.21: Criar cluster personalizado no Rancher - ETAPA 9
83
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Abra a janela de acesso SSH da instância custom, cole o comando e tecle ENTER.
Fig. 2.22: Criar cluster personalizado no Rancher - ETAPA 10
Retorne ao painel do Rancher e clique no botão Done.
Fig. 2.23: Criar cluster personalizado no Rancher - ETAPA 11
Como resultado é possível observar que o cluster Kubernetes esta sendo provisionado na
GCP!
Fig. 2.24: Criar cluster personalizado no Rancher - ETAPA 12
84
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Para acessar os recursos do cluster custom, clique no botão Explorer:
Fig. 2.25: Criar cluster personalizado no Rancher - ETAPA 13
Fig. 2.26: Criar cluster personalizado no Rancher - ETAPA 14
Para visualizar os Pods no cluster custom, clique em Workloads -> Pods ao lado esquerdo
da tela:
85
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.27: Criar cluster personalizado no Rancher - ETAPA 15
Para visualizar os Serviços no cluster custom, clique em Service Discovery -> Services ao
lado esquerdo da tela:
Fig. 2.28: Criar cluster personalizado no Rancher - ETAPA 16
Remover cluster no Rancher
Clique no menu principal que fica na parte superior ao lado esquerdo da tela e clique em
Cluster Management.
86
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.29: Remover cluster no Rancher - ETAPA 1
Selecione na coluna State o cluster custom
Fig. 2.30: Remover cluster no Rancher - ETAPA 2
E clique no botão Delete.
Fig. 2.31: Remover cluster no Rancher - ETAPA 3
87
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Confirme a removação através do botão Delete.
Fig. 2.32: Remover cluster no Rancher - ETAPA 4
Confirme se o cluster custom foi removido!
Fig. 2.33: Remover cluster no Rancher - ETAPA 5
Importar Cluster Kubernetes
Quando você o,importa um cluster kubernetes pronto, o Rancher usa as credencias do provedor
de Cloud para criar o cluster. Para usar essa opção, você antes precisa configurar as credencias
de seu provedor de Cloud, no painel do Rancher.
Lab 2.4 - Importar cluster kubernetes
Neste laboratório vamos aprender como importar um cluster Kubernetes que em execução
na GCP para o painel do Rancher.
Criar cluster Kubernetes na GCP
Uma vez logado no painel da GCP, selecione o projeto cluster2 ao lado da caixa de pesquisa.
88
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.34: Criar cluster Kubernetes na GCP - ETAPA 1
E clique no ícone Ativar o Cloud Shell, que esta localizado na parte superior direito da tela.
Fig. 2.35: Criar cluster Kubernetes na GCP - ETAPA 2
No terminal que sera aberto, vamos executar comando que criar um cluster kubernetes GKE.
gcloud container clusters create kubernetes-gcp --zone us-central1-c --no-enable-ip-alias
Resultado esperado:
89
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.36: Criar cluster Kubernetes na GCP - ETAPA 3
Sera preciso ativar a autorização do Cloud Shell, através do botão AUTORIZAR.
Fig. 2.37: Criar cluster Kubernetes na GCP - ETAPA 4
Apos a criação do cluster kubernetes, sera apresentado um resumo com o status RUNNING.
90
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.38: Criar cluster Kubernetes na GCP - ETAPA 4
Podemos verificar que o cluster foi criado, através do menu de navegação, selecionando a
opção Kubernetes Engine e Clusters.
Fig. 2.39: Criar cluster Kubernetes na GCP - ETAPA 5
Como resultado é possível verificar o cluster kubernetes-gcp com 3 nós.
91
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.40: Criar cluster Kubernetes na GCP - ETAPA 6
Configurar credencias da Cloud
Retorne a tela do Cluster Management e vamos criar um nova credencial, através da opção
Cloud Credentials -> Create.
Fig. 2.41: Configurar credencias da Cloud - ETAPA 1
Em seguida clique no ícone Google.
92
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.42: Configurar credencias da Cloud- ETAPA 2
Depois clique no botão Read from File para carregar a chave da GCP.
Fig. 2.43: Configurar credencias da Cloud - ETAPA 3
É preciso selecionar o arquivo de chave cluster2 que esta gravado em sua máquina local.
93
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.44: Configurar credencias da Cloud - ETAPA 4
Em em seguida clique no botão Create.
Fig. 2.45: Configurar credencias da Cloud - ETAPA 5
E verifique se a credencial foi criada corretamente.
94
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.46: Configurar credencias da Cloud - ETAPA 6
Importar cluster Kubernetes no Rancher
Para importar um cluster kubernetes para o Rancher, clique em Clusters -> Import Existing.
Fig. 2.47: Importar cluster Kubernetes no Rancher - ETAPA 1
Em seguida clique na opção Google GKE.
95
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.48: Importar cluster Kubernetes no Rancher - ETAPA 2
E defina o nome kubernetes-gcp.
Fig. 2.49: Importar cluster Kubernetes no Rancher - ETAPA 3
Antes de continuar alterne para o painel da GCP e copie o ID do projeto cluster2.
96
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.50: Importar cluster Kubernetes no Rancher - ETAPA 4
Voltando ao Rancher informe o ID do projeto cluster2 na caixa Google Project ID. Clique
no botão Next: Configure Cluster para continuar.
Fig. 2.51: Importar cluster Kubernetes no Rancher - ETAPA 5
A próxima etapa é definir a Zona us-central1-c e clicar no botão Load Clusters.
97
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.52: Importar cluster Kubernetes no Rancher - ETAPA 6
Selecione o cluster kubernetes-gcp e clique no botão Register Cluster.
Fig. 2.53: Importar cluster Kubernetes no Rancher - ETAPA 7
Aguarde a importação do cluster para o painel do Rancher!
98
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.54: Importar cluster Kubernetes no Rancher - ETAPA 8
E clique no botão Explore para visualizar as informações do cluster importado.
Fig. 2.55: Importar cluster Kubernetes no Rancher - ETAPA 9
99
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.56: Importar cluster Kubernetes no Rancher - ETAPA 10
Excluir cluster Kubernetes no Rancher
Para excluir um cluster no Rancher, selecione o mesmo e clique no botão Delete.
Fig. 2.57: Excluir cluster Kubernetes no Rancher - ETAPA 1
Confirme a exclusão através do botão Delete.
100
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.58: Excluir cluster Kubernetes no Rancher - ETAPA 2
Excluir cluster Kubernetes via Cloud Shell
Para continuar clique no ícone ativar o Cloud Shell.
Fig. 2.59: Excluir cluster Kubernetes via Cloud Shell - ETAPA 1
E execute o comando para excluir o cluster kubernetes gcp.
gcloud container clusters delete kubernetes-gcp --zone us-central1-c
101
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.60: Excluir cluster Kubernetes via Cloud Shell - ETAPA 2
Confirme a partir das teclas Y e Enter.
Fig. 2.61: Excluir cluster Kubernetes via Cloud Shell - ETAPA 3
Aguarde a exclusão até aparecer a palavra done.
102
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.62: Excluir cluster Kubernetes via Cloud Shell - ETAPA 4
Lab 2.5 - Criar Cluster Kubernetes Google GKE
Neste laboratório vamos aprender como criar um cluster Kubernetes usando o provedor de
cloud Google Cloud Platform.
Configurar credenciais para Google GKE
Para começar selecione Cloud Credentials e depois clique no botão Create.
Fig. 2.63: Configurar credenciais para Google GKE - ETAPA 1
Em seguida clique no ícone Google.
103
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.64: Configurar credenciais para Google GKE - ETAPA 2
Para carregar as credenciais a partir da chave clique no botão Read from File.
Fig. 2.65: Configurar credenciais para Google GKE - ETAPA 3
Selecione a partir da sua máquina o arquivo de chave cluster1.
104
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.66: Configurar credenciais para Google GKE - ETAPA 4
Após carregar o arquivo de chave clique no botão Create para continuar.
Fig. 2.67: Configurar credenciais para Google GKE - ETAPA 5
Repita os passos para adicionar as credenciais usando o arquivo de chave cluster2.
105
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.68: Configurar credenciais para Google GKE - ETAPA 6
Criar Cluster Kubernetes Google GKE
Para criar um cluster Google GKE, clique na opção Clusters e depois do botão Create.
Fig. 2.69: Criar Cluster Kubernetes Google GKE - ETAPA 1
Em seguida clique no ícone Google GKE.
106
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.70: Criar Cluster Kubernetes Google GKE - ETAPA 2
Na caixa Cluster Name digite cluster1-gke.
Fig. 2.71: Criar Cluster Kubernetes Google GKE - ETAPA 3
Antes de continuar alterne para o painel da GCP, e copie o ID do cluster1.
107
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.72: Criar Cluster Kubernetes Google GKE - ETAPA 4
Retornando ao painel do Rancher, digite na caixa Google ProjectID o ID do cluster1.
Selecione caixa Cloud Credentials cluster1 e em seguida clique no botão Next: Configure
Cluster para continuar.
Fig. 2.73: Criar Cluster Kubernetes Google GKE - ETAPA 5
Em Location Type vamos utilizar a zona us-central1-c. Para continuar clique no botão
Configure Cluster.
108
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.74: Criar Cluster Kubernetes Google GKE - ETAPA 6
Em Cluster Options vamos selecionar na caixa Kubernetes Options, a versão do Kubernetes e na parte de segurança vamos selecionar:
• Network Policy Config
• Network Policy for Nodes
• Project Network Isolation
Fig. 2.75: Criar Cluster Kubernetes Google GKE - ETAPA 7
109
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Em** Cluster Addons** mantenha as opções Horizontal Pod Autoscaling e HTTP Load
Balancing selecionadas.
Fig. 2.76: Criar Cluster Kubernetes Google GKE - ETAPA 8
Em Node Details vamos selecionar:
• Imagem Type: Ubuntu with Docker.
• Machine Type: 2-highmem-2 que contem 2 vCPUs e 16 GB de RAM.
Fig. 2.77: Criar Cluster Kubernetes Google GKE - ETAPA 9
Em Group Details, digite na caixa Name a palavra nodes e na na caixa Initial Node Count
o valor 4.
110
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Para criar o cluster kubernetes, clique no botão Create.
Fig. 2.78: Criar Cluster Kubernetes Google GKE - ETAPA 10
E aguarde o provisionamento do cluster.
Fig. 2.79: Criar Cluster Kubernetes Google GKE - ETAPA 11
Quando status aparecer Active, clique no botão Explore para visualizar os recursos de seu
novo cluster.
111
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.80: Criar Cluster Kubernetes Google GKE - ETAPA 12
Fig. 2.81: Criar Cluster Kubernetes Google GKE - ETAPA 13
Lab 2.6 - Criar Cluster Kubernetes EKS
Neste laboratório vamos aprender como criar um cluster Kubernetes usando o provedor de
cloud AWS.
Criar usuário e gerar chaves na AWS
Logue em sua conta na AWS e acesse a área de IAM. Em seguida clique em Usuários ao lado
esquerdo da tela e depois no botão Adicionar usuários.
112
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.82: Criar usuário e gerar chaves na AWS - ETAPA 1
Na caixa Nome de usuário, digite suporte-rancher e no tipo de acesso selecione Chave
de acesso: cesso programático. Para continuar clique no botão Próximo: Permissões.
Fig. 2.83: Criar usuário e gerar chaves na AWS - ETAPA 2
Em seguida vamos selecione a opção Anexar políticas existentes de forma direta.
113
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.84: Criar usuário e gerar chaves na AWS - ETAPA 3
E na lista de políticas vamos selecionar AdministratorAccess. Para continuar clique no botão
Próximo: Tags.
Fig. 2.85: Criar usuário e gerar chaves na AWS - ETAPA 4
Digite na caixa Chave, a palavra curso e na caixa Valor a palavra rancher. Para continuar
clique no botão Próximo: Revisar.
114
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.86: Criar usuário e gerar chaves na AWS - ETAPA 5
Para finalizar a criação do usuário faça uma revisão nas informações, em seguida clique no
botão Criar usuário.
Fig. 2.87: Criar usuário e gerar chaves na AWS - ETAPA 6
Para exibir a chave de acesso secreta clique no link Exibir.
115
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.88: Criar usuário e gerar chaves na AWS - ETAPA 7
Para copiar o ID da chave de acesso clique no ícone que são duas folhas para copiar a
chave.
Fig. 2.89: Criar usuário e gerar chaves na AWS - ETAPA 8
Para copiar a chave de acesso secreta, selecione a mesma para realizar a cópia.
116
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.90: Criar usuário e gerar chaves na AWS - ETAPA 9
Configurar credencias para Amazon EKS
Para criar credenciais para AWS retorne a área de Cluster Management e clique em Cloud
Credentials.
Fig. 2.91: Configurar credencias para Amazon EKS - ETAPA 1
Em seguida clique no botão Create.
117
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.92: Configurar credencias para Amazon EKS - ETAPA 2
Na lista de provedores selecione o ícone AWS Amazon.
Fig. 2.93: Configurar credencias para Amazon EKS - ETAPA 3
Preencha as seguinte informações:
•
•
•
•
Name: cluster-eks
Access Key: Digite ou cole a sua Access Key da conta suporte-rancher
SecretKey: Digite ou cole a sua SecretKey da conta suporte-rancher
Default Region: us-east-1
Para finalizar clique no botão Create.
118
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.94: Configurar credencias para Amazon EKS - ETAPA 4
Criar Cluster Kubernetes Amazon EKS
Para criar um cluster na AWS clique na opção Clusters.
Fig. 2.95: Criar Cluster Kubernetes Amazon EKS - ETAPA 1
Em seguida clique no botão Create.
119
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.96: Criar Cluster Kubernetes Amazon EKS - ETAPA 2
Selecione o ícone Amazon EKS.
Fig. 2.97: Criar Cluster Kubernetes Amazon EKS - ETAPA 3
Preencha e selecione as seguinte informações:
• Cluster Name: cluster-eks
• Region: us-east-1
• Cloud Credentials: cluster-eks
Para continuar clique no botão Next: Configure Cluster.
120
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.98: Criar Cluster Kubernetes Amazon EKS - ETAPA 4
Na área de Network vamos selecionar Public Access e Standard VPC.Para continuar clique
no botão Next: Select Security Groupr.
Fig. 2.99: Criar Cluster Kubernetes Amazon EKS - ETAPA 5
Em Cluster Options vamos selecionar a versão do cluster Kubernetes na caixa Kubernetes
Version. Em seguida clique no botão Next: Configure Network para continuar.
121
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.100: Criar Cluster Kubernetes Amazon EKS - ETAPA 6
Em Node Details não selecione nenhuma opção aceitando os valores padrão.
Fig. 2.101: Criar Cluster Kubernetes Amazon EKS - ETAPA 7
Em Group Details digite a palavra nodes na caixa Node Group Name, e mantenha o valor
2 para quantidade de nós.
122
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Para criar o seu cluster clique no botão Create.
Fig. 2.102: Criar Cluster Kubernetes Amazon EKS - ETAPA 8
E aguarde o provisionamento do cluster.
Fig. 2.103: Criar Cluster Kubernetes Amazon EKS - ETAPA 9
Quando status aparecer Active, clique no botão Explore para visualizar os recursos de seu
novo cluster.
123
2. Gerenciar e Importar Clusters Kubernetes
Caique Araujo / caiquearaujoac@gmail.com
Fig. 2.104: Criar Cluster Kubernetes Amazon EKS - ETAPA 10
Fig. 2.105: Criar Cluster Kubernetes Amazon EKS - ETAPA 11
Caique Araujo / caiquearaujoac@gmail.com
3
Gerenciar Aplicações no Rancher
Competências da Aula
•
•
•
•
•
•
Entenda os aplicativos e o Marketplace
Gerenciar aplicativos com o Helm
Instalar aplicação nfs-subdir-external-provisioner
Instalar aplicação OpenLDAP
Popular base LDAP
Instalação do Longhorn
Apps & Marketplace
O Rancher possui repositórios pré-carregados que são implantados como Charts do Helm. A
partir de cada Cluster é possível adicionar gerenciar repositórios e aplicações do Helm, a partir
de repositórios. Os Charts do Helm são gerenciados usando o Apps & Marketplace, que se
comporta como catálogo para importar pacotes de Charts Helm e repositórios.
124
125
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.1: Catálogo de aplicações no Rancher
O que é Helm?
Helm é um gerenciador de pacotes para Kubernetes. Ele permite que você instale aplicativos
facilmente, atualize-os e compartilhe seus aplicativos com outros usuários do Kubernetes.
Helm também torna mais fácil para você gerenciar várias aplicações Kubernetes em um único
cluster.
Lab 3.1 - Gerenciar Repositórios no Rancher
Neste laboratório vamos aprender como adicionar novos repositórios Helm através do painel
do Rancher.
Adicionar repositório nfs-subdir-external-provisioner
Uma vez logado no Rancher, clique no cluster cluster1-gke.
126
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.2: Adicionar repositório NFS - ETAPA 1
Em seguida selecione a opção Repositories em Apps & Marketplace.
Fig. 3.3: Adicionar repositório NFS - ETAPA 2
Antes de adicionar um novo repositório vamos acessar o site ArtifactHUB, que é um repositório
publico de aplicações para Kubernetes.
https://artifacthub.io/
Na caixa de pesquisas, digite nfs-subdir-external-provisioner e tecle ENTER.
127
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.4: Adicionar repositório NFS - ETAPA 3
Selecione a pacote nfs-subdir-external-provisioner do user viceice.
Fig. 3.5: Adicionar repositório NFS - ETAPA 4
Para exibir as instruções de instalação do pacote, clique no botão INSTALL.
128
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.6: Adicionar repositório NFS - ETAPA 5
Na caixa Add repository, selecione e copie o endereço do repositório.
Fig. 3.7: Adicionar repositório NFS - ETAPA 6
Retorne ao Rancher e clique no botão Create para adicionar um novo repositório.
129
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.8: Adicionar repositório NFS - ETAPA 7
Preencha as seguintes informações:
• Name: nfs-subdir-external-provisioner
• Index URL: cole o endereço de repositório que você copiou do site ArtifactHUB.
Fig. 3.9: Adicionar repositório NFS - ETAPA 8
Role até o final da página e clique no botão Create para finalizar.
130
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.10: Adicionar repositório NFS - ETAPA 9
Verifique se o repositório nfs-subdir-external-provisioner foi criado corretamente.
Fig. 3.11: Adicionar repositório NFS - ETAPA 10
Adicionar OpenLDAP
Retorne ao ArtifactHUB para pesquisar openldap e tecle ENTER.
131
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.12: Adicionar repositório OpenLDAP - ETAPA 1
Selecione a pacote openldap do user jp-gouin e repo helm-openldap-ha.
Fig. 3.13: Adicionar repositório OpenLDAP - ETAPA 2
Para exibir as instruções de instalação do pacote, clique no botão INSTALL.
132
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.14: Adicionar repositório OpenLDAP - ETAPA 3
Na caixa Add repository, selecione e copie o endereço do repositório.
Fig. 3.15: Adicionar repositório OpenLDAP - ETAPA 4
Retorne ao Rancher e clique no botão Create para adicionar um novo repositório.
133
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.16: Adicionar repositório OpenLDAP - ETAPA 5
Preencha as seguintes informações:
• Name: helm-openldap
• Index URL: cole o endereço de repositório que você copiou do site ArtifactHUB.
Fig. 3.17: Adicionar repositório OpenLDAP - ETAPA 6
Role até o final da página e clique no botão Create para finalizar.
134
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.18: Adicionar repositório OpenLDAP - ETAPA 7
Verifique se o repositório helm-openldap foi criado corretamente.
Fig. 3.19: Adicionar repositório OpenLDAP - ETAPA 8
Lab 3.2 - Instalar aplicação nfs-subdir-external-provisioner no Rancher
Neste laboratório vamos aprender como instalar o pacote nfs-subdir-external-provisioner.
O objetivo é compartilhar o diretório /nfs da instância nfs-server que esta na GCP, e assim
disponibilizar um storage distribuído em nosso cluster.
Obtendo IP externo da instância nfs-server
Acesse a lista de instâncias no painel da GCP e inicie a instância nfs-server, através da opção
INICIAR/RETOMAR.
135
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.20: Copiar IP Externo da instância nfs-server - ETAPA 1
Confirme a inicialização da instância, através do botão INICIAR.
Fig. 3.21: Copiar IP Externo da instância nfs-server - ETAPA 2
Copie o IP público da instância nfs-server através da coluna IP externo.
136
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.22: Copiar IP Externo da instância nfs-server - ETAPA 3
Instalar Aplicação nfs-subdir-external-provisioner
Retorne ao painel do Rancher e clique na opção Charts.
Fig. 3.23: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 1
Pesquise nfs na caixa ao lado direito da tela, e selecione o pacote nfs-subdir-externalprovisioner.
137
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.24: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 2
Para continuar a instalação clique no botão Install.
Fig. 3.25: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 3
Selecione o namespace detault e digite o nome nfs-subdir-external-provisioner.
Selecione a opção Customize Helm options before install e clique no botão Next para
continuar.
138
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.26: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 4
No bloco de configuração nfs vamos alterar as seguintes informações:
• path: /nfs
• reclaimPolicy: Retain
• server: Digite ou cole o IP externo da instância nfs-server
Clique no botão Next para continuar.
Fig. 3.27: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 5
Para iniciar a instalação do pacote clique no botão Install.
139
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.28: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 6
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
Fig. 3.29: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 6
Para confirmar que o pacote nfs-subdir-external-provisioner foi instalado corretamente,
clique em Installed Apps.
140
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.30: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 7
Na área de Storage é possivel observer que um novo StorageClass de nome nfs-client foi
criado em nosso cluster.
Fig. 3.31: Instalar aplicação nfs-subdir-external-provisioner - ETAPA 8
Lab 3.3 - Instalar aplicação OpenLDAP no Rancher
Neste laboratório vamos aprender como instalar o pacote openldap no cluster Kubernetes,
para ser utilizando como backend de autenticação no Rancher.
Para instalar o pacote do Openldap, clique na opção Charts. Pesquise e selecione openldap.
141
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.32: Instalar aplicação OpenLDAP - ETAPA 1
Para continuar a instalação clique no botão Install.
Fig. 3.33: Instalar aplicação OpenLDAP - ETAPA 2
Selecione o namespace detault e digite o nome openldap.
Selecione a opção Customize Helm options before install e clique no botão Next para
continuar.
142
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.34: Instalar aplicação OpenLDAP - ETAPA 3
No bloco de configuração persistence vamos alterar as seguintes informações:
persistence:
accessModes:
- ReadWriteOnce
enabled: true
size: 8Gi
storageClass: nfs-client
Fig. 3.35: Instalar aplicação OpenLDAP - ETAPA 4
No bloco de configuração service, mude para LoadBalancer o valor da chave type. Clique
no botão Next para continuar.
143
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.36: Instalar aplicação OpenLDAP - ETAPA 5
Para iniciar a instalação do pacote clique no botão Install.
Fig. 3.37: Instalar aplicação OpenLDAP - ETAPA 6
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
144
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.38: Instalar aplicação OpenLDAP - ETAPA 7
Para confirmar que o pacote openldap foi instalado corretamente, clique em Installed Apps.
Fig. 3.39: Instalar aplicação OpenLDAP - ETAPA 8
Na área de Storage -> PersistentVolumeClaims é possível observar que agora temos 3
novos PVCs, criada pela aplicação openldap.
145
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.40: Instalar aplicação OpenLDAP - ETAPA 9
Na área de Storage -> PersistentVolume é possível observar que agora temos 3 novos PVs,
criada pela aplicação openldap.
Fig. 3.41: Instalar aplicação OpenLDAP - ETAPA 10
Lab 3.4 - Popular base LDAP
Neste laboratório vamos aprender como popular a base LDAP com grupos e usuários.
Antes de popular a base LDAP, é preciso anotar/copiar o IP do serviço LoadBalancer do
openldap, através do menu Service Discovery -> Services.
146
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.42: Popular base LDAP - ETAPA 1
Anote ou copie também a senha do administrator da base LDAP, através do menu Storage
-> Secrets -> openldap.
Fig. 3.43: Popular base LDAP - ETAPA 2
Clique no link Copy na linha referente a variável LDAP_ADMIN_PASSWORD.
147
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.44: Popular base LDAP - ETAPA 3
Através da instância custom, abra uma conexão SSH!
Uma vez logado na instância, instale o pacote cliente do OpenLDAP:
sudo apt install ldap-utils -y
Armazene na variável LDAP_IP o ip do serviço loadbalancer do openldap.
export LDAP_IP=<IP_DO_LOADBALANCER>
Exemplo:
export LDAP_IP=104.154.192.181
Armazene na variável LDAP_PORT a porta 389 do openldap.
export LDAP_PORT=389
Armazene na variável LDAP_PASSWORD o valor do secret LDAP_ADMIN_PASSWORD.
148
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
export LDAP_PASSWORD=<CONTEUDO_DO_SECRET_LDAP_ADMIN_PASSWORD>
Exemplo:
export LDAP_PASSWORD=Not@SecurePassw0rd
Para testar a comunicação com o servidor LDAP, vamos utilizar o comando
ldapsearch:
ldapsearch -x -LLL -H ldap://$LDAP_IP:$LDAP_PORT -b dc=example,dc=org -D cn=admin,dc=
example,dc=org -w $LDAP_PASSWORD
Resultado esperado:
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9MmNCb0FQb3lyZ2ltc3Zad1NsaFdBNEJZWFBBcVFSMSs=
Obtenha do Github da 4Linux, a pasta 543 que possui o arquivo ldap-base.ldif.
sudo apt install git -y
git clone https://github.com/4linux/543
Visualizar o arquivo ldap-base.ldif no diretório 543/provision/ansible/files/, responsável em
armazenar grupos e usuários que vamos adicionar em nosso servidor LDAP:
cat 543/provision/ansible/files/ldap-base.ldif
149
Caique Araujo / caiquearaujoac@gmail.com
Resultado esperado:
dn: ou=Users,dc=example,dc=org
objectClass: organizationalUnit
ou: Users
dn: ou=Groups,dc=example,dc=org
objectClass: organizationalUnit
ou: Groups
dn: uid=admin,ou=Users,dc=example,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Admin
sn: Linux
userPassword: {SSHA}nVPnjhm1xR8aRA03payFZfVS7KykeHXk
loginShell: /bin/bash
uidNumber: 1010
gidNumber: 1010
homeDirectory: /home/admin
dn: uid=developer,ou=Users,dc=example,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Developer
sn: Linux
userPassword: {SSHA}nVPnjhm1xR8aRA03payFZfVS7KykeHXk
loginShell: /bin/bash
uidNumber: 1020
gidNumber: 1020
homeDirectory: /home/developer
dn: uid=suporte,ou=Users,dc=example,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Suporte
sn: Linux
userPassword: {SSHA}nVPnjhm1xR8aRA03payFZfVS7KykeHXk
loginShell: /bin/bash
uidNumber: 1030
gidNumber: 1030
homeDirectory: /home/suporte
dn: uid=analista,ou=Users,dc=example,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: Analista
sn: Linux
userPassword: {SSHA}nVPnjhm1xR8aRA03payFZfVS7KykeHXk
loginShell: /bin/bash
uidNumber: 1040
gidNumber: 1040
homeDirectory: /home/analista
dn: cn=devops,ou=Groups,dc=example,dc=org
objectClass: posixGroup
cn: DevOps
3. Gerenciar Aplicações no Rancher
150
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
gidNumber:
memberUid:
memberUid:
memberUid:
memberUid:
1080
developer
suporte
admin
analista
Para adicionar os registros do arquivo
o comando ldapadd:
ldap-base.ldif
em nosso servidor LDAP, vamos utilizar
ldapadd -x -H ldap://$LDAP_IP:$LDAP_PORT -D cn=admin,dc=example,dc=org -w $LDAP_PASSWORD -f
543/provision/ansible/files/ldap-base.ldif
Resultado esperado:
adding new entry "ou=Users,dc=example,dc=org"
adding new entry "ou=Groups,dc=example,dc=org"
adding new entry "uid=admin,ou=Users,dc=example,dc=org"
adding new entry "uid=developer,ou=Users,dc=example,dc=org"
adding new entry "uid=suporte,ou=Users,dc=example,dc=org"
adding new entry "uid=analista,ou=Users,dc=example,dc=org"
adding new entry "cn=devops,ou=Groups,dc=example,dc=org"
Verifique se a base de nosso servidor LDAP, contem novos registros:
ldapsearch -x -LLL -H ldap://$LDAP_IP:$LDAP_PORT -b dc=example,dc=org -D cn=admin,dc=
example,dc=org -w $LDAP_PASSWORD | grep dn
Resultado esperado:
dn:
dn:
dn:
dn:
dn:
dn:
dn:
dn:
dn:
dc=example,dc=org
cn=admin,dc=example,dc=org
ou=Users,dc=example,dc=org
ou=Groups,dc=example,dc=org
uid=admin,ou=Users,dc=example,dc=org
uid=developer,ou=Users,dc=example,dc=org
uid=suporte,ou=Users,dc=example,dc=org
uid=analista,ou=Users,dc=example,dc=org
cn=devops,ou=Groups,dc=example,dc=org
151
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Longhorn
Longhorn é um sistema de armazenamento em bloco distribuído para Kubernetes. Quando
combinado com o Rancher, o Longhorn torna fácil, rápido e confiável a implantação de armazenamento de bloco persistente altamente disponível em seu ambiente Kubernetes.
Lab 3.5 - Instalar Longhorn no Rancher
Neste laboratório vamos aprender como instalar o Longhorn, que sera responsável em fornecer
storage de bloco distribuído para Kubernetes.
Instalar Longhorn no Rancher
Uma vez conectado no painel do Rancher selecione o cluster cluster1-gke.
Fig. 3.45: Instalar Longhorn no Rancher - ETAPA 1
Em seguida clique no botçao Cluster Tools, localizado para parte inferior esquerda da tela.
Clique no botão Install da aplicação Longhorn.
152
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.46: Instalar Longhorn no Rancher - ETAPA 2
Selecione em Install into Project, o projeto Detault e selecione a opção Customize Helm
options before install.
Clique no botão Next para continuar.
Fig. 3.47: Instalar Longhorn no Rancher - ETAPA 3
Em Longhorn Default Settings, selecione a opção Customize Default Settings.
153
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.48: Instalar Longhorn no Rancher - ETAPA 4
E na caixa Backup Target informe:
nfs://IP_EXTERNO_DA_INSTÂNCIA_NFS-SERVER:/backups
Fig. 3.49: Instalar Longhorn no Rancher - ETAPA 5
Para você copiar o IP externo da instância nfs-server, alterne para o painel da GCP e copie
o IP.
154
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.50: Instalar Longhorn no Rancher - ETAPA 6
Retorne ao Rancher e clique na opção Services ans Load Balancing.
Fig. 3.51: Instalar Longhorn no Rancher - ETAPA 7
E troque a opção ClusterIP para LoadBalancer. Para continuar clique no botão Next.
155
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.52: Instalar Longhorn no Rancher - ETAPA 8
Para iniciar a instalação do Longhorn clique no botão Install.
Fig. 3.53: Instalar Longhorn no Rancher - ETAPA 9
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
156
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.54: Instalar Longhorn no Rancher - ETAPA 10
Para validar a instalação do Longhorn, verifique se existe um novo StorageClass chamado
longhorn.
Fig. 3.55: Instalar Longhorn no Rancher - ETAPA 11
Acessando o painel do Longhorn
Primeiro selecione a opção Longhorn ao lado esquerdo da tela.
157
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.56: Acessando o painel do Longhorn - ETAPA 1
Em seguida clique no link Manage storage system via UI.
Fig. 3.57: Acessando o painel do Longhorn - ETAPA 2
Como resultado final sera possível visualizar o painel do Longhorn.
158
3. Gerenciar Aplicações no Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 3.58: Acessando o painel do Longhorn - ETAPA 3
Caique Araujo / caiquearaujoac@gmail.com
4
Gerenciar Autenticação e CLI
Competências da Aula
•
•
•
•
•
•
Gerenciar autenticação Local no Rancher
Gerenciar autenticação LDAP no Rancher
Gerenciar autorização no Rancher
Kubectl Shell
Acesso remoto via kubectl
Acesso remoto via Rancher CLI
Gerenciar Autenticação no Rancher
O Rancher possui um recurso de autenticação centralizada de usuário, permitindo acesso a
qualquer um dos seus clusters Kubernetes. Por padrão o Rancher realiza a autenticação
local, sendo possível utilizar outros servidores de autenticação, como por exemplo LDAP,
ActiveDiretory, Keycloak, entre outros.
159
160
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.1: Lista de provedores de autenticação no Rancher
Por padrão o Rancher utiliza a autenticação local, até que você configure um servidor
de autenticação externa.
Lab 4.1- Gerenciar autenticação Local e autorização no Rancher
Neste laboratório vamos aprender como adicionar um usuário local no Rancher, e configurar
sua autorização em um cluster Kubernetes.
Autenticação
Uma vez logado no painel do Rancher, selecione User & Authentication em CONFIGURATION.
161
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.2: Gerenciar autenticação Local no Rancher - ETAPA 1
Ao lado esquerdo da tela, selecione a opção Users e em seguida o botão Create.
Fig. 4.3: Gerenciar autenticação Local no Rancher - ETAPA 2
Preencha as seguintess informações para o novo usuário:
•
•
•
•
•
Username: aluno
Display Name: Aluno Rancher
Description: Conta local do usuário Aluno
New Password: 4linux
Confirm Password: 4linux
162
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.4: Gerenciar autenticação Local no Rancher - ETAPA 3
Logo abaixo na parte de Global Permissions selecione a opção User-Base e depois clique
no botão Create.
Fig. 4.5: Gerenciar autenticação Local no Rancher - ETAPA 4
Verifique se o usuário aluno foi adicionado como uma conta local no Rancher.
163
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.6: Gerenciar autenticação Local no Rancher - ETAPA 5
Autorização
Para definir as permissões de acesso do novo usuário no cluster, antes é preciso selecionar o
cluster1-gke.
Fig. 4.7: Gerenciar autorização no Rancher - ETAPA 1
Ao lado esquerdo procure RBAC e clique em Cluster Members.
164
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.8: Gerenciar autorização no Rancher - ETAPA 2
Clique no botão Add para adicionar um novo usuário como membro do cluster.
Fig. 4.9: Gerenciar autorização no Rancher - ETAPA 3
Na caixa Select Member digite aluno e depois selecione o Aluno Rancher.
165
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.10: Gerenciar autorização no Rancher - ETAPA 4
Na parte de Cluster Permissions selecione Member e depois clique no botão Create.
Fig. 4.11: Gerenciar autorização no Rancher - ETAPA 5
Verifique se o Aluno Rancher aparece como um novo membro de nosso cluster.
166
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.12: Gerenciar autorização no Rancher - ETAPA 6
Testando login de usuário local
Para testar se o usuário aluno tem permissão em nosso cluster, realiza o Log Out do usuário
admin.
Fig. 4.13: Testando login de usuário local - ETAPA 1
Na tela de login informe aluno e a senha padrão 4linux.
167
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.14: Testando login de usuário local - ETAPA 2
Uma vez logado no painel do Rancher, selecione em EXPLORE CLUSTER o cluster cluster1-gke.
Fig. 4.15: Testando login de usuário local - ETAPA 3
Como resultado final o novo usuário aluno agora tem acesso aos recursos do cluster cluster1gke.
168
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.16: Testando login de usuário local - ETAPA 4
Lab 4.2 - Gerenciar autenticação LDAP e autorização no Rancher
Neste laboratório vamos aprender como conectar a uma base de usuários em um servidor
LDAP, e configurar autorização em um cluster Kubernetes.
Autenticação LDAP
Para começar faça Log Out da conta do usuário aluno e Login com a conta do usuário admin.
Fig. 4.17: Gerenciar autenticação LDAP no Rancher - ETAPA 1
169
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Em seguida selecione em CONFIGURATION a opção Users & Authentication.
Fig. 4.18: Gerenciar autenticação LDAP no Rancher - ETAPA 2
Para configurar uma autenticação externa clique em Auth Provider ao lado esquerdo da tela.
Fig. 4.19: Gerenciar autenticação LDAP no Rancher - ETAPA 3
Na lista de Authentication Providers selecione OpenLDAP.
170
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.20: Gerenciar autenticação LDAP no Rancher - ETAPA 4
Digite na caixa Hostname/IP, o ip do serviço loadbalancer do openldap e na caixa Port
digite o valor 389.
Fig. 4.21: Gerenciar autenticação LDAP no Rancher - ETAPA 5
Em seguida informe os seguintes valores para configuração do servidor openldap:
•
•
•
•
•
Service Account Distinguished Name: cn=admin,dc=example,dc=org
Service Account Password: Cole aqui o valor do secre LDAP_ADMIN_PASSWORD
User Search Base: ou=Users,dc=example,dc=org
Group Search Base: ou=Groups,dc=example,dc=org
Object Class: posixGroup
171
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.22: Gerenciar autenticação LDAP no Rancher - ETAPA 6
Não esqueça de adicionar na caixa Group Member Mapping Attribute o valor memberUid.
Fig. 4.23: Gerenciar autenticação LDAP no Rancher - ETAPA 7
Para testar autenticação digite admin na caixa Username e 4linux na caixa Password.
Clique no botão Enable para finalizar a configuração.
172
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.24: Gerenciar autenticação LDAP no Rancher - ETAPA 8
Para selecionar quais usuários da base LDAP poderão logar, vamos selecionar a opção** Allow
members of clusters and projects, plus authorized users & groups**.
Fig. 4.25: Gerenciar autenticação LDAP no Rancher - ETAPA 9
Ao lado direito da tela digite analista na caixa Add Member e selecione Analista OpenLDAP User.
173
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.26: Gerenciar autenticação LDAP no Rancher - ETAPA 10
Repita o mesmo passo agora com usuário developer.
Fig. 4.27: Gerenciar autenticação LDAP no Rancher - ETAPA 11
Após adicionar os usuários da base LDAPl clique no botão Save.
174
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.28: Gerenciar autenticação LDAP no Rancher - ETAPA 12
Autorização no Cluster
O próximo passo é configurar o acesso ao grupo de usuários.
Selecione a opção Groups ao lado esquerdo da tela.
Fig. 4.29: Gerenciar autorização no Rancher - ETAPA 1
175
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Para definir acesso a grupo de usuários clique no botão Assign Global Roles.
Fig. 4.30: Gerenciar autorização no Rancher - ETAPA 2
Na caixa Select Member digite devops e selecione o grupo DevOps OpenLDAP Group.
Fig. 4.31: Gerenciar autorização no Rancher - ETAPA 3
Em Global Permissions seleciona a permissão User-Base.
176
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.32: Gerenciar autorização no Rancher - ETAPA 4
Role até o final da página e clique no botão Save para concluir essa configuração.
Fig. 4.33: Gerenciar autorização no Rancher - ETAPA 5
Verifique se o grupo devops aparece com a função User Base.
177
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.34: Gerenciar autorização no Rancher - ETAPA 6
Retorne ao cluster cluster1-gke e e selecione a opção Cluster Members e depois no botão
Add.
Fig. 4.35: Gerenciar autorização no Rancher - ETAPA 7
Dígite analista na caixa Select Member e selecione Analista OpenLDAP User.
178
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.36: Gerenciar autorização no Rancher - ETAPA 8
Em Cluster Permissions selecione Member e clique no botão Create.
Fig. 4.37: Gerenciar autorização no Rancher - ETAPA 9
Verifique seu usuário analista da base LDAP aparece com a função Cluster Member.
Repita os mesmos passos adicionando o usuário developer.
179
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.38: Gerenciar autorização no Rancher - ETAPA 10
Testando login de usuário LDAP
Faça Log Out com usuário de admin e login com usuário analista e senha 4linux. É preciso
clicar no botão Log in with OpenLDAP.
Fig. 4.39: Testando login de usuário LDAP - ETAPA 1
Na área do EXPLORE CLUSTER selecione o cluster cluster1-gke.
180
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.40: Testando login de usuário LDAP - ETAPA 2
Para começar a trabalhar com os recursos do cluster é preciso criar um novo projeto e o novo
namespace.
Clique em Projects/Namespaces ao lado esquerdo da tela.
Fig. 4.41: Testando login de usuário LDAP - ETAPA 3
181
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Criando projetos e namespaces
Para começar vamos criar um projeto clique no botão Create Project.
Fig. 4.42: Criando projetos - ETAPA 1
Na caixa Name digite o nome devops e depois clique no botão Create.
Fig. 4.43: Criando projetos - ETAPA 2
Dentro do projeto devops vamos criar o novo namespace, a partir do botão Create Namespace.
182
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.44: Criando namespaces - ETAPA 1
Na caixa Name digite o nome devops e depois clique no botão Create.
Fig. 4.45: Criando namespaces - ETAPA 2
Pronto! Agora você possui um projeto e o namespace dentro do cluster Kubernetes.
183
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.46: Criando namespaces - ETAPA 3
Kubectl
kubectl é um utilitário para gerenciar aplicativos Kubernetes. Ele permite que você crie, altere
e exclua aplicativos Kubernetes e também fornece comandos para gerenciar os componentes
do Kubernetes.
Lab 4.3 - Gerenciar recursos através do Kubectl Shell
Neste laboratório vamos aprender como gerenciar recursos do cluster Kubernetes através do
Kubectl Shell.
Antes de gerenciar recursos do cluster via kubectl, vamos clicar na opção Deployment ao
lado esquerdo da tela.
Fig. 4.47: Gerenciar recursos através do Kubectl Shell - ETAPA 1
184
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Em seguida clique no ícone do Kubectl Shell que fica na parte superior ao lado direito da
tela.
Fig. 4.48: Gerenciar recursos através do Kubectl Shell - ETAPA 2
Verifique um terminal foi aberto na parte inferior da tela, e é nele onde vamos executar os
comandos via kubectl.
Fig. 4.49: Gerenciar recursos através do Kubectl Shell - ETAPA 3
Liste os deployments no cluster através do seguinte comando:
185
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
kubectl get deploy
Resultado esperado:
Fig. 4.50: Gerenciar recursos através do Kubectl Shell - ETAPA 4
É possivel verificar que o usuário analista não possui permissão no namespace default!
Vamos criar um alias para o comando kubectl, deixando como padrão o acesso ao namespace
devops.
alias kubectl='kubectl -n devops'
Tente listar novamente os deployments e veja o resultado:
kubectl get deploy
Fig. 4.51: Gerenciar recursos através do Kubectl Shell - ETAPA 5
Crie um deploy com 2 replicas usando a imagem do nginx e um serviço do ripo NodePort na
porta 80:
186
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
kubectl create deploy nginx --image=nginx --replicas=2
kubectl expose deploy nginx --type=NodePort --port 80 --target-port 80
Resultado esperado:
Fig. 4.52: Gerenciar recursos através do Kubectl Shell - ETAPA 6
Para acessar aplicação em Nginx, clique na porta gerada pelo serviço NodePort, através da
coluna Endpoints.
187
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.53: Gerenciar recursos através do Kubectl Shell - ETAPA 7
Verifique se aplicação Nginx pode ser acessar em uma porta criada pelo serviço NodePort.
Fig. 4.54: Gerenciar recursos através do Kubectl Shell - ETAPA 8
Para fechar o terminal clique no ícone que é um X, ao lado do nome cluster1-gke.
188
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.55: Gerenciar recursos através do Kubectl Shell - ETAPA 9
Lab 4.4 - Acesso externo através do Kubectl
Neste laboratório vamos aprender como instalar e configurar o kubectl em uma máquina
remota, permitindo o gerenciamento de recursos do cluster Kubernetes.
Para começar vamos realizar o download do arquivo Kubeconfig, através do ícone que fica
ao lado da lupa na parte superior da tela.
Fig. 4.56: Configurar acesso externo através do kubectl - ETAPA 1
Feito o download, abra o arquivo em algum editor de texto em sua máquina fisica.
189
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.57: Configurar acesso externo através do kubectl - ETAPA 2
Vamos alterar o arquivo, adicionando abaixo da linha cluster o namespace devops.
190
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.58: Configurar acesso externo através do kubectl - ETAPA 3
Não esqueça de copiar todo o conteúdo do arquivo!
191
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.59: Configurar acesso externo através do kubectl - ETAPA 4
Através da instância custom, abra uma conexão SSH!
Execute os comandos necessários para realizar a instalação da ferramenta kubectl:
curl -LO https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl
Para testar a instalação execute o seguinte comando:
192
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
kubectl version
Resultado esperado:
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"
cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08
T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"}
The connection to the server localhost:8080 was refused - did you specify the right host or
port?
O proximo passo é configurar as credenciais do usuário analista, através da criação da pasta
.kube e o arquivo config.
mkdir .kube
vim .kube/config
Tecle i para entrar no modo INSERT e cole o conteúdo do arquivo kubeconfig, onde você
adicionou o namespace devops.
- name: "rancher-kubernetes"
cluster:
server: "https://34.136.17.221/k8s/clusters/c-kn7gw"
certificate-authority-data: "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJwekNDQ\
VUyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQTdNUnd3R2dZRFZRUUtFeE5rZVc1aGJXbGoKY\
kdsemRHVnVaWEl0YjNKbk1Sc3dHUVlEVlFRREV4SmtlVzVoYldsamJHbHpkR1Z1WlhJdFkyRXdIa\
GNOTWpJdwpNekU1TURBek1UTTVXaGNOTXpJd016RTJNREF6TVRNNVdqQTdNUnd3R2dZRFZRUUtFe\
E5rZVc1aGJXbGpiR2x6CmRHVnVaWEl0YjNKbk1Sc3dHUVlEVlFRREV4SmtlVzVoYldsamJHbHpkR\
1Z1WlhJdFkyRXdXVEFUQmdjcWhrak8KUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVFpK1N4OTdJbkR6T\
WxBUXFpZnpqTmZuV2szNWZ5dk5rZVZkZEdReDAvSApQRzZpdnFjUDliR01jMmNBTzZ6MjV4RXBEW\
TFVcmxkTnhkMEEzZkU1UUtabm8wSXdRREFPQmdOVkhROEJBZjhFCkJBTUNBcVF3RHdZRFZSMFRBU\
UgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVOVBKTzNtSEFxY2ltb3FZeVlrRWgKZ0k0UWhZc3dDZ\
1lJS29aSXpqMEVBd0lEU0FBd1JRSWdObUJsL3FqLzRScnljQnlJSzFwWFlsbExtcVFINmJoagpLe\
U5BeXByT0xyb0NJUURraDNFc0p5N1N5V2xaV3lSaFhNckdEaFVDb0djT2hSb1BXcnVkc1BLeWhRP\
T0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ=="
users:
- name: "rancher-kubernetes"
user:
token: "kubeconfig-u-4k4hxzzv4lmgmhm:
xfx7wt4btf2rcmdbj4bs4hprktk7xbf7w82czw52x8z2ffc4zcgfc6"
contexts:
- name: "rancher-kubernetes"
context:
user: "rancher-kubernetes"
193
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
cluster: "rancher-kubernetes"
namespace: "devops"
current-context: "rancher-kubernetes"
Verifique se o usuário analista consegue listar os recursos do cluster, no namespace devops:
kubectl get all
Resultado esperado:
NAME
pod/nginx-6799fc88d8-6x424
pod/nginx-6799fc88d8-rzbc8
NAME
service/nginx
TYPE
NodePort
NAME
deployment.apps/nginx
READY
1/1
1/1
STATUS
Running
Running
CLUSTER-IP
10.0.3.76
READY
2/2
EXTERNAL-IP
<none>
UP-TO-DATE
2
NAME
replicaset.apps/nginx-6799fc88d8
RESTARTS
0
0
DESIRED
2
PORT(S)
80:31590/TCP
AVAILABLE
2
CURRENT
2
AGE
6m16s
6m16s
AGE
4m45s
AGE
6m17s
READY
2
AGE
6m17s
Para remover o deployment e serviço do Nginx, execute o seguinte comando:
kubectl delete deploy,service nginx
Retorne ao panel do Rancher para verificar se os recursos foram removidos.
194
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Fig. 4.60: Configurar acesso externo através do kubectl - ETAPA 4
Rancher CLI
Rancher CLI é um cliente de linha de comando para gerenciar e implantar aplicativos em um
cluster Rancher. Ele pode ser usado para criar e gerenciar contêineres, aplicativos e serviços,
bem como para realizar outras tarefas administrativas no cluster.
Lab 4.5 - Gerenciar recursos através do Rancher CLI
Neste laboratório vamos aprender como gerenciar recursos do cluster Kubernetes, através do
Rancher CLI em uma máquina externa.
Instalação
Uma vez logado na instância custom, realize a instalação do binário do rancher através dos
seguintes comandos:
wget https://github.com/rancher/cli/releases/download/v2.6.4/rancher-linux-amd64-v2.6.4.tar
.gz
tar zxf rancher-linux-amd64-v2.6.4.tar.gz
sudo cp rancher-v*/rancher /usr/local/bin/
E teste a instlação através do comando
rancher
rancher:
195
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Resultado esperado:
Commands:
apps, [app]
prepended with "helm" can also be accurately
catalog
clusters, [cluster]
context
globaldns
entries
inspect
kubectl
login, [l]
machines, [machine]
multiclusterapps, [multiclusterapp mcapps mcapp]
namespaces, [namespace]
nodes, [node]
projects, [project]
ps
server
settings, [setting]
ssh
up
wait
project, multiClusterApp
token
kubeconfig token
help, [h]
one command
Operations with apps. Uses helm. Flags
described by helm documentation.
Operations with catalogs
Operations on clusters
Operations for the context
Operations on global DNS providers and
View details of resources
Run kubectl commands
Login to a Rancher server
Operations on machines
Operations with multi-cluster apps
Operations on namespaces
Operations on nodes
Operations on projects
Show workloads in a project
Operations for the server
Show settings for the current server
SSH into a node
apply compose config
Wait for resources cluster, app,
Authenticate and generate new
Shows a list of commands or help for
Run 'rancher COMMAND --help' for more information on a command.
Antes de realizar a comunicação com o cluster via binário do rancher, é preciso exportar em
uma variável o endereço do cluster kubernetes:
SERVER=$(grep server .kube/config | awk -F" " '{print $2}' | sed 's/"//g')
Exporte também o token de acesso do usuário analista em uma variável.
export TOKEN=$(grep token .kube/config | awk -F" " '{print $2}' | sed 's/"//g')
Visualize o conteúdo das variáveis através do comando
echo $SERVER ; echo $TOKEN
echo:
196
4. Gerenciar Autenticação e CLI
Caique Araujo / caiquearaujoac@gmail.com
Resultado esperado:
https://104.198.24.156/k8s/clusters/c-t5dxr
kubeconfig-u-4k4hxzzv4lmgmhm:xfx7wt4btf2rcmdbj4bs4hprktk7xbf7w82cz**namespace**
w52x8z2ffc4zcgfc6
Para realizar o login no binário do rancher, execute o comando rancher login, informando a
variável que armazena o endereço do cluster e a variável que armazena o token de acesso:
rancher login $SERVER --token $TOKEN
Texto
Signature Algorithm: ECDSA-SHA256
30:45:02:20:14:80:7c:15:33:ee:04:2f:5a:1e:c1:63:d1:79:
2d:03:3a:3c:e5:2b:15:29:2a:3c:b6:cb:b5:61:28:e9:ba:42:
02:21:00:f8:f7:82:cd:1e:7e:b2:09:c6:5d:d9:a6:a3:a7:cc:
d3:52:12:ec:9c:3e:64:03:9d:a6:92:d6:bc:00:19:17:cb
]
Do you want to continue connecting (yes/no)? yes (ENTER)
Resultado esperado:
INFO[0004] Only 1 project available: devops
INFO[0004] Saving config to /home/suporte/.rancher/cli2.json
Veja se é possivel através do binário rancher, gerenciar recursos no cluster kubernetes.
rancher kubectl -n devops create deploy nginx --image=nginx
rancher kubectl -n devops get all
Resultado esperado:
NAME
pod/nginx-6799fc88d8-j54kc
NAME
READY
1/1
READY
STATUS
Running
UP-TO-DATE
RESTARTS
0
AVAILABLE
AGE
15s
AGE
197
Caique Araujo / caiquearaujoac@gmail.com
deployment.apps/nginx
4. Gerenciar Autenticação e CLI
1/1
1
NAME
replicaset.apps/nginx-6799fc88d8
1
DESIRED
1
CURRENT
1
16s
READY
1
AGE
17s
Para remover o deployment e serviço do Nginx, execute o seguinte comando:
rancher kubectl -n devops delete deploy nginx
Caique Araujo / caiquearaujoac@gmail.com
5
Gerenciar Workloads e Serviços
Competências da Aula
•
•
•
•
•
•
Gerenciar
Gerenciar
Gerenciar
Gerenciar
Gerenciar
Gerenciar
Deploy e Serviços
Ingress
Jobs e Cronjob
Horizontal Pod Autoscaler
Configmaps e Secrets
Ingress com TLS
Workloads
Cargas de trabalho (Workloads) são objetos que definem regras de deploy para pods. Com
base nessas regras, o Kubernetes realiza o deploy e atualiza a carga de trabalho com o estado
atual da aplicação. Existem diversas cargas de trabalho no Kubernetes:
Pods
Os pods são contêineres individuais executados em um cluster do Kubernetes. Um pod contém
um ou mais contêineres, cada um com seu próprio processo de aplicação. Os pods podem
ser implantados em qualquer nó do cluster. Os pods são a menor unidade de implantação
no Kubernetes. Os pods são criados e destruídos conforme necessário. Os pods podem ser
usados para executar qualquer tipo de aplicativo.
198
199
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Os diferentes tipos são:
Deploy
Os Deploys são uma abstração de nível mais alto do que os pods. As implantações definem
um estado desejado para o aplicativo e o Kubernetes garante que o aplicativo sempre atenda
a esse estado desejado. Os deploys podem ser usadas para gerenciar o ciclo de vida de pods
e replicasets.
Os tipos mais populares suportados pelo Kubernetes são:
StatefulSets
StatefulSets são um tipo de deploy que é usado para gerenciar aplicações com estado. StatefulSets mantêm uma identidade persistente para cada pod. StatefulSets garantem que os
pods sejam implantados em uma ordem específica e que cada pod tenha um nome de host
exclusivo, e são frequentemente usados para gerenciar aplicações de banco de dados.
DaemonSets
Um DaemonSet garante que todos (ou alguns) nós executem uma cópia de um pod. À medida
que os nós são adicionados ao cluster, os pods são adicionados a eles. À medida que os nós
são removidos do cluster, esses pods são coletados como lixo. A exclusão de um DaemonSet
limpará os pods que ele criou.
Serviços
Um serviço Kubernetes é uma abstração que define um conjunto lógico de pods e uma política
para acessá-los. Os serviços do Kubernetes podem ser expostos de diferentes maneiras, especificando diferentes tipos na especificação do serviço.
Os diferentes tipos são:
• ClusterIP: Expõe o serviço em um IP interno do cluster. Escolher esse valor torna o
serviço acessível apenas de dentro do cluster. Este é o ServiceType padrão.
• NodePort: Expõe o serviço no IP de cada Node em uma porta estática (a NodePort).
Um serviço ClusterIP, para o qual o serviço NodePort será roteado, é criado automaticamente. Você poderá entrar em contato com o serviço NodePort, de fora do cluster,
solicitando :.
• LoadBalancer: Expõe o serviço externamente usando o balanceador de carga de um
provedor de nuvem. Os serviços NodePort e ClusterIP, para os quais o balanceador de
carga externo encaminhará, são criados automaticamente.
200
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Lab 5.1 - Gerenciar Deploy e Serviços no Rancher
Neste laboratório vamos aprender como gerenciar deploy e serviços no Rancher.
Gerenciar Deploy
Para começar a trabalhar com recursos do cluster, logue com usuário analista da base LDAP.
Fig. 5.1: Gerenciar Deploy no Rancher - ETAPA 1
Em seguida selecione na área EXPLORE CLUSTER o cluster cluster1-gke.
Fig. 5.2: Gerenciar Deploy no Rancher - ETAPA 2
201
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Para gerenciar deploments clique em Deployments ao lado esquerdo da tela e depois no
botão Create.
Fig. 5.3: Gerenciar Deploy no Rancher - ETAPA 3
Vamos criar um deploy coma as seguintes informações:
• Name: webserver
• Replicas: 1
• Container Image: php:7.2-apache
Fig. 5.4: Gerenciar Deploy no Rancher - ETAPA 4
202
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Uma etapa importante na criação do Deploy, é definir um label. Clique em Labels & Annotations ao lado esquerdo da tela e depois no botão Add Label (em Pod Labels).
Fig. 5.5: Gerenciar Deploy no Rancher - ETAPA 5
Digite app caixa Key, e php na caixa Value.
Fig. 5.6: Gerenciar Deploy no Rancher - ETAPA 6
Em seguida vamos definir recursos de utilização de CPU e memória através da opção Resources:
• CPU Reservation: 100
• Memory Reservation: 100
203
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
• CPU Limit: 800
• Memory Limit: 200
Fig. 5.7: Gerenciar Deploy no Rancher - ETAPA 8
Para finalizar a criação do Deploy, clique no botão Create localiza no final da página.
Fig. 5.8: Gerenciar Deploy no Rancher - ETAPA 9
Verifique se o deploy webserver está ativo!
Fig. 5.9: Gerenciar Deploy no Rancher - ETAPA 10
Alterar conteúdo do Pod
Para alterar o conteúdo de um Pod, primeiro vamos acessar-lo a partir do deploy webserver.
204
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.10: Alterar conteúdo do Pod - ETAPA 1
Para alterar o conteúdo de um Pod, clique no ícone com três pontos que aparece ao lado
direito da tela e na selecione a opção Execute Shell.
Fig. 5.11: Alterar conteúdo do Pod - ETAPA 2
Em seguida realize a cópia do arquivo modelo index.html, para o diretório padrão do Apache
/var/www/html:
205
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
cp /usr/share/apache2/default-site/index.html .
Resultado:
Fig. 5.12: Alterar conteúdo do Pod - ETAPA 3
Gerenciar Serviço
Para configurar um novo serviço, clique opção Services e depois clique no botão Create:
Fig. 5.13: Gerenciar Serviço no Rancher - ETAPA 1
206
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.14: Gerenciar Serviço no Rancher - ETAPA 2
Na lista de serviços vamos selecionar NodePort.
Fig. 5.15: Gerenciar Serviço no Rancher - ETAPA 3
Preencha as seguintes informações para o novo serviço:
• Name: webserver
207
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
• Port Name: web-port
• Listening Port: 80
• Target Port: 80
Fig. 5.16: Gerenciar Serviço no Rancher - ETAPA 4
Para terminar vamos associar esse novo serviço ao nosso Deploy.
Clique em Selectors e digite app na caixa Key e php na caixa Value.
Para criar o serviço clique no botão Create.
208
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.17: Gerenciar Serviço no Rancher - ETAPA 5
Para testar o acesso ao serviço, clique no porta do serviço que esta na coluna Target.
Fig. 5.18: Gerenciar Serviço no Rancher - ETAPA 6
Como resultado final temos a página padrão do Apache, sendo acessada pelo IP e porta
gerada pelo serviço NodePort.
209
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.19: Gerenciar Serviço no Rancher - ETAPA 7
Ingress
O recurso Ingress é usado como ponto de entrada em um cluster, podendo rotear o tráfego
para vários serviços com maior flexibilidade. Um Ingress define uma coleção de regras que
permitem que conexões de entrada alcancem os serviços de cluster.
Quando um cliente envia uma solicitação a um serviço, a solicitação é roteada pela entrada
para o serviço de back-end. A entrada pode ser configurada para fornecer aos clientes acesso
externo aos serviços que estão sendo executados no cluster.
Lab 5.2 - Gerenciar Ingress no Rancher
Neste laboratório vamos aprender como gerenciar Ingress no Rancher.
Para iniciar a configuração do Ingress clique na opção Ingresses ao lado esquerdo da tela, e
depois no botão Create.
210
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.20: Gerenciar Ingress no Rancher - ETAPA 1
Fig. 5.21: Gerenciar Ingress no Rancher - ETAPA 2
Digite na caixa Name o nome webserver e em seguida, selecione a opção Default Backend
ao lado esquerdo da tela.
211
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.22: Gerenciar Ingress no Rancher - ETAPA 3
Selecione webserver na caixa Target Service e 80 na caixa Port. Clique no botão Create
para finalizar a configuração do Ingress.
Fig. 5.23: Gerenciar Ingress no Rancher - ETAPA 4
Verifique se o recurso Ingress foi criado no cluster.
212
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.24: Gerenciar Ingress no Rancher - ETAPA 5
Para descobrir o IP de acesso ao Ingress, primeiro clique no nome do mesmo.
Fig. 5.25: Gerenciar Ingress no Rancher - ETAPA 6
Em seguida clique na opção YAML, que esta localizada na parte superior direita da tela.
213
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.26: Gerenciar Ingress no Rancher - ETAPA 7
Role a página até o final e procure a parte de LoadBalancer, para anotar/copiar o IP gerado
para o ingress.
Fig. 5.27: Gerenciar Ingress no Rancher - ETAPA 8
Para realizar acesso ao Ingress a partir de seu navegador, digite:
nome_do_ingress.namespace.ip_do_ingress.sslip.io
Exemplo:
214
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.28: Gerenciar Ingress no Rancher - ETAPA 9
Jobs e CronJobs
Jobs criam um ou mais pods e garantem que um número especificado deles seja encerrado com
êxito. À medida que os pods são bem-sucedidos ou falham, o job rastreia as conclusões bemsucedidas. Quando as conclusões bem-sucedidas de um job atingem o número especificado, o
job em si é concluído. A exclusão de um job limpará os pods que ele criou.
Um CronJob cria um job em um agendamento baseado em tempo. Por exemplo, você pode
criar um CronJob que seja executado todos os dias à meia-noite.
Lab 5.3 - Gerenciar Jobs e CronJobs no Rancher
Neste laboratório vamos aprender como gerenciar Jobs e CronJobs no Rancher.
Prepando os Pods
Vamos começar acessando a área de Deployments. Em seguida clique no ícone que são três
pontinhos para selecionar a opção Edit Config.
215
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.29: Alterar conteúdo dos Pods - ETAPA 1
Altere para 4 o valor da caixar Replicas. Role até o final da página e clique no botão Save.
Fig. 5.30: Alterar conteúdo dos Pods - ETAPA 2
Em seguida vamos editar o deploy webserver.
216
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.31: Alterar conteúdo dos Pods - ETAPA 4
Na lista de Pods vamos clicar nos três pontinhos referente ao primeiro Pod (ordem de cima
para baixo) e selecionar a opção Execute Shell.
Fig. 5.32: Alterar conteúdo dos Pods - ETAPA 5
Vamos criar um arquivo
index.html
echo 'POD1 - APACHE' > index.html
Resultado:
com a frase
POD1 - APACHE.
217
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.33: Alterar conteúdo dos Pods - ETAPA 6
Repita esse procedimento nos demais Pods mudando apenas o valor na frase
echo 'POD2 - APACHE' > index.html
echo 'POD3 - APACHE' > index.html
echo 'POD4 - APACHE' > index.html
POD1 - APACHE.
218
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.34: Alterar conteúdo dos Pods - ETAPA 7
Gerenciar Jobs
Para gerenciar jobs no cluster, selecione a opção de Jobs ao lado esquerdo da tela e depois
clique no botão Create.
Fig. 5.35: Gerenciar Jobs - ETAPA 1
Vamos criar um job coma as seguintes informações:
• Name: loadbalancer-test
• Container Image: radial/busyboxplus
219
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.36: Gerenciar Jobs - ETAPA 2
Role a página e digite as seguintes informações para comando e argumentos:
• Command: /bin/sh
• Arguments: -c ‘n=1; while [ $n -le 5 ]; do wget -q -O http://webserver; let n=n+1;
done’
Fig. 5.37: Gerenciar Jobs - ETAPA 3
Para criar o job clique no botão Create.
220
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.38: Gerenciar Jobs - ETAPA 4
Para verificar se o job executou a tarefa corretamente, clique no nome do job loadbalancertest.
Fig. 5.39: Gerenciar Jobs - ETAPA 5
Em seguida clique nos três pontinhos do Pod que foi gerado e depois na opção View Logs.
221
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.40: Gerenciar Jobs - ETAPA 6
Como resultado final o teste no loadbalancer foi feito com sucesso!
É possível observar que ao acessar o serviço webserver, é feito um balanceamento entre os
quatros pods do deploy webserver.
Fig. 5.41: Gerenciar Jobs - ETAPA 7
Gerenciar CronJobs
Para gerenciar cronjobs no cluster, selecione a opção de CronJobs ao lado esquerdo da tela
e depois clique no botão Create.
222
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.42: Gerenciar CronJobs - ETAPA 1
Fig. 5.43: Gerenciar CronJobs - ETAPA 2
Vamos criar um job coma as seguintes informações:
• Name: cronjob-lb-test
• Schedule: /1 * * *
• Container Image: radial/busyboxplus
223
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.44: Gerenciar CronJobs - ETAPA 3
Role a página e digite as seguintes informações para comando e argumentos:
• Command: /bin/sh
• Arguments: -c ‘n=1; while [ $n -le 5 ]; do wget -q -O http://webserver; let n=n+1;
done’
Fig. 5.45: Gerenciar CronJobs - ETAPA 4
Para criar o cronjob clique no botão Create.
224
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.46: Gerenciar CronJobs - ETAPA 5
Para verificar se o crojob executou a tarefa corretamente, arguarde 1 minuto e clique no
nome do crojob.
Fig. 5.47: Gerenciar CronJobs - ETAPA 6
E depois clique em algum job gerado pelo cronjob.
225
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.48: Gerenciar CronJobs - ETAPA 7
O proximo passo é clicar nos três pontinhos do Pod que foi gerado e depois na opção View
Logs.
Fig. 5.49: Gerenciar CronJobs - ETAPA 8
É possível observar que ao acessar o serviço webserver, é feito um balanceamento entre os
quatros pods do deploy webserver
226
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.50: Gerenciar CronJobs - ETAPA 9
A diferença do Cronjob é que a cada 1 minuto sera feito esse teste de conexão com
o serviço do LoadbLancer.
Removendo Jobs e CronJobs
Para remover o job loadbalancer-test vamos selecioná-lo e depois clicar no botão Delete.
Fig. 5.51: Removendo Jobs - ETAPA 1
Confirme a remoção do job através do botão Delete.
227
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.52: Removendo Jobs - ETAPA 2
Para remover o crojob cronjob-lb-test vamos selecioná-lo e depois clicar no botão Delete.
Fig. 5.53: Removendo CronJobs - ETAPA 1
Confirme a remoção do cronjob através do botão Delete.
228
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.54: Removendo CronJobs - ETAPA 2
Horizontal Pod Autoscaler
Um escalonador automático de pod horizontal dimensiona automaticamente o número de
réplicas de um pod com base na utilização da CPU observada. Ao criar um escalonador
automático de pod horizontal, você deve especificar o seguinte:
•
•
•
•
O
O
O
O
nome do objeto, que deve ser exclusivo dentro do projeto.
nome do objeto que o autoescalador dimensionará.
número mínimo e máximo de réplicas do objeto dimensionado.
destino de utilização da CPU para o objeto dimensionado.
O autoescalador dimensiona o número de réplicas do objeto dimensionado entre o número
mínimo e máximo de réplicas, com base na utilização da CPU observada do objeto dimensionado.
Lab 5.4 - Gerenciar Horizontal Pod Autoscaler no Rancher
Neste laboratório vamos aprender como gerenciar Horizontal Pod Autoscaler no Rancher.
Criando o HPA
Para trabalhar com autoscaling n cluster Kubernetes, selecione a opção HorizontalPodAutoscalers em** Service Discovery** e depois clique no botão Create.
229
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.55: Gerenciar Horizontal Pod Autoscaler - ETAPA 1
Preencha e selecione as seguintes informações para o nosso HPA:
•
•
•
•
Name: webserver
Target Reference: webserver
Minimum Replicas: 1
Maximum Replicas: 10
Fig. 5.56: Gerenciar Horizontal Pod Autoscaler - ETAPA 2
Próximo passo é definir as métricas através da opção Metrics.
230
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.57: Gerenciar Horizontal Pod Autoscaler - ETAPA 3
Selecione as seguintes opções para as métricas do HorizontalPodAutoscaler
•
•
•
•
Source: Resource
Resource Name: CPU
Type: Average Utilization
Quantity: 80
Para finalizar clique no botão Create.
Fig. 5.58: Gerenciar Horizontal Pod Autoscaler - ETAPA 4
231
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Verifique se o HPA foi criado corretamente!
Fig. 5.59: Gerenciar Horizontal Pod Autoscaler - ETAPA 5
Realizar teste de estresse na aplicação
Para testar se o HorizontalPodAutoscaler irá criar réplicas, selecione Deployments e depois o
deploy webserver.
Fig. 5.60: Realizar teste de estresse na aplicação - ETAPA 1
232
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.61: Realizar teste de estresse na aplicação - ETAPA 2
Selecione os três pontinhos do primeiro Pod e depois clique na opção Execute Shell.
Fig. 5.62: Realizar teste de estresse na aplicação - ETAPA 3
Realiza a instalação do pacote stress-ng e em seguida realize o teste de stress:
apt update
apt install stress-ng -y
nohup stress-ng --cpu 8 --matrix 1 --mq 3 -t 1m &
Re3sultado esperado:
233
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.63: Realizar teste de estresse na aplicação - ETAPA 4
Retorne a tela do HorizontalPodAutoscalers e verifique se a quantidade de réplicas agora
está com o valor 10.
Fig. 5.64: Realizar teste de estresse na aplicação - ETAPA 5
E se você acessar a área de Pods, sera possível visualizar a lista dos 10 containers.
234
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.65: Realizar teste de estresse na aplicação - ETAPA 6
ConfigMaps e Secrets
ConfigMap é um tipo de recurso do Kubernetes usado para armazenar informações de configuração. Os ConfigMaps são normalmente usados para armazenar dados de configuração
que não precisam ser criptografados com segurança.
Secret é um tipo de recurso do Kubernetes usado para armazenar informações confidenciais,
como senhas, tokens e certificados. Os secrets são normalmente usados para armazenar
informações confidenciais que precisam ser criptografadas com segurança e armazenadas em
um local central.
Lab 5.5 - Gerenciar ConfigMaps e Secrets no Rancher
Neste laboratório vamos aprender como gerenciar ConfigMaps e Secrets no Rancher.
Gerenciar ConfigMaps
Para trabalhar configmaps no cluster kubernetes, selecione ConfigMaps na área de Storage.
235
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.66: Gerenciar ConfigMaps - ETAPA 1
Em seguida clique no botão Create.
Fig. 5.67: Gerenciar ConfigMaps - ETAPA 2
Preencha as seguintes informações para o nosso novo configmap:
• Name: mysql-configmap
• Key: mysql-user
• Value: suporte
236
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Para criar o configmap clique no botão Create.
Fig. 5.68: Gerenciar ConfigMaps - ETAPA 3
Verifique se o configmap foi criado com sucesso!
Fig. 5.69: Gerenciar ConfigMaps - ETAPA 4
Gerenciar Secrets
Para trabalhar secrets no cluster kubernetes selecione Secrets na área de Storage.
237
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.70: Gerenciar Secrets - ETAPA 1
Em seguida clique no botão Create.
Fig. 5.71: Gerenciar Secrets - ETAPA 2
Na lista de ConfigMaps vamos selecionar a opção Opaque.
238
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.72: Gerenciar Secrets - ETAPA 3
Preencha as seguintes informações para o nosso novo secret:
• Name: mysql-secrets
• Key: mysql_root_password Value: 4linux
• Key: mysql_password Value: 4linux
Para criar o configmap clique no botão Create.
239
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.73: Gerenciar Secrets - ETAPA 4
Verifique se o secret foi criado com sucesso!
Fig. 5.74: Gerenciar Secrets - ETAPA 5
240
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Realizar Deploy com ConfigMaps e Secrets
Para utilizar configmaps e secrets em um Deploy, primeiro selecione a área de Deployments e
crie um novo Deploy:
Fig. 5.75: Realizar Deploy com ConfigMaps e Secrets - ETAPA 1
Fig. 5.76: Realizar Deploy com ConfigMaps e Secrets - ETAPA 2
Preenchas a seguintes informações:
• Name: mysql
• Replicas: 1
• Container Image: mysql:5.6
241
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.77: Realizar Deploy com ConfigMaps e Secrets - ETAPA 3
Role a página até a área de Environment Variables e clique no botão Add Variable.
Fig. 5.78: Realizar Deploy com ConfigMaps e Secrets - ETAPA 4
Selecione na caixa Type a opção ConfigMap Key.
242
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.79: Realizar Deploy com ConfigMaps e Secrets - ETAPA 5
E preencha as seguintes informações:
• Variable Name: MYSQL_USER
• ConfigMap: mysql-configmap
• Key: mysql-user
Fig. 5.80: Realizar Deploy com ConfigMaps e Secrets - ETAPA 6
Clique novamente no botão Add Variable na caixa Type selecione Secret Key.
243
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.81: Realizar Deploy com ConfigMaps e Secrets - ETAPA 7
E preencha as seguintes informações:
• Variable Name: MYSQL_ROOT_PASSWORD
• Secret: mysql-secrets
• Key: mysql_root_password
Fig. 5.82: Realizar Deploy com ConfigMaps e Secrets - ETAPA 8
Clique novamente no botão Add Variable na caixa Type selecione Secret Key.
E preencha as seguintes informações:
• Variable Name: MYSQL_PASSWORD
• Secret: mysql-secrets
• Key: mysql_password
244
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.83: Realizar Deploy com ConfigMaps e Secrets - ETAPA 9
Para finalizar criação do Deploy, role até o final da página e clique no botão Create.
Fig. 5.84: Realizar Deploy com ConfigMaps e Secrets - ETAPA 10
Verifique se o Deploy mysql está ativo.
245
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.85: Realizar Deploy com ConfigMaps e Secrets - ETAPA 11
Acessando a a aplicação
Clique no nome do deploy mysql.
Fig. 5.86: Acessando a aplicação - ETAPA 1
Selecione o ícone com três pontinhos do Pod e depois na opção Execute Shell.
246
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.87: Acessando a aplicação - ETAPA 2
Execute o comando
presentes no Pod:
env
filtrando a palavra mysql e verifique se o configmap e Secret estão
env | grep mysql
Resultado esperado:
Fig. 5.88: Acessando a aplicação - ETAPA 3
Realize o teste de conexão com o Mysql usando o valor do configmap e secret:
247
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
mysql -u suporte -p4linux
Resultado esperado:
Fig. 5.89: Acessando a aplicação - ETAPA 4
Após os testes clique no ícone que é um X ao lado do nome do Pod mysql.
Fig. 5.90: Acessando a aplicação - ETAPA 5
248
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Para terminar vamos remover o Deploy através da opção Delete.
Fig. 5.91: Acessando a aplicação - ETAPA 6
Fig. 5.92: Acessando a aplicação - ETAPA 7
Lab 5.6 - Gerenciar Ingress com TLS
Neste laboratório vamos aprender como gerenciar Ingress com TLS.
Criando chave e certificado
249
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Através da instância custom, abra uma conexão SSH!
Crie chave e certificado através do seguinte comando:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout webserver.key -out webserver.crt \
-subj "/CN=webserver.devops.34.111.128.166.sslip.io/O=Empresa/OU=DevOps"
Troque o IP 34.95.176.140 pelo endereço do LoadBalancer criado para o deploy do
Nginx!
Resultado esperado:
Generating a RSA private key
.+++++
..............................+++++
writing new private key to 'webserver.key'
Visualize e anote o conteúdo da chave e certificado gerados pelo comando
cat webserver.key
cat webserver.crt
Criando Secret com certificado
Para utilizar certificados em secrets, sera preciso criar um novo.
openssl.
250
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.93: Criando Secret com certificado - ETAPA 1
Na lista de tipos de secrets vamos selecionar a opção TLS Certificate.
Fig. 5.94: Criando Secret com certificado - ETAPA 2
Preencha as seguintes informações:
• Name: webserver-cert
• Private Key: Cole o conteúdo do arquivowebserver.key
• Certificate: Cole o conteúdo do arquivowebserver.crt
Clique no botão Create para finalizar a criação do secret.
251
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.95: Criando Secret com certificado - ETAPA 3
Verifique se o secret webserver-cert foi criado.
Fig. 5.96: Criando Secret com certificado - ETAPA 4
Adicionar certificado no Ingress
Para utilizar nosso certificado em um ingress, vamos editar o ingress webserver através do
ícone com três pontinhos e selecionar a opção Edit Config.
252
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.97: Adicionar certificado no Ingress - ETAPA 1
Em seguida clique em Certificates ao lado esquerdo da tela e no botão Add Certificates.
Fig. 5.98: Adicionar certificado no Ingress - ETAPA 2
253
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.99: Adicionar certificado no Ingress - ETAPA 3
Na lista de secrets vamos selecionar webserver-cert.
Fig. 5.100: Adicionar certificado no Ingress - ETAPA 4
E clique no botão Remover para remover a opção de hosts.
254
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.101: Adicionar certificado no Ingress - ETAPA 5
Feitos os ajustes clique no botão Save para atualizar o ingress.
Fig. 5.102: Adicionar certificado no Ingress - ETAPA 6
Vamos testar o certificado abrindo em nova aba o endereço do ingress com https.
Para aceitar o certificado clique no botão Avançado.
255
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.103: Adicionar certificado no Ingress - ETAPA 7
m seguida no link Ir para webserver.devops. . .
Fig. 5.104: Adicionar certificado no Ingress - ETAPA 8
Como nosso Deploy não tem conteúdo ele vai mostrar uma página com a mensagem Forbidden.
256
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.105: Adicionar certificado no Ingress - ETAPA 9
Para resolver isso volte ao painel do Rancher, e execute um shell dentro do Pod webserver.
Fig. 5.106: Adicionar certificado no Ingress - ETAPA 10
Em seguida realize a cópia do arquivo modelo
/var/www/html:
index.html,
cp /usr/share/apache2/default-site/index.html .
para o diretório padrão do Apache
257
5. Gerenciar Workloads e Serviços
Caique Araujo / caiquearaujoac@gmail.com
Fig. 5.107: Adicionar certificado no Ingress - ETAPA 11
Atualize a página do ingress e verifique que nosso site esta sendo acessando através de certificado e agora com conteúdo.
Fig. 5.108: Adicionar certificado no Ingress - ETAPA 12
Caique Araujo / caiquearaujoac@gmail.com
6
Gerenciar Storage
Competências da Aula
•
•
•
•
•
Conceitos sobre Volumes
Gerenciar Volume Local, Bloco e NFS
Introdução ao Longhorn
Gerenciar volume distribuído com Longhorn
Gerenciar Backup e Restore de volumes
Volumes
Volumes são um mecanismo de armazenamento do Kubernetes que permitem que os dados
sejam preservados mesmo quando os pods são recriados ou movidos para outros nós. Eles são
criados e anexados aos pods e podem ser compartilhados por vários pods.
Volume Local
O volume local é o tipo de volume que é alocado em um único disco rígido e não está replicado.
Veja a diferenças do tipos de volume local no Kubernetes:
• emptDir: É um volume de dados temporários que pode ser compartilhado por um pod
e seus descendentes. Ele é limpo automaticamente quando o pod é excluído.
• hostPath: É um método de armazenamento de dados que mapeia um diretório em um
nó para um volume em um pod.
258
259
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Lab 6.1 - Gerenciar Volume Local no Rancher
Neste laboratório vamos aprender como gerenciar volume do tipo emptyDir e hostPath no
Rancher.
Volume local emptyDir
Para criar um novo pod vamos selecionar a opção Pods na área de Workload e depois clique
no botão Create from YAML.
Fig. 6.1: Gerenciar volume emptyDir - ETAPA 1
Selecione e remova o conteúdo exemplo através da tecla Delete.
Fig. 6.2: Gerenciar volume emptyDir - ETAPA 2
260
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Digite ou cole o seguinte exemplo de um Pod que utiliza o volume do tipo emptyDir.
apiVersion: v1
kind: Pod
metadata:
name: pod-com-volume-emptydir
namespace: devops
spec:
containers:
- name: busybox
image: busybox:1.28
command:
- sleep
- "3600"
volumeMounts:
- name: backup-volume
mountPath: /backup
volumes:
- name: backup-volume
emptyDir: {}
Não esqueça de clicar no botão Create para criar o se Pod.
Resultado esperado:
Fig. 6.3: Gerenciar volume emptyDir - ETAPA 3
Como resultado um novo Pod com volume emptyDir foi criado no cluster.
Para gerenciar os dados do Pod clique no nome dele.
261
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.4: Gerenciar volume emptyDir - ETAPA 4
E depois clique no ícone com três pontinhos e na opção Execute Shell.
Fig. 6.5: Gerenciar volume emptyDir - ETAPA 5
Execute comando df
df -Th /backup
Resultado esperado:
-Th /backup
para verificar se a pasta /backup foi montada dentro do Pod.
262
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.6: Gerenciar volume emptyDir - ETAPA 6
Volume local hostPath
Para criar um novo pod vamos selecionar a opção Pods na área de Workload e depois clique
no botão Create from YAML
Fig. 6.7: Gerenciar volume hostPath - ETAPA 1
Selecione e remova o conteúdo exemplo através da tecla Delete, e depois digite ou cole o
seguinte exemplo de um Pod, que utiliza o volume do tipo hostPath.
apiVersion: v1
kind: Pod
metadata:
263
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
name: pod-com-volume-hostpath
namespace: devops
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- name: site
mountPath: /usr/share/nginx/html
volumes:
- name: site
hostPath:
path: /opt/site
type: DirectoryOrCreate
Não esqueça de clicar no botão Create para criar o se Pod.
Resultado esperado:
Fig. 6.8: Gerenciar volume hostPath - ETAPA 2
Como resultado um novo Pod com volume hostPath foi criado no cluster.
Para gerenciar os dados do Pod clique no nome dele.
264
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.9: Gerenciar volume hostPath - ETAPA 3
E depois clique no ícone com três pontinhos e na opção Execute Shell.
Fig. 6.10: Gerenciar volume hostPath - ETAPA 4
Tente conectar na página exemplo do Nginx, através do comando
curl localhost
curl localhost:
265
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.11: Gerenciar volume hostPath - ETAPA 5
É possível observar que o conteúdo da aplicação não pode ser exibido, porque a pasta
/usr/share/nginx/html do container esta mapeando o diretório vazio /opt/site dentro
de um nó do cluster!
Antes de adicionar um conteúdo ao diretório
em que esse Pod esta em execução.
/opt/site,
precisamos descobrir o nome do nó
Anote ou copie o nome do nó na parte superior da tela ao lado de Node.
266
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.12: Gerenciar volume hostPath - ETAPA 6
Vamos alternar para o painel da GCP e acessar via SSH o nó em questão.
Fig. 6.13: Gerenciar volume hostPath - ETAPA 7
Execute os comandos necessários para criar um arquivo index.html e copiá-lo para dentro do
diretório /opt/site.
267
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
echo 'Pod com Volume hostPath' > index.html
sudo cp index.html /opt/site/
sudo ls /opt/site/
Fig. 6.14: Gerenciar volume hostPath - ETAPA 8
Retorne o painel do Rancher e verifique se ao conectar na página exemplo do Nginx, o conteúdo
do arquivo index.html sera exibido corretamente.
curl localhost
Resultado esperado:
Fig. 6.15: Gerenciar volume hostPath - ETAPA 9
268
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Removendo Pods
Para terminar os exercícios com volume local no Rancher, selecione os Pods com volume
emptyDir e hostPath e clique no botão Delete.
Fig. 6.16: Removendo Pods - ETAPA 1
Confirma a remoção dos Pods através do botão Delete.
Fig. 6.17: Removendo Pods - ETAPA 2
Volume em bloco e Distribuído
O volume em bloco é o tipo de volume que é replicado em vários discos rígidos e está conectado
a um único computador. Um exemplo é o uso do Google Persistent Disk.
269
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
O volume distribuído é o tipo de volume que é replicado em vários discos rígidos e está
localizado em vários computadores. Um exemplo é uso de NFS.
Storage Classes
As classes de armazenamento Kubernetes permitem que um administrador crie e gerencie
políticas de armazenamento detalhadas. Essas políticas podem ser usadas por desenvolvedores
para vincular volumes persistentes a seus pods. As classes de armazenamento são usadas pelos
componentes kubelet e gerenciador de controlador.
As classes de armazenamento podem ser usadas para vincular volumes persistentes a pods
e gerenciar o armazenamento subjacente. As classes de armazenamento são usadas pelos
componentes kubelet e gerenciador de controlador. As classes de armazenamento permitem
que os administradores criem e gerenciem políticas de armazenamento refinadas.
Persistent Volume
Um Volume Persistente (PV) do Kubernetes é uma parte do armazenamento no cluster que
foi provisionado por um administrador ou provisionado dinamicamente usando StorageClasses.
Um PV é “anexado” a um Pod em execução e existe enquanto esse Pod existir.
Persistent Volume Claim
Um Volume Persistente Clain (PVC) no Kubernetes é uma reivindicação em um volume persistente. É essencialmente uma delegação de responsabilidade de um determinado volume de
uma entidade para outra, permitindo uma definição abstrata do que é exigido do volume.
Lab 6.2 - Gerenciar Volume em Bloco no Rancher
Neste laboratório vamos aprender como gerenciar volume em bloco no Rancher.
Visualizar StorageClasses no Cluster
Antes de interagir com volumes persistentes, vamos selecionar a opção StorageClasses na área
de Storage.
270
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.18: Visualizar StorageClasses no Cluster - ETAPA 1
Na lista será exibido os seguintes StorageClasses:
• standard: É o StorageClass padrão criar volume em bloco através de um disco na GCP.
• nfs-client: StorageClas para criar volume distribuído de um servidor NFS.
• Longhorn: StorageClas para criar volume em bloco e distribuído distribuído através da
aplicação longhorn
Fig. 6.19: Visualizar StorageClasses no Cluster - ETAPA 2
Gerenciar Volume em bloco
Para criar um novo volume persistente, selecione a opção PersistentVolumeClaim ao lado
esquerdo da tela e depois clique no botão Create.
271
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.20: Gerenciar Volume em bloco - ETAPA 1
Preencha as seguintes informações para o novo volume:
•
•
•
•
Name: disk-gcp
Source: Use a Storage Class to provision a new Persistent Volume
Storage Class: standard
Request Storage: 1
Fig. 6.21: Gerenciar Volume em bloco - ETAPA 2
Em seguida vamos editar as configurações de acesso ao volume, através da opção Customize.
272
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Para um volume do tipo bloco, selecione Single Node Read-Write, onde somente um nó
pode ler e descrever por vez no volume.
Não esqueça de clicar no botão Create.
Fig. 6.22: Gerenciar Volume em bloco - ETAPA 3
Verifique que um novo PV e PVC de nome disk-gcp gcp foram criados através do StorageClass
standard.
Fig. 6.23: Gerenciar Volume em bloco - ETAPA 4
273
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.24: Gerenciar Volume em bloco - ETAPA 5
Executar Deploy com Volume em bloco
Para trabalhar com volumes persistentes em uma aplicação no cluster, é preciso criar ou
selecionar um Pod ou Deploy.
Fig. 6.25: Executar Deploy com Volume em bloco - ETAPA 1
Vamos selecionar o deploy webserver e através do ícone que são três pontinhos, selecione a
opção Edit Config.
274
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.26: Executar Deploy com Volume em bloco - ETAPA 2
Para gerenciar volumes precisamos clicar na opção Storage, que fica ao lado esquerdo da tela.
Fig. 6.27: Executar Deploy com Volume em bloco - ETAPA 3
Para adicionar um novo volume ao deploy, clique na opção Add Volume e na lista selecione
Persistent Volume Claim.
275
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.28: Executar Deploy com Volume em bloco - ETAPA 4
Selecione o volume disk-gcp na caixa Persistent Volume Claim.
Fig. 6.29: Executar Deploy com Volume em bloco - ETAPA 5
Digite o caminho /var/www/html na caixa Mount Point e depois no botão Save para atualizar
o Deploy.
276
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.30: Executar Deploy com Volume em bloco - ETAPA 6
Para verificar se um novo disco foi criado na GCP, alterne para o seu painel e clique em
Compute Engine -> Discos.
Fig. 6.31: Executar Deploy com Volume em bloco - ETAPA 7
Verifique que o novo disco permanente padrão de 1Gb foi criado dentro da GCP.
277
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.32: Executar Deploy com Volume em bloco - ETAPA 8
Retorne ao painel do Rancher para selecionar o deploy webserver e executar um shell em seu
Pod.
Fig. 6.33: Executar Deploy com Volume em bloco - ETAPA 9
Em seguida vamos executar os comandos necessários para realizar o download de um site
exemplo, que ser armazenado na pasta /var/www/html.
apt update
apt install git -y
278
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
rm -rf lost+found/
git clone https://github.com/4linux/site.git .
Resultado esperado:
Fig. 6.34: Executar Deploy com Volume em bloco - ETAPA 10
Para testar o deploy com volume da GCP, vamos acessar o endereço de ingress webserver:
279
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.35: Executar Deploy com Volume em bloco - ETAPA 11
Lab 6.3 - Gerenciar Volume NFS no Rancher
Neste laboratório vamos aprender como gerenciar volume NFS no Rancher.
Gerenciar Volume NFS
Vamos criar um novo volume persistente através da opção PersistentVolumeClaim -> Create.
Fig. 6.36: Gerenciar Volume NFS - ETAPA 1
280
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Preencha as seguintes informações para o novo volume:
•
•
•
•
Name: disk-nfs
Source: Use a Storage Class to provision a new Persistent Volume
Storage Class: nfs-client
Request Storage: 1
Fig. 6.37: Gerenciar Volume NFS - ETAPA 2
Em seguida vamos editar as configurações de acesso ao volume, através da opção Customize.
Para um volume do tipo nfs, selecione Many Nodes Read-Write, onde varios nód podem
ler e descrever ao mesmo tempo no volume.
Não esqueça de clicar no botão Create.
281
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.38: Gerenciar Volume NFS - ETAPA 3
Verifique que um novo PV e PVC de nome disk-nfs foram criados através do StorageClass nfs-client.
Executar Deploy com Volume NFS
Vamos selecionar o deploy webserver e através do ícone que são três pontinhos, selecione a
opção Edit Config.
Fig. 6.39: Executar Deploy com Volume NFS - ETAPA 1
Para gerenciar volumes precisamos clicar na opção Storage, que fica ao lado esquerdo da tela.
282
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.40: Executar Deploy com Volume NFS - ETAPA 2
E altere o Persistent Volume Claim para volume-nfs.
Fig. 6.41: Executar Deploy com Volume NFS - ETAPA 3
Antes de finalizar atualização do Deploy será necessário adicionar um novo container através
da Opção Add Container na caixa Cointainer.
283
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.42: Executar Deploy com Volume NFS - ETAPA 4
Adicione um novo volume ao novo container, através da opção Add Volume e na lista
selecione Persistent Volume Claim.
Fig. 6.43: Executar Deploy com Volume NFS - ETAPA 5
Adicione e preencha as seguintes informações para esse novo container:
• Volume Name: vol0
• Persistent Volume Claim: volume-nfs
• Mount Point: /data
284
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.44: Executar Deploy com Volume NFS - ETAPA 6
O próximo passo alterar as informações desse novo container através da opçõa General.
Altere para o tipo Init Container e na caixa Container Image digite alpine:3.7.
Fig. 6.45: Executar Deploy com Volume NFS - ETAPA 7
Preencha as seguintes informações na parte de comando e argumentos:
Command
/bin/sh
285
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Arguments
-c 'cd /data && rm -rf ..?* .[!.]* * &&
.com/4linux/site.git /data'
apk add --no-cache git && git clone https://github
Resultado esperado:
Fig. 6.46: Executar Deploy com Volume NFS - ETAPA 8
Role a página e ainda não salve, porque precisamos remover uma configuração duplicada
através do botão Edit as YAML.
Fig. 6.47: Executar Deploy com Volume NFS - ETAPA 9
Procure um bloco que inicia com
_type
e termina com
name: vol0.
286
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.48: Executar Deploy com Volume NFS - ETAPA 10
Selecione esse bloco duplicado e remova através da tecla Delete.
Fig. 6.49: Executar Deploy com Volume NFS - ETAPA 11
Após os ajustes necessários clique no botão Save para atualizar o seu deploy.
287
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.50: Executar Deploy com Volume NFS - ETAPA 12
Uma vez que eu o Deploy foi atualizado clique no nome dele e no Pod.
Fig. 6.51: Executar Deploy com Volume NFS - ETAPA 13
288
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.52: Executar Deploy com Volume NFS - ETAPA 14
Verifique dentro do Pod possui dois contêineres:
• container-1: O init container que baixou o conteúdo do siste exemplo para a pasta
/var/www/html.
• container-0: Container com aplicação apache que ira carregar o conteúdo da pasta
/var/www/html.
Fig. 6.53: Executar Deploy com Volume NFS - ETAPA 15
Para testar o deploy com volume nfs, vamos acessar o endereço de ingress webserver:
289
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.54: Executar Deploy com Volume NFS - ETAPA 16
Visualizar dados no servidor NFS
Para visualizar os dados do volume NFS na instância nfs-server, primeiro alterne para o painel
da GCP e acesse a área de Compute Engine.
Fig. 6.55: Visualizar dados no servidor NFS - ETAPA 1
290
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Procure instância nfs-server e abra uma conexão SSH através da opção Abrir na janela do
navegador.
Fig. 6.56: Visualizar dados no servidor NFS - ETAPA 2
Liste o contewúdo da pasta /nfs e verifique o conteúdo do volume-nfs.
Fig. 6.57: Visualizar dados no servidor NFS - ETAPA 3
Longhorn
Longhorn é um sistema de armazenamento em bloco distribuído para Kubernetes. Quando
combinado com o Rancher, o Longhorn torna fácil, rápido e confiável a implantação de armazenamento de bloco persistente altamente disponível em seu ambiente Kubernetes.
Recursos
• Armazenamento em bloco distribuído de nível empresarial sem ponto único de falha.
• Snapshots incremental do armazenamento em bloco.
291
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
• Backup para armazenamento em NFS ou S3.
• Possui um painel de gerenciamento gráfico
Componentes
O Longhorn Manager Pod é executado em cada nó no cluster Longhorn como um Kubernetes
DaemonSet. Ele é responsável por criar e gerenciar volumes no cluster Kubernetes e lida com
as chamadas de API da interface do usuário ou os plug-ins de volume para Kubernetes.
O Longhorn Manager se comunica com o servidor da API Kubernetes para criar um novo CRD
de volume Longhorn. Em seguida, o Longhorn Manager observa a resposta do servidor de API
e, quando vê que o servidor de API do Kubernetes criou um novo CRD de volume Longhorn,
o Longhorn Manager cria um novo volume.
O Longhorn Engine sempre é executado no mesmo nó que o Pod que usa o volume Longhorn.
Ele replica de forma síncrona o volume em várias réplicas armazenadas em vários nós.
Arquitetura
Fig. 6.58: Arquitetura do Longhorn
Fonte: https://longhorn.io/img/diagrams/architecture/how-longhorn-works.svg
A imagem abaixo há três instâncias com volumes Longhorn, onde cada volume tem um con-
292
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
trolador dedicado, que é chamado de Longhorn Engine e é executado como um processo
Linux.
Cada volume Longhorn tem duas réplicas e cada réplica é um processo Linux. As setas na
figura indicam o fluxo de dados de leitura/gravação entre o volume, a instância do controlador,
as instâncias de réplica e os discos.
Ao criar um Longhorn Engine separado para cada volume, se um controlador falhar, a função
de outros volumes não será afetada.
Lab 6.4 - Gerenciar volume distribuído com Longhorn
Neste laboratório vamos aprender como gerenciar volume distribuído com Longhorn.
Criar volume via Longhorn Dashboard
Sai da conta do usuário analista e logue com o usuário admin.
Em seguida selecione Longhorn ao lado esquerdo da tela e clique no link Manage storage
system via UI.
Fig. 6.59: Criar volume via Longhorn Dashboard - ETAPA 1
Uma vez conectado no painel do Longhorn clique na guia Volume -> Create Volume.
293
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.60: Criar volume via Longhorn Dashboard - ETAPA 2
Preencha as seguintes informações para o novo volume:
•
•
•
•
•
•
•
Name: disk-longhorn
Size: 1
Number of Replicas: 4
Frontend: Block Device
Data Locality: disabled
Access Mode: ReadWriteOnce
Replicas Auto Balance: ignored
Fig. 6.61: Criar volume via Longhorn Dashboard - ETAPA 3
294
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Role até o final da página e clique no botão OK para confirmar o novo volume.
Fig. 6.62: Criar volume via Longhorn Dashboard - ETAPA 4
Uma vez que o novo volume foi criado, vamos criar um PV e PVC através do menu suspenso
e utilizar a opção Create PV/PVC.
Fig. 6.63: Criar volume via Longhorn Dashboard - ETAPA 5
Preencha as seguintes informações:
295
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
• File System: Ext4
• Create PVC: Selecionado
• Namespace: devops
Clique no botão OK para confirmar.
Fig. 6.64: Criar volume via Longhorn Dashboard - ETAPA 6
Verifique que um novo volume foi criado mas o mesmo não está sendo usado por
nenhum Pod!
296
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.65: Criar volume via Longhorn Dashboard - ETAPA 7
Alterne para o painel do Rancher e verifique que um novo PV e PVC de nome disk-longhorn
foram criados através do StorageClass Longhorn.
Fig. 6.66: Criar volume via Longhorn Dashboard - ETAPA 8
297
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.67: Criar volume via Longhorn Dashboard - ETAPA 9
Executar Deploy com Volume do Longhorn
Sai da conta do usuário admin e logue com o usuário analista.
Fig. 6.68: Executar Deploy com Volume do Longhorn - ETAPA 1
Vamos selecionar o deploy webserver e através do ícone que são três pontinhos, selecione a
opção Edit Config.
298
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.69: Executar Deploy com Volume do Longhorn - ETAPA 2
Selecione o volume disk-longhorn na caixa Persistent Volume Claim e salve as alterações
no Deploy.
Fig. 6.70: Executar Deploy com Volume do Longhorn - ETAPA 3
Aguarde a atualização do Deploy webserver!
299
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.71: Executar Deploy com Volume do Longhorn - ETAPA 4
Para testar o deploy com volume do Longhorn, vamos acessar o endereço de ingress webserver:
Fig. 6.72: Executar Deploy com Volume do Longhorn - ETAPA 5
Lab 6.5 - Gerenciar Backup de volumes com Longhorn
Neste laboratório vamos aprender como gerenciar backup de volumes com Longhorn.
Sai da conta do usuário analista e logue com o usuário admin.
300
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.73: Gerenciar Backup de volumes com Longhorn - ETAPA 1
Alterne para o painel do Longhorn para criar um backup.
Selecione o volume disk-longhorn e clique na opção Create Backup.
Fig. 6.74: Gerenciar Backup de volumes com Longhorn - ETAPA 2
Sera preciso adicionar um label através da opção Add Labels for Backup.
301
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.75: Gerenciar Backup de volumes com Longhorn - ETAPA 3
Define app como chave e php como valor. Clique no botão OK para confirmar.
Fig. 6.76: Gerenciar Backup de volumes com Longhorn - ETAPA 4
Para verificar se o um backup foi criado corretamente, clique na guia Backup.
302
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.77: Gerenciar Backup de volumes com Longhorn - ETAPA 5
Fig. 6.78: Gerenciar Backup de volumes com Longhorn - ETAPA 6
Lab 6.6 - Gerenciar Restore de volumes com Longhorn
Neste laboratório vamos aprender como gerenciar restore de volumes com Longhorn.
Trocando volume no Deploy
Vamos selecionar o deploy webserver e através do ícone que são três pontinhos, selecione a
opção Edit Config.
303
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.79: Trocando volume no Deploy - ETAPA 1
Clicque na opção Storage, que fica ao lado esquerdo da tela e altere o Persistent Volume
Claim para volume-nfs.
Não esqueça de clicar no botão Save para atualizar o Deploy!
Fig. 6.80: Trocando volume no Deploy - ETAPA 2
304
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Desanexar e deletar volume no Longhorn
Retorne o painel do Longhorn para desanexar o volume através da opção Detach.
Fig. 6.81: Desanexar e deletar volume no Longhorn - ETAPA 1
Confirme que volume será desanexado através do botão OK.
Fig. 6.82: Desanexar e deletar volume no Longhorn - ETAPA 2
Antes de testar o restore de nosso backup, vamos remover o volume disk-longhorn através do
botão Delete.
305
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.83: Desanexar e deletar volume no Longhorn - ETAPA 3
Confirme que o volume será removido através botão OK.
Fig. 6.84: Desanexar e deletar volume no Longhorn - ETAPA 4
Restaurar backup no Longhorn
Para restaurar backup selecione a guia Backup.
306
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.85: Restaurar backup no Longhorn - ETAPA 1
E depois selecione a opção Restore Latest Backup.
Fig. 6.86: Restaurar backup no Longhorn - ETAPA 2
Ao restaurar o backup selcione na caixa Access Mode a opção ReadWriteOnce.
Para finalizar clique no botao OK.
307
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.87: Restaurar backup no Longhorn - ETAPA 3
Retorne a guia Volume e crie um PV e PVC através da opção Create PV/PVC.
Fig. 6.88: Restaurar backup no Longhorn - ETAPA 4
Preencha as seguintes informações:
• File System: Ext4
• Create PVC: Selecionado
• Namespace: devops
308
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Clique no botão OK para confirmar.
Fig. 6.89: Restaurar backup no Longhorn - ETAPA 5
Verifique se o volume disk-longhorn foi restaura com sucesso!
Fig. 6.90: Restaurar backup no Longhorn - ETAPA 6
309
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Testar volume restaurado
Alterne para o painel do Rancher e acesse a área de Deployments e clique no botão Create.
Fig. 6.91: Testar volume restaurado - ETAPA 1
Crie um deploy com as seguintes informações:
• Name: webserver2
• Replicas: 1
• Container Image: php:7.2-apache
Fig. 6.92: Testar volume restaurado - ETAPA 2
310
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Em Labels & Annotations vamos definir o seguinte Pod Labels:
• Key: app
• Value: site
Fig. 6.93: Testar volume restaurado - ETAPA 3
Clique na opção Storage e selecione o volume disk-longhorn na caixa Persistent Volume
Claim.
Digite o caminho
/var/www/html
na caixa Mount Point e depois no botão Create.
Fig. 6.94: Testar volume restaurado - ETAPA 4
Antes de acessar aplicação com volume restaurado crie um novo serviço.
311
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.95: Testar volume restaurado - ETAPA 5
Selecione o tipo NodePort e preencha as seguintes informações:
•
•
•
•
Name: webserver2
Port Name: webserver2-port
Listening Port: 80
Target Port: 80
Fig. 6.96: Testar volume restaurado - ETAPA 6
Em Selectors vamos definir o seguinte:
• Key: app
• Value: site
312
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Para finalizar clique botão Create.
Fig. 6.97: Testar volume restaurado - ETAPA 7
Uma vez que o serviço webserver2 foi criado, clique em seu endereço através da coluna Target.
Fig. 6.98: Testar volume restaurado - ETAPA 8
Como resultado final você possui agora mais uma aplicação web, que está usando o volume
restaurado pelo Longhorn.
313
6. Gerenciar Storage
Caique Araujo / caiquearaujoac@gmail.com
Fig. 6.99: Testar volume restaurado - ETAPA 9
Caique Araujo / caiquearaujoac@gmail.com
7
GitOps at Scale com Fleet
Competências da Aula
•
•
•
•
•
•
•
•
Introdução a GitOps com Fleet
Arquitetura e componentes do Fleet
Criar um segundo cluster Kubernetes GKE
Configurar Cluster Groups, cluster e Git Repos
Realizar Deploy do Wordpress Single Cluster com Fleet
Instalar aplicação Helm via Fleet
Realizar Multi cluster com Fleet
Realizar mudanças via Git CLI
GitOps
Gitops é um método para gerenciar infraestrutura e aplicativos usando repositórios git. Com
gitops, todas as alterações na infraestrutura e nos aplicativos são feitas usando solicitações
git pull, e todas as alterações são implantadas automaticamente por meio de um pipeline de
entrega contínua.
GitOps em escala
É quando usamos um repositório git para gerenciar todos os aspectos de um sistema de grande
escala, desde o código que o executa até a infraestrutura em que ele é executado. A ideia
é que, usando uma única fonte de verdade (o repositório git), seja mais fácil gerenciar as
314
315
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
mudanças e garantir que todos estejam trabalhando na mesma base de código.
Na prática, isso significa que existe um repositório central que contém todo o código e configuração do sistema, e todos que trabalham no sistema possuem um clone desse repositório.
Quando alguém faz uma alteração, ele a confirma em seu repositório local e a envia por push
para o repositório central. Em seguida, um sistema de Integração Contínua/Entrega Contínua
cria e implanta automaticamente o código.
Esta abordagem tem uma série de benefícios, incluindo:
• É mais fácil gerenciar as alterações, pois tudo é rastreado no repositório git.
• É mais fácil garantir que todos estejam trabalhando na mesma base de código, pois há
apenas um repositório central.
• É mais fácil automatizar implantações, pois o sistema de Integração Contínua/Entrega
Contínua pode construir e implantar automaticamente o código.
• É mais fácil reverter as alterações, pois tudo é rastreado no repositório git.
• É mais fácil gerenciar vários ambientes, pois o código e a configuração de cada ambiente
são armazenados em uma ramificação separada no repositório git.
Fleet
Fleet é uma ferramenta para gerenciar implantações em larga escala de contêineres docker.
Ele permite que você defina sua implantação em um repositório git e, em seguida, implanta e
atualiza automaticamente seus contêineres com base nas alterações no repositório.
O usdo do Fleet no Rancher permite gerenciar um grande número de servidores a partir de
uma única interface. Ele foi projetado para ser usado com um repositório git, para que todas
as alterações nos servidores possam ser rastreadas e revertidas, se necessário.
Se você gerencia o código no GitHub, pode usar a integração do GitHub para acionar deploy
automaticamente quando o código é enviado para seu branch master. Se você usar um
repositório de código diferente, poderá usar os webhooks para acionar esses deploy.
O Fleet oferece suporte a implantações em vários clusters, namespaces, regiões e provedores
de nuvem do Kubernetes. As implantações em vários clusters, namespaces e regiões podem ser
acionadas por uma alteração em um único arquivo. Veja abaixo como funciona a arquitetura
do Fleet:
316
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.1: Arquitetura do Fleet
Fonte: https://rancher.com/docs/img/rancher/fleet-architecture.svg
Lab 7.1 - Criar o 2ž Cluster Kubernetes GKE
Neste laboratório vamos aprender como criar um segundo cluster Kubernetes usando o provedor de cloud Google Cloud Platform.
Para começar vamos logar com o usuário admin e selecionar Cluster Management.
317
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.2: Criar o 2ž Cluster Kubernetes GKE - ETAPA 1
Para criar um cluster Google GKE, clique na opção Clusters e depois do botão Create.
Fig. 7.3: Criar o 2ž Cluster Kubernetes GKE - ETAPA 2
Em seguida clique no ícone Google GKE.
318
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.4: Criar o 2ž Cluster Kubernetes GKE - ETAPA 3
Na caixa Cluster Name digite cluster2-gke.
Fig. 7.5: Criar o 2ž Cluster Kubernetes GKE - ETAPA 4
Selecione caixa Cloud Credentials cluster2 e no botão Add New.
319
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.6: Criar o 2ž Cluster Kubernetes GKE - ETAPA 5
Para carregar as credenciais a partir da chave clique no botão Read from File.
Fig. 7.7: Criar o 2ž Cluster Kubernetes GKE - ETAPA 6
Selecione a partir da sua máquina o arquivo de chave cluster2.
320
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.8: Criar o 2ž Cluster Kubernetes GKE - ETAPA 7
Após carregar o arquivo de chave clique no botão Create para continuar.
Fig. 7.9: Criar o 2ž Cluster Kubernetes GKE - ETAPA 8
Em Location Type vamos utilizar a zona us-central1-c. Para continuar clique no botão
Configure Cluster.
321
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.10: Criar o 2ž Cluster Kubernetes GKE - ETAPA 9
Em Cluster Options vamos selecionar na caixa Kubernetes Options, a versão do Kubernetes e na parte de segurança vamos selecionar:
• Network Policy Config
• Network Policy for Nodes
• Project Network Isolation
Fig. 7.11: Criar o 2ž Cluster Kubernetes GKE - ETAPA 10
Em** Cluster Addons** mantenha as opções Horizontal Pod Autoscaling e HTTP Load
Balancing selecionadas.
322
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.12: Criar o 2ž Cluster Kubernetes GKE - ETAPA 11
Em Node Details vamos selecionar:
• Imagem Type: Ubuntu with Docker.
• Machine Type: 2-highmem-2 que contem 2 vCPUs e 16 GB de RAM.
Fig. 7.13: Criar o 2ž Cluster Kubernetes GKE - ETAPA 12
Em Group Details, digite na caixa Name a palavra nodes e na na caixa Initial Node Count
o valor 4.
Para criar o cluster kubernetes, clique no botão Create.
323
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.14: Criar o 2ž Cluster Kubernetes GKE - ETAPA 13
E aguarde o provisionamento de nosso segundo cluster.
Fig. 7.15: Criar o 2ž Cluster Kubernetes GKE - ETAPA 14
Quando status aparecer Active, clique no botão Explore para visualizar os recursos de seu
novo cluster.
324
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.16: Criar o 2ž Cluster Kubernetes GKE - ETAPA 15
Fig. 7.17: Criar o 2ž Cluster Kubernetes GKE - ETAPA 16
Lab 7.2 - Configurar Cluster Groups no Rancher
Neste laboratório vamos aprender como gerenciar clusters na parte de Continuous Delivery
no Rancher.
Criar Cluster Groups
Para trabalhar com a parte de automação e GitOps At Scale no Rancher, clique em Continuous Delivery na área de GLOBAL APPS.
325
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.18: Criar Cluster Groups no Rancher - ETAPA 1
O nosso primeiro passo será criar um grupo de cluster através da opção Cluster Groups e
botão Create.
Fig. 7.19: Criar Cluster Groups no Rancher - ETAPA 2
Defina o nome cluster-gke e clique novamente no botão Create.
326
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.20: Criar Cluster Groups no Rancher - ETAPA 3
E clique no nome do grupo para obter mais informações.
Fig. 7.21: Criar Cluster Groups no Rancher - ETAPA 4
Na lista é possível observar os cluster 1 e 2 contendo quatro nós cada!
327
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.22: Criar Cluster Groups no Rancher - ETAPA 5
Definir label nos Clusters
Para definir labels em cada cluster, clique no ícone com três pontinhos referente ao cluster 1
e selecione a opção Assign to. . .
Fig. 7.23: Definir label nos Clusters - ETAPA 1
Clique no botão Add/Set Label para adicionar um novo label.
328
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.24: Definir label nos Clusters - ETAPA 2
Defina os seguintes valores:
• Key: env
• Value: test
Clique no botão Apply para registrar o Label.
Fig. 7.25: Definir label nos Clusters - ETAPA 3
Vamos repetir o mesmo processo com o cluster 2 clicando no ícone com três pontinhos e
329
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
selecionando a opção Assign to. . .
Fig. 7.26: Definir label nos Clusters - ETAPA 4
Clique no botão Add/Set Label para adicionar um novo label.
Fig. 7.27: Definir label nos Clusters - ETAPA 5
Defina os seguintes valores:
• Key: env
• Value: test
330
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Clique no botão Apply para registrar o Label.
Fig. 7.28: Definir label nos Clusters - ETAPA 6
Para verificar se os clusters possuem agora um Label, clique no nome de cada um.
Fig. 7.29: Definir label nos Clusters - ETAPA 7
Visualize as informações através do título Labels:.
331
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.30: Definir label nos Clusters - ETAPA 8
Fig. 7.31: Definir label nos Clusters - ETAPA 9
Wordpress no Rancher
WordPress é um sistema de gerenciamento de conteúdo (CMS) baseado em PHP e MySQL
que geralmente é usado para executar um blog ou um site. Ele pode ser usado em um servidor
web que esteja executando Apache, Nginx ou qualquer outro software de servidor web.
O WordPress também está disponível como uma plataforma auto-hospedada, o que significa
que você pode instalá-lo em seu próprio servidor web.
Para provisionar o Wordpress no Rancher, vamos precisar:
• Executar deploy de Backend armazenamento em bloco distribuído (MySQL)
• Executar deploy de Frontend com NFS (Wordpress)
332
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Lab 7.3 - Realizar Deploy Single Cluster com Fleet
Neste laboratório vamos aprender como provisionar a aplicação Wordpress através do processo
de Continuous Delivery no Rancher.
Visualizar repositório single-cluster no GitHub
Para começar vamos acessar o repositório fleet-rancher no Github da 4linux.
Selecione a pasta single-cluster que possui os arquivos necessários para provisionar a aplicação
Wordpress (banco + servidor web) em um cluster Kubernetes.
Fig. 7.32: Visualizar repositório single-cluster no GitHub - ETAPA 1
Cada pasta contem manifestos para implementar os recursos que o Wordpress ira utilizar no
cluster Kubernetes.
333
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.33: Visualizar repositório single-cluster no GitHub - ETAPA 2
O arquivo fleet.yaml define em qual namespace o Wordpress sera provisionado no cluster.
Fig. 7.34: Visualizar repositório single-cluster no GitHub - ETAPA 3
Realizar Deploy Single Cluster com Fleet
Retorne ao painel do Rancher e crie um novo repositório para o Wordpress, através da opção
Git Repos e o botão Create.
334
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.35: Realizar Deploy Single Cluster com Fleet - ETAPA 1
Preencha as seguintes informações para o novo repositório:
• Name: wordpress-gitops
• Repository URL: https://github.com/4linux/fleet-rancher.git
• Branch Name: main
Fig. 7.36: Realizar Deploy Single Cluster com Fleet - ETAPA 2
O proximo passo é clicar nbo botão Add Path para definir em qual caminho no repositório
do Github, vamos encontrar os arquivos necessários para provisionar a aplicação Wordpress.
335
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.37: Realizar Deploy Single Cluster com Fleet - ETAPA 3
Informe single-cluster.
Fig. 7.38: Realizar Deploy Single Cluster com Fleet - ETAPA 4
Role a página e selecione na caixa Target o cluster onde vamos aplicar as configurações do
repositório do Github.
Em nosso exemplo selecione o cluster1-gke.
336
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.39: Realizar Deploy Single Cluster com Fleet - ETAPA 5
Para finalizar a criação do repositório clique no botão Create.
Fig. 7.40: Realizar Deploy Single Cluster com Fleet - ETAPA 6
Ao terminar de aplicar os recursos, verifique se o estado está como Active e clique no nome
do repositório.
337
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.41: Realizar Deploy Single Cluster com Fleet - ETAPA 7
Como resultado final sera exibido quais recursos foram aplicados no cluster cluster1gke.
Fig. 7.42: Realizar Deploy Single Cluster com Fleet - ETAPA 8
Para visualizar os recursos selecione em EXPORE CLUSTER o cluster cluster1-gke.
338
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.43: Realizar Deploy Single Cluster com Fleet - ETAPA 9
É possível observar que uma nova aplicaçõa foi instalada no cluster.
Clique em Installed Apps e procure o nome wordpress-gitops-single-cluster.
Fig. 7.44: Realizar Deploy Single Cluster com Fleet - ETAPA 10
Acessar e configurar aplicação Wordpress
Vamos acessar a aplicação Wordpress através de endereço de serviço.
Clique em Services e depois no endereço de NodePort que foi gerado.
339
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.45: Acessar e configurar aplicação Wordpress - ETAPA 1
Realize a instalação do WordPress a partir do idioma Português do Brasil.
Fig. 7.46: Acessar e configurar aplicação Wordpress - ETAPA 2
E preencha as seguintes informações:
•
•
•
•
Título do site: Wordpress GitOps Rancher
Nome do usuário: admin
Senha: Digite uma senha
O seu e-mail: admin@4labs.example
340
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Clique no botão Instalar Wordpress para continuar.
Fig. 7.47: Acessar e configurar aplicação Wordpress - ETAPA 3
Teste o acesso através do usuário admin e a senha que você definiu na etapa anterior.
Fig. 7.48: Acessar e configurar aplicação Wordpress - ETAPA 4
Para visitar a página selecione na parte superior e ao lado esquerdo da tela, o link Visitar
site.
341
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.49: Acessar e configurar aplicação Wordpress - ETAPA 5
Como resultado final temos uma aplicação instalada no cluster Kubernetes, através do processo
Continuous Delivery do Rancher.
Fig. 7.50: Acessar e configurar aplicação Wordpress - ETAPA 6
Lab 7.4 - Instalar aplicação Helm via Fleet
Neste laboratório vamos aprender como provisionar a aplicação nfs-subdir-external-provisioner
através do processo de Continuous Delivery no Rancher.
342
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Criar Fork do repositório fleet-rancher no GitHub
Acesse novamente o repositório fleet-rancher no Github da 4linux e crie uma cópia para sua
conta através do link Fork.
Fig. 7.51: Criar Fork do repositório fleet-rancher no GitHub - ETAPA 1
Confirme o nome do repositório fleet-rancher e clique no botão Create fork.
Fig. 7.52: Criar Fork do repositório fleet-rancher no GitHub - ETAPA 2
343
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Verifique se o repositório fleet-rancher agora esta presente em sua conta do GitHub.
Fig. 7.53: Criar Fork do repositório fleet-rancher no GitHub - ETAPA 3
Alterar dados do repositório fleet-rancher
Antes de aplicar novas configurações vamos mudar o ip do servidor NFS presente na pasta
helm.
Fig. 7.54: Alterar dados do repositório fleet-rancher - ETAPA 1
344
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
E no arquivo values.yaml.
Fig. 7.55: Alterar dados do repositório fleet-rancher - ETAPA 2
É preciso clique no link Edit this file para realizar a alteração de conteúdo.
Fig. 7.56: Alterar dados do repositório fleet-rancher - ETAPA 3
Mude valor da diretiva server na minha 14, informando o IP público da estância nfs-server.
345
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.57: Alterar dados do repositório fleet-rancher - ETAPA 4
Para copiar o IP público da estância nfs-server, alterne para o painel da GCP e copie na
coluna IP Externo essa informação.
Fig. 7.58: Alterar dados do repositório fleet-rancher - ETAPA 5
Retorne ao painel do Github e clique no botão Commit changes.
346
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.59: Alterar dados do repositório fleet-rancher - ETAPA 6
Instalar aplicação Helm no cluster cluster2-gke
Retorne a área de Continuous Deliveryno Rancher para criar um novo repositório para a
aplicação nfs-subdir-external-provisioner, através da opção Git Repos e o botão Create.
Fig. 7.60: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 1
Preencha as seguintes informações para o novo repositório:
• Name: helm-gitops
• Repository URL: https://github.com//fleet-rancher.git
• Branch Name: main
347
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.61: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 2
O proximo passo é clicar no botão Add Path para definir o camnho helm, sendo a pasta que
armazena os arquivos necessários para provisionar a aplicação nfs-subdir-external-provisioner.
Na caixa Target selecione o cluster2-gke.
Fig. 7.62: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 3
Para finalizar a criação do repositório clique no botão Create.
Fig. 7.63: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 4
348
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Ao terminar de aplicar os recursos, verifique se o estado está como Active e clique no nome
do repositório helm-gitops para visualizar quais recursos foram aplicados no cluster cluster2gke.
Fig. 7.64: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 5
Para visualizar os recursos selecione em EXPORE CLUSTER o cluster cluster2-gke.
Fig. 7.65: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 6
349
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
É possível observar que uma nova aplicação foi instalada no cluster!
Clique em Installed Apps e procure o nome helm-gitops-helm.
Fig. 7.66: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 7
Verifique se o StorageClass nfs-client foi criado no cluster cluster2-gke.
Fig. 7.67: Instalar aplicação Helm no cluster cluster2-gke - ETAPA 8
350
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Lab 7.5 - Realizar Deploy Multi Cluster com Fleet
Neste laboratório vamos aprender como realizar o deploy em Multi Cluster com Fleet.
Visualizar repositório multi-cluster no GitHub
Para começar vamos acessar o repositório fleet-rancher no Github da 4linux.
Selecione a pasta multi-cluster que possui os arquivos necessários para provisionar duas
versões de uma aplicação PHP, que usa como backend um banco MySQL.
Fig. 7.68: Visualizar repositório multi-cluster no GitHub - ETAPA 1
Em seguida clique no arquivo fleet.yaml para conhecer as configurações de cada versão da
aplicação PHP.
351
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.69: Visualizar repositório multi-cluster no GitHub - ETAPA 2
Verifique que no cluster1-gke vamos aplicar a versão 1 com storage NFS e em escala, já no
cluster2-gke vamos aplicar a versão 1 com storage NFS.
Fig. 7.70: Visualizar repositório multi-cluster no GitHub - ETAPA 3
Realizar Deploy Multi Cluster com Fleet
Retorne ao painel do Rancher e crie um novo repositório, através da opção Git Repos e o
botão Create.
352
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.71: Realizar Deploy Multi Cluster com Fleet - ETAPA 1
Preencha as seguintes informações para o novo repositório:
• Name: app-version-gitops
• Repository URL: https://github.com//fleet-rancher.git
• Branch Name: main
Fig. 7.72: Realizar Deploy Multi Cluster com Fleet - ETAPA 2
O próximo passo é clicar no botão Add Path para definir em qual caminho no repositório do
Github, vamos encontrar os arquivos necessários para provisionar a aplicação PHP.
Informe multi-cluster.
353
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.73: Realizar Deploy Multi Cluster com Fleet - ETAPA 3
Role a página e selecione na caixa Target o cluster onde vamos aplicar as configurações do
repositório do Github.
Em nosso exemplo selecione o grupo de clusters cluster-gke.
Fig. 7.74: Realizar Deploy Multi Cluster com Fleet - ETAPA 4
Para finalizar a criação do repositório clique no botão Create.
354
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.75: Realizar Deploy Multi Cluster com Fleet - ETAPA 5
Ao terminar de aplicar os recursos, verifique se o estado está como Active e clique no nome
do repositório app-version-gitops.
Fig. 7.76: Realizar Deploy Multi Cluster com Fleet - ETAPA 6
Como resultado final sera exibido quais recursos foram aplicados nos cluster cluster1gke e cluster2-gke.
355
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.77: Realizar Deploy Multi Cluster com Fleet - ETAPA 7
Acessando aplicações nos clusters
Para visualizar os recursos do primeiro cluster, selecione em EXPORE CLUSTER o cluster
cluster1-gke.
Fig. 7.78: Acessando aplicações nos clusters - ETAPA 1
Vamos acessar a aplicação PHP através de endereço de serviço.
356
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Clique em Services e depois no endereço de NodePort que foi gerado.
Fig. 7.79: Acessando aplicações nos clusters - ETAPA 2
Verifique que a aplicação PHP versão 1 possui o login na cor azul.
Fig. 7.80: Acessando aplicações nos clusters - ETAPA 3
Para visualizar os recursos do segundo cluster, selecione em EXPORE CLUSTER o cluster
cluster2-gke.
357
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.81: Acessando aplicações nos clusters - ETAPA 4
Vamos acessar a aplicação PHP através de endereço de serviço.
Clique em Services e depois no endereço de NodePort que foi gerado.
Fig. 7.82: Acessando aplicações nos clusters - ETAPA 5
Verifique que a aplicação PHP versão 2 possui o login na cor verde.
358
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.83: Acessando aplicações nos clusters - ETAPA 6
Lab 7.6 - Realizar mudanças via Git CLI
Neste laboratório vamos atualizar o conteúdo de um deploy no Kubernetes através do comando git.
Configurar chaves SSH no Github
Através da instância custom, abra uma conexão SSH!
Em seguida, crie as chaves privada e publica do SSH:
ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/suporte/.ssh/id_rsa): <ENTER>
Created directory '/home/suporte/.ssh'.
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Verifique se a chave publica id_rsa.pub foi criada corretamente:
ls .ssh/
cat .ssh/id_rsa.pub
359
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
E copie seu conteúdo:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC0aRnJ8ITsLCmawex4gmwlaw5Qcky6vYWpxx3tdGeMijR2+
JByhShcnnDBOXDhoPXRQTH4daAMEPd5iDXicTUx78ynBKvppfTfo8q0m1vCD6lj9OVqKVYA2G/
OgDbrLy7dmTE38wOayLF8R0ht78O9B7pKtJj8UUWVCfQ/z/QVzzwMlsTYMSRUO4mGcFOA/51
OTvdBjHV5GE4JoVcpGtV/mxt/iYwV9/
FcgMLU2U0HGcX4oFs8ILQwu1CDmGVIrZQPbfKjlp3hvYI2gEi8pOTpLqXzZnV/u+h/Iq2J+9/8
WEYb2W41XxOsjwLSOoZoTsTxXlbxLpj0y5f427+ql/T+IxiRC5dc6KLhMIVv/S+5b/9
w2P6aWcszn72U6jDwvgZTgz/UUQXXG6CpFebCt/
bW7trOkLRjYrAbJdNIBnf82hGv9O0Pds2WGg4f5QDDrOgzvkciC9i4C6lGG7Ur4GbeLOn+
iijvK4BD3baAi6hOZUOKV/Bw5NwNc09oJKiAmG1ulIRScJp4kN9xw4U/OhVNkKbc5cIZQx8lzVG+1
zD4j2UxhnsBLND8hJRGJF48uBNHjJCdGsgnV5aU7tTSQJ1/Qt4VEJSYDI+
dzJMkFO8Yq80whatAJyc1nN5txBDLVXH+ifN8FhZOx/tGG0solh+vSuwn1oKUvLtxMy2lfNUFkQ==
aluno@custom
Acesse sua conta no Github e selecione a opção Settings na parte superior direita da tela.
Fig. 7.84: Configurar chaves SSH no Github - ETAPA 1
Em seguida clique em SSH and GPGP Keys lado esquerdo da tela.
360
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.85: Configurar chaves SSH no Github - ETAPA 2
E depois clique no botão New SSH key.
Fig. 7.86: Configurar chaves SSH no Github - ETAPA 3
Na caixa Title digite chave-curso-rancher e na caixa Key cole o conteúdo do arquivo id_rsa.pub.
Para terminar clique no botão Add SSH key.
361
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.87: Configurar chaves SSH no Github - ETAPA 4
Fig. 7.88: Configurar chaves SSH no Github - ETAPA 5
Atualizar conteúdo do repositório Github
Retorne a instância custom e instale o pacote cliente do Github:
sudo apt install git -y
Os primeiros comandos do git é definir o nome de usuário, e-mail e método de push:
git config --global user.name "Suporte"
git config --global user.email "suporte-devops@example.org"
git config --global push.default simple
362
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Clone o repositório wordpress de sua conta do GitHub:
git clone git@github.com:<SUA_CONTA_NO_GITHUB>/fleet-rancher.git
E acesse o diretório
fleet-rancher/multi-cluster.
cd fleet-rancher/multi-cluster
Edite o arquivo fleet.yaml através do comando
vim.
vim fleet.yaml
E mude as versões das aplicações em cada cluster.
--namespace: gitops
targetCustomizations:
- name: cluster1-gke
clusterSelector:
matchLabels:
env: test
yaml:
overlays:
- version2
- nfs
- scale
- name: cluster2-gke
clusterSelector:
matchLabels:
env: homolog
yaml:
overlays:
- version1
- nfs
Adicione o arquivo atualizado em seu repositório local:
git add fleet.yaml
363
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Confirme os arquivos que você colocou no seu repositório adicionando um comentário:
git commit -m "Atualizando versões das aplicações"
Envie as alterações no seu repositório local para o GitHub através do subcomando push.
git push
Acessando aplicações atualizadas nos clusters
Após as alterações via comando git, é possivel notar que o repositório app-version-gitops
esta sendo atualizado.
Fig. 7.89: Acessando aplicações atualizadas nos clusters - ETAPA 1
Clique em Services no primeiro cluster e depois no endereço de NodePort que foi gerado.
364
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.90: Acessando aplicações atualizadas nos clusters - ETAPA 2
Verifique que a aplicação PHP versão 1 possui o login na cor verde.
Fig. 7.91: Acessando aplicações atualizadas nos clusters - ETAPA 3
Clique em Services no segundo cluster e depois no endereço de NodePort que foi gerado.
365
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.92: Acessando aplicações atualizadas nos clusters - ETAPA 4
Verifique que a aplicação PHP versão 2 possui o login na cor azul.
Fig. 7.93: Acessando aplicações atualizadas nos clusters - ETAPA 5
Removendo aplicações no Fleet
Retorne ao Rancher e na área de Continuous Delivery, selecione todos os repositórios e clique
no botão Delete.
366
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.94: Removendo aplicações no Fleet - ETAPA 1
Confirme a remoção a partir do botão Delete.
Fig. 7.95: Removendo aplicações no Fleet - ETAPA 2
367
7. GitOps at Scale com Fleet
Caique Araujo / caiquearaujoac@gmail.com
Fig. 7.96: Removendo aplicações no Fleet - ETAPA 3
Caique Araujo / caiquearaujoac@gmail.com
8
Gerenciamento de Logs
Competências da Aula
•
•
•
•
•
•
Introdução a pilha ELK (ElasticSearch + Logstash + Kibana)
Instalação do K3S e Helm na VM custom
Deploy da pilha ELK via Helm
Banzai Cloud Logging Operator
Configurar envio de logs do cluster para o Elasticsearch
Visualizar logs de Pods através do Kibana
ELK
ELK significa Elasticsearch, Logstash e Kibana. A pilha ajuda os usuários a obter dados de
qualquer fonte, analisá-los e indexá-los em vários servidores.
O Elasticsearch é um mecanismo de pesquisa orientado a documentos que armazena todos
os seus dados no formato JSON. É sem esquema, o que significa que pode indexar e pesquisar
qualquer tipo de dados sem precisar primeiro estruturar esses dados. O Elasticsearch é distribuído, o que significa que pode ser dimensionado horizontalmente com muita facilidade.
Também é muito rápido e é capaz de pesquisar e filtrar grandes quantidades de dados muito
rapidamente.
O Logstash é uma ferramenta para gerenciar eventos e logs. Ele pode coletar, analisar e
armazenar logs para uso posterior. O Logstash é de código aberto e pode se integrar a uma
368
369
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
ampla variedade de outras ferramentas de código aberto.
O Kibana é uma interface web para Elasticsearch. Ele pode ser usado para pesquisar e
visualizar dados armazenados no Elasticsearch. O Kibana é de código aberto e está disponível
para download gratuito.
K3S
K3s é um servidor de Kubernetes de código aberto projetado para ser executado em ambientes de baixa largura de banda ou de dispositivos de baixo poder. K3s suporta a maioria
das funcionalidades do Kubernetes, incluindo a orquestração de contêineres, implantação de
aplicativos e gerenciamento de cluster. Além disso, K3s é compatível com a maioria dos
aplicativos e ferramentas Kubernetes existentes.
Lab 8.1 - Instalação do K3S e Helm na VM custom
Neste laboratório vamos aprender como instalar o K3S na instância custom na GCP.
Instalação do K3S
Para iniciar a instalação do K3S na instância custom, acesse o painel da GCP e selecione a
opção Abrir uma janela do navegador.
Fig. 8.1: Instalação do K3S na VM custom - ETAPA 1
Em seguida realize a instalação K3Ss através do seguinte comando:
curl -sfL https://get.k3s.io | sh -
370
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Aguarde alguns segundos e liste os nodes através do seguinte comando:
sudo k3s kubectl get nodes
Instalação do Helm
Antes de instalar o Helm, vamos alternar para a conta do usuário root:
sudo su -
Instale o Helm através do comando
snap:
snap install helm --classic
E declare na variável KUBECONFIG o caminho do arquivo
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
Para testar a instalação do Helm execute o comando
helm
Resultado esperado:
helm:
k3s.yaml.
371
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.2: Instalação do Helm na VM custom
Lab 8.2 - Instalação do ElasticSearch e Kibana via Helm
Neste laboratório vamos aprender como instalar o ElasticSearch e Kibana via Helm no
cluster K3S.
Adicionar repositório Elastic
Execute os comandos necessários para adicionar o repositório do ElasticSearch.
helm repo add elastic https://helm.elastic.co
helm repo update
helm repo list
Resultado esperado:
372
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.3: Repositório Elastic adicionado na VM custom
Instalação do ElasticSearch
Vamos baixar o arquivo que possui as os valores necessários para realizar a instalação do
ElasticSearch.
curl -O https://raw.githubusercontent.com/4linux/543/main/elasticsearch/values.yaml
Verifique se o arquivo values.yaml possui os seguintes valores:
cat values.yaml
Resultado esperado:
--antiAffinity: "soft"
esJavaOpts: "-Xmx128m -Xms128m"
resources:
requests:
cpu: "300m"
memory: "1024M"
limits:
cpu: "1500m"
memory: "1024M"
volumeClaimTemplate:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "local-path"
resources:
requests:
storage: "100M"
service:
type: "LoadBalancer"
373
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Para realizar e checar a instalação do ElasticSearch execute os seguintes comandos:
helm install elasticsearch elastic/elasticsearch -f ./values.yaml
helm list
kubectl get pods,service -l app=elasticsearch-master
Resultado esperado:
Fig. 8.4: Instalação do ElasticSearch na VM custom
Realizar instalação do Kibana
Para realizar e checar a instalação do Kibana execute os seguintes comandos:
helm install kibana elastic/kibana --set service.type="LoadBalancer"
helm list
kubectl get pods,service -l app=kibana
Resultado esperado:
Fig. 8.5: Instalação do Kibana na VM custom
374
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Checar instalação do ElasticSearch e Kibana
Para testar instalação do ElasticSearch e Kibana, copie o IP externo da instância custom.
Fig. 8.6: Checar instalação do ElasticSearch e Kibana - ETAPA 1
Verifique se é possível acessar o ElasticSearch digite em seu navegador o IP externo da instância
custom e a porta 9200.
Fig. 8.7: Checar instalação do ElasticSearch e Kibana - ETAPA 2
Para visualizar os indices presentes no ElasticSearch, adicione o caminho /_cat/indices ao final
do endereço.
375
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.8: Checar instalação do ElasticSearch e Kibana - ETAPA 3
Verifique se é possível acessar o Kibana digite em seu navegador o IP externo da instância
custom e a porta 5601.
Fig. 8.9: Checar instalação do ElasticSearch e Kibana - ETAPA 4
Banzai Cloud Logging Operator
O Operador Banzai Cloud Logging é um operador Kubernetes usado para automatizar o
gerenciamento de logs na plataforma Banzai Cloud Pipeline. O Operador de Log lida com a
implantação e o gerenciamento de componentes de log em um ambiente nativo da nuvem.
Ele fornece uma camada de abstração sobre a orquestração de contêiner subjacente (Docker
Compose, Kubernetes e assim por diante) para facilitar a implantação e o gerenciamento do
registro de aplicativos nativos da nuvem.
O Operador de Log pode ser usado para implantar os seguintes componentes de log:
• Fluentd
• Elasticsearch
• Kibana
376
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Flow e ClusterFlow
O Flow (fluxo) define quais logs coletar e filtrar e para qual saída enviar os logs. O Flow é
um recurso com namespace, o que significa que os logs serão coletados apenas do namespace
em que o Flow está implantado.
O ClusterFlow tem escopo no nível do cluster e pode configurar a coleta de logs em todos
os namespaces. Depois que o ClusterFlow seleciona logs de todos os namespaces no cluster,
os logs do cluster serão coletados e registrados no ClusterOutput selecionado.
Lab 8.3 - Instalar Cloud Logging no Rancher
Neste laboratório vamos aprender como instalar o operador de logs no Rancher.
Vamos instalar operador de logs no cluster1-gke através do botão Cluster Tools.
Fig. 8.10: Instalar Cloud Logging no Rancher - ETAPA 1
Em seguida clique no botão Install localizado em Logging.
377
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.11: Instalar Cloud Logging no Rancher - ETAPA 2
Selecione o projeto Default e a opção Customize Helm options before install e clique no
botão Next e novamente Next para continuar.
Fig. 8.12: Instalar Cloud Logging no Rancher - ETAPA 3
378
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.13: Instalar Cloud Logging no Rancher - ETAPA 4
Para iniciar a instalação do pacote clique no botão Install.
Fig. 8.14: Instalar Cloud Logging no Rancher - ETAPA 5
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
379
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.15: Instalar Cloud Logging no Rancher - ETAPA 6
Lab 8.4 - Configurar envio de logs do cluster para o Elasticsearch
Neste laboratório vamos aprender como configurar o envio de logs do cluster para o Elasticsearch.
Configurar Output de Logs do Cluster
Vamos configurar para onde os logs do cluster serão enviados, através da opção ClusterOutputs e depois no botão Create.
Fig. 8.16: Configurar Output de Logs do Cluster - ETAPA 1
E preenche as seguintes informações:
• Name: cluster1-gke-output
380
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
•
•
•
•
•
Output: Elasticsearch
Scheme: http
Host: Informe o IP Público da instância custom
Port: 9200
Index Name: cluster1-gke-output
Fig. 8.17: Configurar Output de Logs do Cluster - ETAPA 2
Role até o final da página e clique no botão Create para criar a saida de logs do cluster.
Fig. 8.18: Configurar Output de Logs do Cluster - ETAPA 3
381
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Configurar Flows de Logs do Cluster
Vamos configurar quais logs coletar e filtrar e para qual saída enviar os logs, através da opção
ClusterFlows e depois no botão Create.
Fig. 8.19: Configurar Flows de Logs do Cluster - ETAPA 1
Defina o nome cluster1-gke-flow e clique em Outputs.
Fig. 8.20: Configurar Flows de Logs do Cluster - ETAPA 2
Selecione na caixa Cluster Outputs a opção cluster1-gke-output e depois no botão Create.
382
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.21: Configurar Flows de Logs do Cluster - ETAPA 3
Lab 8.5 - Configurar envio de logs de aplicações para o Elasticsearch
Neste laboratório vamos aprender como configurar o envio de logs da aplicação webserver
para o Elasticsearch.
Configurar output de logs de aplicações
Vamos configurar para onde os logs da aplicação webserver serão enviados, através da opção
Outputs e depois no botão Create.
Fig. 8.22: Configurar output de logs de aplicações - ETAPA 1
383
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
E preenche as seguintes informações:
•
•
•
•
•
•
•
Namespace: devops
Name: webserver-output
Output: Elasticsearch
Scheme: http
Host: Informe o IP Público da instância custom
Port: 9200
Index Name: webserver-output
Fig. 8.23: Configurar output de logs de aplicações - ETAPA 2
Role até o final da página e clique no botão Create para criar a saida de logs da aplicação
webserver.
384
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.24: Configurar output de logs de aplicações - ETAPA 3
Configurar Flow de Logs de aplicações
Vamos configurar quais logs coletar e filtrar e para qual saída enviar os logs, através da opção
Flows e depois no botão Create.
Fig. 8.25: Configurar Flow de logs de aplicações - ETAPA 1
E preenche as seguintes informações:
• Namespace: devops
• Name: webserver-flow
• Pod Label Key: app
385
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
• Pod Label Value: php
Em seguida clique na opção Outputs.
Fig. 8.26: Configurar Flow de logs de aplicações - ETAPA 2
Selecione na caixa Outputs a opção webserver-output e depois no botão Create.
Fig. 8.27: Configurar Flow de logs de aplicações - ETAPA 3
386
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Lab 8.6 - Indexar logs no Kibana
Neste laboratório vamos aprender como indexar logs do cluster Kubernetes no Kibana.
Gerando logs no cluster
Antes de visualizar logs no Kibana acesse o deploy e pod do webserver.
Fig. 8.28: Gerando logs no cluster - ETAPA 1
Em seguida remova o pod do webserver através da opção Delete.
Fig. 8.29: Gerando logs no cluster - ETAPA 2
387
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.30: Gerando logs no cluster - ETAPA 3
Alterne para lista de serviços e acesse o IP do serviço NodePort do webserver.
Fig. 8.31: Indexar logs no Kibana - ETAPA 4
388
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.32: Indexar logs no Kibana - ETAPA 5
Indexar logs no Kibana
Verifique se é possível visualizar os novos indices presentes no ElasticSearch, digitando em seu
navegador o IP externo da instância custom na porta 9200, e o caminho /_cat/indices ao final
do endereço.
Fig. 8.33: Indexar logs no Kibana - ETAPA 1
Acesse novamente o Kibana digite em seu navegador o IP externo da instância custom e a
porta 5601.
E caixa de pesquisas vamos digitar e selecionar Index Patterns.
389
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.34: Indexar logs no Kibana - ETAPA 2
Para criar uma nova indexção, clique no link Create index pattern.
Fig. 8.35: Indexar logs no Kibana - ETAPA 3
Na caixa Name digite cluster* e selecione na caixa Timestamp field o campo time.
Para finalizar clique no link Create index pattern.
390
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.36: Indexar logs no Kibana - ETAPA 4
Como resultado podemos visualizar os campos de pesquisas para logs do cluster Kubernetes.
Fig. 8.37: Indexar logs no Kibana - ETAPA 5
Novamente acesse a caixa de pesquisas para digitar e selecionar Index Patterns.
391
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.38: Indexar logs no Kibana - ETAPA 6
E novamente clique no link Create index pattern para criar uma nova indexação.
Fig. 8.39: Indexar logs no Kibana - ETAPA 7
Na caixa Name digite webserver* e selecione na caixa Timestamp field o campo time.
Para finalizar clique no link Create index pattern.
392
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.40: Indexar logs no Kibana - ETAPA 8
Como resultado podemos visualizar os campos de pesquisas para logs da aplicação webserver.
Fig. 8.41: Indexar logs no Kibana - ETAPA 9
Lab 8.7 - Visualizar logs de Pods através do Kibana
Neste laboratório vamos aprender como visualizar logs de Pods através do Kibana.
393
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Visualizar logs do Cluster
Para visualizar os logs selecione a opção Discovery ao lado esquerdo da tela.
Fig. 8.42: Visualizar logs no Kibana - ETAPA 1
Para alterar a data de criação dos logs, clique no ícone ao lado de Last 15 minutes.
Fig. 8.43: Visualizar logs no Kibana - ETAPA 2
Faça o teste visualizando o conteúdo de log do cluster:
394
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.44: Visualizar logs no Kibana - ETAPA 3
Fig. 8.45: Visualizar logs no Kibana - ETAPA 4
395
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Visualizar logs da aplicação
Para avisar os logs aplicação no Kibana, vamos selecionar a opção webserver* ao lado esquerdo da tela abaixo de + Add filter.
Fig. 8.46: Visualizar logs da aplicação - ETAPA 1
Faça o teste visualizando o conteúdo de log da aplicação webserver.
396
8. Gerenciamento de Logs
Caique Araujo / caiquearaujoac@gmail.com
Fig. 8.47: Visualizar logs da aplicação - ETAPA 2
Fig. 8.48: Visualizar logs da aplicação - ETAPA 3
Caique Araujo / caiquearaujoac@gmail.com
9
Gerenciar Monitoramento
Competências da Aula
•
•
•
•
•
•
•
•
Introdução ao Prometheus e Grafana
Ativar monitoramento no Rancher
Visualizar métricas no Prometheus
Deploy do Apache Exporter
Configurar Service Monitors
Visualizar e Adicionar Dashboards no Grafana
Configurar e Visualizar Prometheus Rule
Configurar integração entre Prometheus e Slack
Introdução ao Prometheus e Grafana
Prometheus é um sistema de monitoramento e alerta open-source. Ele é feito para coletar,
armazenar e permitir que você visualize métricas em tempo real. Ele pode ser usado para
analisar o desempenho e a estabilidade de um servidor, e também para gerar alertas se houver
problemas.
Grafana é um programa open-source que pode ser usado para criar painéis e dashboards de
métricas. Ele pode ser integrado com Prometheus para fornecer uma interface gráfica para
analisar os dados coletados pelo Prometheus.
397
398
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Lab 9.1 - Ativar monitoramento no Rancher
Neste laboratório vamos aprender como instalar o operador de monitoramento no Rancher.
Vamos instalar operador de monitoramento no cluster2-gke através do botão Cluster Tools.
Fig. 9.1: Ativar monitoramento no Rancher no Rancher - ETAPA 1
Em seguida clique no botão Install localizado em Monitoring.
Fig. 9.2: Ativar monitoramento no Rancher no Rancher - ETAPA 2
Selecione o projeto Default e a opção Customize Helm options before install e clique no
botão Next para continuar.
399
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.3: Ativar monitoramento no Rancher no Rancher - ETAPA 3
Em General vamos apenas selecionar Use Host Network For Prometheus Operator.
Fig. 9.4: Ativar monitoramento no Rancher no Rancher - ETAPA 4
Em Prometheus deixe as opções padrão.
400
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.5: Ativar monitoramento no Rancher no Rancher - ETAPA 5
Em Alerting vamos apenas selecionar Deploy Alertmanager.
Fig. 9.6: Ativar monitoramento no Rancher no Rancher - ETAPA 6
Em Grafana deixe as opções padrão e depois clique em Edit YAML.
401
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.7: Ativar monitoramento no Rancher no Rancher - ETAPA 7
Altere os valores das linhas 8 até 12 conforme o exemplo abaixo e clique no botão Next para
continuar.
Fig. 9.8: Ativar monitoramento no Rancher no Rancher - ETAPA 8
Para iniciar a instalação do pacote clique no botão Install.
402
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.9: Ativar monitoramento no Rancher no Rancher - ETAPA 9
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
Fig. 9.10: Ativar monitoramento no Rancher no Rancher - ETAPA 10
Uma vez que operador de monitoramento foi instalado, clique no novo menu Monitoring ao
lado esquerdo da tela.
403
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.11: Ativar monitoramento no Rancher no Rancher - ETAPA 11
Como resultado agora temos um Dashboard com opções de gerenciamento do Prometheus
e Grafana.
Fig. 9.12: Ativar monitoramento no Rancher no Rancher - ETAPA 12
Lab 9.2 - Visualizar Targets e Service Discovery no Prometheus
Neste laboratório vamos aprender como visualizar Targets e Service Discovery no painel
do Prometheus.
Vamos começar visualizando os alvos de monitoramento do Prometheus, através do link
Prometheus Targets.
404
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.13: Visualizar Targets e Service Discovery no Prometheus - ETAPA 1
Para visualizar os Service Discovery clique no menu Status.
Fig. 9.14: Visualizar Targets e Service Discovery no Prometheus - ETAPA 2
Resultado esperado:
405
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.15: Visualizar Targets e Service Discovery no Prometheus - ETAPA 3
Lab 9.3 - Deploy do Apache Exporter
Neste laboratório vamos aprender como realizar o deploy do Apache Exporter para coletar
métricas de uma aplicação Apache.
O Apache Exporter reúne estatísticas do módulo mod_status do Apache via HTTP
para consumo do Prometheus.
Realizar Deploy do Apache Exporter
Vamos começar criando um novo deploy através da opção Deployments -> Create.
406
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.16: Deploy do Apache Exporter - ETAPA 1
Vamos criar um deploy coma as seguintes informações:
•
•
•
•
Name: apache
Replicas: 1
Container Name: apache
Container Image: ubuntu/apache2
•
Clique em Labels & Annotations ao lado esquerdo da tela e depois no botão Add Label
(em Pod Labels).
Digite app caixa Key, e apache-exporter na caixa Value.
407
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.17: Deploy do Apache Exporter - ETAPA 3
Vamos executar no mesmo Pod o exportar do apache, e será necessário adicionar um novo
container através da Opção Add Container na caixa Cointainer.
Fig. 9.18: Deploy do Apache Exporter - ETAPA 4
Preencha as seguintes informações para o novo container:
• Container Name: apache-exporter
• Container Image: bitnami/apache-exporter
408
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.19: Deploy do Apache Exporter - ETAPA 5
Na área de Ports preencha as seguintes informações:
•
•
•
•
Service Type: Do not create
Name: apache-exporter
Private Container Port: 9117
Protocol: TCP
Fig. 9.20: Deploy do Apache Exporter - ETAPA 6
Feitos os ajustes clique no botão Create para criar um novo deploy.
409
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.21: Deploy do Apache Exporter - ETAPA 7
Clique no deploy apache para visualizar os Pods.
Fig. 9.22: Deploy do Apache Exporter - ETAPA 8
E clique no Pod do apache.
410
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.23: Deploy do Apache Exporter - ETAPA 9
Confirme se o container do apache e do exportador foram criados dentro do Pod!
Fig. 9.24: Deploy do Apache Exporter - ETAPA 10
Criar serviço e acessar aplicação Apache
Para configurar um novo serviço, clique opção Services e depois clique no botão Create:
411
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.25: Criar serviço e acessar aplicação Apache - ETAPA 1
Na lista de serviços vamos selecionar NodePort.
Fig. 9.26: Criar serviço e acessar aplicação Apache - ETAPA 2
Preencha as seguintes informações para o novo serviço:
•
•
•
•
Name: apache
Port Name: apache-port
Listening Port: 80
Target Port: 80
412
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.27: Criar serviço e acessar aplicação Apache - ETAPA 3
Clique em Selectors e digite app na caixa Key e apache-exporter na caixa Value.
Para criar o serviço clique no botão Create.
Fig. 9.28: Criar serviço e acessar aplicação Apache - ETAPA 4
Para testar o acesso ao serviço do Apache, clique no porta do serviço que esta na coluna
Target.
413
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.29: Criar serviço e acessar aplicação Apache - ETAPA 5
Como resultado final temos a página padrão do Apache, sendo acessada pelo IP e porta
gerada pelo serviço NodePort.
Fig. 9.30: Criar serviço e acessar aplicação Apache - ETAPA 6
Criar serviço e visualizar métricas do Apache
Clique novamente no botão Create para criar um serviço para o exportador do apache.
414
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.31: Criar serviço e visualizar métricas do Apache - ETAPA 1
Na lista de serviços vamos selecionar NodePort.
Fig. 9.32: Criar serviço e visualizar métricas do Apache - ETAPA 2
Preencha as seguintes informações para o novo serviço:
•
•
•
•
Name: apache-exporter
Port Name: apache-exporter
Listening Port: 9117
Target Port: 9117
415
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.33: Criar serviço e visualizar métricas do Apache - ETAPA 3
Clique em Selectors e digite app na caixa Key e apache-exporter na caixa Value.
Fig. 9.34: Criar serviço e visualizar métricas do Apache - ETAPA 4
Em em Label & Annotations e digite app na caixa Key e apache-exporter na caixa Value.
416
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.35: Criar serviço e visualizar métricas do Apache - ETAPA 5
Para testar o acesso ao serviço do exportador do Apache, clique no porta do serviço que esta
na coluna Target.
Fig. 9.36: Criar serviço e visualizar métricas do Apache - ETAPA 6
Em seguida clique no link Metrics.
417
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.37: Criar serviço e visualizar métricas do Apache - ETAPA 7
Fig. 9.38: Criar serviço e visualizar métricas do Apache - ETAPA 8
ServiceMonitors e PodMonitors
ServiceMonitors e PodMonitors são pseudo-CRDs que mapeiam a configuração de raspagem
do recurso personalizado do Prometheus. Esses objetos de configuração especificam declarativamente os pontos de extremidade dos quais o Prometheus coletará as métricas.
ServiceMonitor
Quando um ServiceMonitor é criado, o Operador do Prometheus atualiza a configuração
de raspagem do Prometheus para incluir a configuração do ServiceMonitor. Em seguida, o
Prometheus começa a extrair as métricas do endpoint definido no ServiceMonitor.
Quaisquer serviços em seu cluster que correspondam aos rótulos localizados no campo seletor
de ServiceMonitor serão monitorados com base nos pontos de extremidade especificados no
ServiceMonitor. Para obter mais informações sobre quais campos podem ser especificados,
consulte a especificação fornecida pelo Operador Prometheus.
418
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
PodMonitors
Quando um PodMonitor é criado, o Operador do Prometheus atualiza a configuração de raspagem do Prometheus para incluir a configuração do PodMonitor. Em seguida, o Prometheus
começa a extrair as métricas do endpoint definido no PodMonitor.
Quaisquer pods em seu cluster que correspondam aos rótulos localizados no campo seletor
do PodMonitor serão monitorados com base nos podMetricsEndpoints especificados no PodMonitor. Para obter mais informações sobre quais campos podem ser especificados, consulte
a especificação fornecida pelo Operador Prometheus.
Lab 9.4 - Configurar Service Monitors no Rancher
Neste laboratório vamos aprender como configurar um service monitors no Rancher.
Configurar Service Monitors
Para gerenciar monitoramento de pods e serviços clique em Monitors.
Fig. 9.39: Configurar Service Monitors no Rancher - ETAPA 1
Selecione a guia Service Monitors e depois clique no botão Create.
419
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.40: Configurar Service Monitors no Rancher - ETAPA 2
Selecione e limpe o conteúdo modelo atraves da tecla Delete.
Fig. 9.41: Configurar Service Monitors no Rancher - ETAPA 3
Digite ou cole o exemplo apresentado para coletar as métricas do exportador do apache.
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: apache-monitor
namespace: default
spec:
endpoints:
- interval: 15s
path: /metrics
targetPort: apache-exporter
namespaceSelector:
420
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
matchNames:
- default
selector:
matchLabels:
app: apache-exporter
Para criar o Service Monitor clique no botão Create.
Resultado esperado:
Fig. 9.42: Configurar Service Monitors no Rancher - ETAPA 4
Fig. 9.43: Configurar Service Monitors no Rancher - ETAPA 5
Visualizar Service Discovery e Target
Retorne ao dashboard de monitoramento e clique em Configured Targets.
421
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.44: Visualizar Target e Service Discovery - ETAPA 1
E verifique se apache-monitor aparece na lista de targets.
Fig. 9.45: Visualizar Target e Service Discovery - ETAPA 2
Em seguida clique no menu Status e na opção Service Discovery para visualizar o apachemonitor.
422
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.46: Visualizar Target e Service Discovery - ETAPA 3
Fig. 9.47: Visualizar Target e Service Discovery - ETAPA 4
Lab 9.5 - Visualizar métricas no Prometheus
Neste laboratório vamos aprender como visualizar métricas do apache no Prometheus.
Para começar clique no menu Graph.
423
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.48: Visualizar métricas no Prometheus - ETAPA 1
Digite
apache_up
na caixa de pesquisas e clique no botão Execute.
apache_up
Como resultado sera exibido o valor 1 para a métrica apache_up do pod do Apache.
Fig. 9.49: Visualizar métricas no Prometheus - ETAPA 2
Faça um nova pesquisa digitando
Execute.
apache_cpuload
na caixa de pesquisas e clique no botão
424
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
apache_cpuload
Como resultado sera exibido o valor do uso de cpu para a métrica apache_cpuload
do pod do Apache.
Fig. 9.50: Visualizar métricas no Prometheus - ETAPA 3
Através da guia Graph é possível visualizar o gráfico de uso de CPU do Apache.
425
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.51: Visualizar métricas no Prometheus - ETAPA 4
Dashboards do Grafana
Um dashboard é uma coleção de gráficos e outros elementos de visualização que você pode
usar para monitorar um sistema, um aplicativo ou uma API. Você pode criar dashboards no
Grafana para visualizar e compartilhar os dados do Prometheus. Os painéis são úteis para
visualizar rapidamente os dados mais importantes de um sistema ou aplicativo.
Para adicionar novos painéis no Grafana, utilize o repositório publico através do seguinte link:
https://grafana.com/grafana/dashboards/
Lab 9.6 - Visualizar métricas no Dashboards do Grafana
Neste laboratório vamos aprender como visualizar métricas do cluster e da aplicação apache
no Dashboards do Grafana.
Visualizar métricas do Cluster
Retorne ao dashboard de monitoramento e clique em Metrics Dashboards.
426
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.52: Visualizar métricas do Cluster no Grafana - ETAPA 1
Como resultado podemos visualizar o uso de CPU, memoria e disco.
Fig. 9.53: Visualizar métricas do Cluster no Grafana - ETAPA 2
Para visualizar métricas de outros recursos, clique em Dashboards e selecione Manage.
427
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.54: Visualizar métricas do Cluster no Grafana - ETAPA 3
Na lista selecione Node Exporter / Nodes para visualizar métricas dos nós do cluster.
Fig. 9.55: Visualizar métricas do Cluster no Grafana - ETAPA 4
Na caixa instance selecione o IP do nó para visualizar as métricas.
428
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.56: Visualizar métricas do Cluster no Grafana - ETAPA 5
Clique novamente em Dashboards -> Manage e selecione Rancher / Cluster para visualizar
métricas do cluster.
Fig. 9.57: Visualizar métricas do Cluster no Grafana - ETAPA 6
429
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.58: Visualizar métricas do Cluster no Grafana - ETAPA 7
Adicionar Dashboard do Apache o Grafana
Para visualizar as métricas do exportador do Apache, é preciso adicionar um novo dashboard
no grafana com o usuário admin e no momento não sabemos a senha do usuário admin.
Sera preciso visualizar o secret rancher-monitoring-grafana através da opção Installed Apps
e depois clique em rancher-monitoring.
Fig. 9.59: Adicionar Dashboard do Apache o Grafana - ETAPA 1
Na lista clique no secret rancher-monitoring-grafana.
430
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.60: Adicionar Dashboard do Apache o Grafana - ETAPA 2
Procure admin-password e copie a senha através do botão Copy.
Fig. 9.61: Adicionar Dashboard do Apache o Grafana - ETAPA 3
Em seguida retorne ao painel do grafana e clique na opção Sign In.
431
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.62: Adicionar Dashboard do Apache o Grafana - ETAPA 4
E entre com o usuário admin e senha copiada.
Fig. 9.63: Adicionar Dashboard do Apache o Grafana - ETAPA 5
Em seguida clique no ícone que é um sinal + e depois clique em Import.
432
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.64: Adicionar Dashboard do Apache o Grafana - ETAPA 6
Na caixa Import via grafana.com informe o valor 3894 e clique no botão Load.
Fig. 9.65: Adicionar Dashboard do Apache o Grafana - ETAPA 7
Na caixa localhost selecione Prometheus e clique no botão Import.
433
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.66: Adicionar Dashboard do Apache o Grafana - ETAPA 8
Agora é possível visualizar as métricas na nossa aplicação Apache através do grafana!
Fig. 9.67: Adicionar Dashboard do Apache o Grafana - ETAPA 9
434
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Prometheus Rules
As regras do Prometheus são escritas em uma linguagem chamada PromQL (Prometheus
Query Language). As regras são armazenadas em um arquivo chamado rules.rule. Cada regra
tem um nome, um nome de métrica (ou expressão) a ser avaliada e uma expressão de gatilho
(ou limite) que aciona um alerta.
Uma regra tem a seguinte aparência:
alert:httpd
expr:apache_up == 0
for: 1m
labels:
severity: critical
annotations:
description: Apache is down
summary: The Apache server {{$labels.instance }} is down
Prometheus Alert
Os Alertas do Prometheus são usados para notificar os usuários sobre eventos críticos. Um
alerta é acionado quando o valor de uma métrica excede um determinado limite. Os alertas
podem ser enviados para vários destinos, incluindo e-mail, PagerDuty e Slack.
Quando um alerta é acionado, o Prometheus pode enviar uma notificação para o destino
configurado. A notificação inclui informações sobre a métrica que acionou o alerta, bem como
o período de tempo em que a métrica excedeu o limite.
Os alertas do Prometheus são configurados usando regras. As regras são definidas em um
arquivo chamado alerts.rules . Cada regra consiste em uma condição e uma ou mais ações.
A condição é uma expressão PromQL que deve ser avaliada como verdadeira para que o alerta
seja acionado. As ações são as notificações que devem ser enviadas quando a condição for
atendida.
Lab 9.7 - Configurar Prometheus Rules e Alert no Prometheus
Neste laboratório vamos aprender como configurar um Prometheus Rules e Alert no
Prometheus.
Para gerenciar regras no prometheus, clique na opção Prometheus Rules e depois no botão
Create.
435
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.68: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 1
E preencha as seguintes informações:
•
•
•
•
Namespace: cattle-monitoring-system
Name: apache-rule
Group Name: apache
Override Group Interval: 60
Fig. 9.69: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 2
Vamos continuar e criar um novo alerta através do botão Add Alert.
436
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.70: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 3
Crie um nova regra com as seguintes informações:
•
•
•
•
•
•
Alert Name: apache-alert
Wait to fire for: 10
PromQL Expression: apache_up == 0
Severity Label Value: critical
Key: app
Value: apache-exporter
Fig. 9.71: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 4
Ainda em Annotations selecione Summary e digite Apache is down.
Selecione a opção Description e digite The Apache server {{$labels.instance]] is down.
437
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Para terminar clique no botão Create.
Fig. 9.72: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 5
Como resultado temos uma nova regra chamado apache-rule.
Fig. 9.73: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 6
Retorne ao dashboard de monitoramento e clique em Configured Rules.
438
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.74: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 7
Verifique se a nova regra chamada apache-alert foi criada e seu estado esta OK.
Fig. 9.75: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 8
É possivel verificar que o alerta ainda não esta ativo porque o serviço do apache esta
em execução!
439
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.76: Configurar Prometheus Rules e Alert no Prometheus - ETAPA 9
Receivers e Route
As integrações de notificação são configuradas com um Receiver.
Route é a seção do recurso personalizado Alertmanager que controla como os alertas disparados
pelo Prometheus são agrupados e filtrados antes de chegarem ao receptor.
Quando uma rota é alterada, o Operador do Prometheus gera novamente o recurso personalizado Alertmanager para refletir as alterações.
Slack
O Slack é uma ferramenta de comunicação de equipe que fornece serviços de mensagens
com histórico pesquisável, arquivamento e integração com vários serviços de terceiros. Está
disponível como aplicativo da web, aplicativo de desktop (para Windows, macOS e Linux) e
aplicativo móvel (para iOS e Android).
O Slack é um serviço freemium, com planos pagos que oferecem recursos adicionais, como
armazenamento ilimitado de mensagens, recursos e integrações de pesquisa mais avançados e
a capacidade de recuperar e excluir mensagens.
Lab 9.8 - Configurar integração entre Prometheus e Slack
Neste laboratório vamos aprender como configurar a integração entre Prometheus e Slack
para enmvios de alertas.
Criar conta e canal no Slack
Antes de configurar envio de alertas é preciso criar uma conta no Slack:
https://slack.com
440
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
E clique no botão ENTRAR COM O GOOLE.
Fig. 9.77: Criar conta e canal no Slack - ETAPA 1
E confirme através do link Confirm.
441
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.78: Criar conta e canal no Slack - ETAPA 2
O proximo passo é clicar no botão Criar um workspace.
Fig. 9.79: Criar conta e canal no Slack - ETAPA 3
442
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Digite como exemplo CursoRancher4Linux o nome da equipe e clique no botão Próximo.
Fig. 9.80: Criar conta e canal no Slack - ETAPA 4
Em seguida ignore a etapa para encontrar pessoas.
Fig. 9.81: Criar conta e canal no Slack - ETAPA 5
Vamos definir monitoramento para o canal no Slack.
443
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.82: Criar conta e canal no Slack - ETAPA 6
Em seguida ignore a etapa para enviar e-mails.
Fig. 9.83: Criar conta e canal no Slack - ETAPA 7
E clique em Pular etapa.
444
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.84: Criar conta e canal no Slack - ETAPA 8
Para continuar usando o navegador clique no link Agora não, continuar no navegador.
Fig. 9.85: Criar conta e canal no Slack - ETAPA 9
Verifique que agora você tem um novo canal chamado monitoramento dentro do
Slack!
445
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.86: Criar conta e canal no Slack - ETAPA 10
Configurar Webhooks de entrada no Slack
Para gerenciar aplicações no Slack digite o seguinte endereço:
https://sua_conta_no_slack.slack.com/apps
Fig. 9.87: Configurar Webhooks de entrada no Slack - ETAPA 1
E na caixa de pesquisa digite webhook e selecione Webhooks de entrada.
446
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.88: Configurar Webhooks de entrada no Slack - ETAPA 2
Em seguida clique no botão Adicionar ao Slack.
Fig. 9.89: Configurar Webhooks de entrada no Slack - ETAPA 3
Na caixa Postar no canal, vamos selecionar # monitoramento.
447
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.90: Configurar Webhooks de entrada no Slack - ETAPA 4
E depois clique no botão Adicionar integração com Webhooks de entrada.
Fig. 9.91: Configurar Webhooks de entrada no Slack - ETAPA 5
E copie o endereço na caixa URL do webhook.
448
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.92: Configurar Webhooks de entrada no Slack - ETAPA 6
Configurar Receivers
Retorne à página do Rancher para acessar Routers and Receivers e clique no botão Create.
Fig. 9.93: Configurar Receiver no Rancher - ETAPA 1
E selecione Slack e clique no botão Add Slack.
449
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.94: Configurar Receiver no Rancher - ETAPA 2
Fig. 9.95: Configurar Receiver no Rancher - ETAPA 3
Na caixa Webhook URL é preciso colar o link que você copiou na janela do Slack.
Para finalizar clique no botão Create.
450
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.96: Configurar Receiver no Rancher - ETAPA 4
Configurar Route
Para configurar rotas clique na guia Routes.
Fig. 9.97: Configurar Route no Rancher - ETAPA 1
E clique no ícone com três pontinos na linha do root e na opção Edit Config.
451
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.98: Configurar Route no Rancher - ETAPA 2
Mude para slack na caixa Receiver e clique no botão Save para atualizar a rota.
Fig. 9.99: Configurar Route no Rancher - ETAPA 3
Lab 9.9 - Simular falha no serviço do Apache
Neste laboratório vamos aprender como simular falha no serviço do Apache, e assim testar
o alerta do Prometheus.
Retorne a área de deploy e edite a configuração do deploy do apache.
452
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.100: Simular falha no serviço do Apache - ETAPA 1
Mude o valor da caixa Container Image para busybox:1.28.
Aqui o objetivo é simular que a aplicação apache não esta mais disponivel!
Fig. 9.101: Simular falha no serviço do Apache - ETAPA 2
Na caixa Command digite sleep 300 para manter o container do busybox no ar durante 300
segundos.
453
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.102: Simular falha no serviço do Apache - ETAPA 3
Role a página e clique no botão Save para atualizar o Deploy.
Fig. 9.103: Simular falha no serviço do Apache - ETAPA 4
Verifique no painel de alertas do Prometheus o alerta apache-alert mudou seu estatus para
active.
Fig. 9.104: Simular falha no serviço do Apache - ETAPA 5
454
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Verifique no painel do Slack existe uma nova notificação do Alertmanager!
Para acessar o alerta clique no link Mostrar mais.
Fig. 9.105: Simular falha no serviço do Apache - ETAPA 6
Fig. 9.106: Simular falha no serviço do Apache - ETAPA 7
Você será redirecionado para o painel do Alertmanager onde será mostrado as informações do
455
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
alerta.
Fig. 9.107: Simular falha no serviço do Apache - ETAPA 8
Retorne a área de deploy e edite a configuração do deploy do apache, para mudar o valor da
caixa Container Image para ubuntu/apache2.
Fig. 9.108: Simular falha no serviço do Apache - ETAPA 9
Não esqueça de remover o conteúdo da caixa Command
456
9. Gerenciar Monitoramento
Caique Araujo / caiquearaujoac@gmail.com
Fig. 9.109: Simular falha no serviço do Apache - ETAPA 10
Verifique no painel do Slack existe uma nova notificação do Alertmanager!
Fig. 9.110: Simular falha no serviço do Apache - ETAPA 11
Caique Araujo / caiquearaujoac@gmail.com
10
Gerenciar Segurança com Rancher
Competências da Aula
•
•
•
•
•
Gerenciar
Gerenciar
Gerenciar
Gerenciar
Gerenciar
políticas Egress e Ingress para bloquear acesso
políticas a partir de Labels
políticas a partir de portas TCP/UDP
regras de RBAC (Role/RoleBinding)
Auditoria e violações no cluster com OPA Gatekeeper
NetworkPolicies
A política de rede é um recurso nativo do Kubernetes que você pode usar para definir controles
de acesso à rede para seus pods. É uma regra isolada que pode ser anexada a um namespace
ou a um pod específico.
As políticas de rede especificam como os grupos de pods podem se comunicar entre si e
com outros endpoints de rede. Por padrão, os pods não são isolados; eles aceitam tráfego de
qualquer fonte. Os pods ficam isolados com a criação de um objeto (ou objetos) NetworkPolicy
que os seleciona e especifica a política.
O NetworkPolicy trabalha com as seguintes politicas:
• Ingress: Regra de entrada.
• Egress: Regra de saida.
457
458
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Cada politica pode conter uma ou mais regras que corresponde ao tráfego.
Regras
• podSelector: Permite controlar o fluxo de tráfego a partir do Label de um Pod. Exemplo: Apenas o Pod que possui o label app=frontend, consegue comunica-se com o
Pod que possui o label app=backend.
• namespaceSelector: Permite controlar o fluxo de tráfego a partir do Namespace.
Apenas o Pod que possui esta no namespace monitoring, consegue comunica-se com os
Pods do namespace production.
• ipBlock: Permite controlar o fluxo de tráfego a partir do bloco de IP. Apenas as
requisições que estão no bloco de endereço 0.0.0.0/0, conseguem comunica-se de fora
de cluster, e quem esta na rede 172.16.1.0/24 esta bloqueado.
Lab 10.1 - Gerenciar políticas Egress e Ingress para bloquear acesso
Neste laboratório vamos criar uma política de segurança de rede padrão para bloquear o
Ingress e Egress no namespace devops.
O objetivo desse NetworkPolicy é bloquear todo o fluxo de tráfego entre os Pods no namespace
devops.
Testar acesso entre Pods
Para começar vamos lugar com usuário analista da base ao LDAP.
Fig. 10.1: Testar acesso entre Pods - ETAPA 1
Para testar a criação de um novo pod, selecione Pods ao lado esquerdo da tela e depois clique
459
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
no botão Create from YAML.
Fig. 10.2: Testar acesso entre Pods - ETAPA 2
Limpe o conteúdo exemplo e em seguida digite ou copie e cole, o modelo abaixo:
--apiVersion: v1
kind: Pod
metadata:
name: pod-client
namespace: devops
labels:
curso: rancher
spec:
containers:
- name: busyboxplus
image: radial/busyboxplus
imagePullPolicy: IfNotPresent
command:
- sleep
- "3600"
Clique no botão Create para criar o novo Pod.
A função deste manifesto é criar um Pod no namespace devops!
460
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.3: Testar acesso entre Pods - ETAPA 3
Em seguida vamos executar um Shell dentro do pod-client.
Fig. 10.4: Testar acesso entre Pods - ETAPA 4
No terminal vamos testar a comunicação com o serviço webserver, através do comando curl:
curl http://webserver
Resultado esperado:
461
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.5: Testar acesso entre Pods - ETAPA 5
Através do resultado do comando curl, é possível observar que pod-client tem acesso
ao serviço webserver.
Fig. 10.6: Testar acesso entre Pods - ETAPA 6
Gerenciar políticas Egress e Ingress
Uma vez que o teste entre os pods foi concluído, vamos agora configurar regras de Network
Policies para definir controles de acesso à rede entre os recursos do Cluster.
Vamos começar através do da opção NetworkPolicies presente na área de Service Discovery.
462
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.7: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 1
Em seguida clique no botão Create from YAML.
Fig. 10.8: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 2
Vamos utilizar como exemplo alguns modelos prontos de regras de Network Policies, disponível
no repositório 543 do GitHub da 4Linux.
Acesse o link abaixo onde você ira encontrar diversos exemplos:
463
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
https://github.com/4linux/543/tree/main/network-policies
Fig. 10.9: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 3
Selecione e Copie o conteúdo do modelo 1-network-policy-deny-all.yaml.
Fig. 10.10: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 4
Retorne ao painel do Rancher para limpar o contéudo exemplo, e colar o conteúdo do modelo
1-network-policy-deny-all.yaml.
464
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.11: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 5
Não esqueça de clicar no botão Create para criar a regra de Network Policy!
Descrição:
• podSelector: Seleciona o grupo de pods que a política se aplica. Para selecionar todos
os pods em todo o cluster use {}.
• policyTypes: Define a lista de tipos de politicas que pode incluir Ingress, Egress ou
ambos.
• Ingress: Inclui uma lista de regras de entrada permitidas através do campo ingress. Se
o campo não estiver presente, toda as entradas serão bloqueadas.
• Egress: Inclui uma lista de regras de saídas permitidas através do campo egress. Se o
campo não estiver presente, toda as saídas serão bloqueadas.
465
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.12: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 6
Uma vez que a regra que bloqueia todo acesso dentro da namespace devops foi criada, tente
novamente através do pod-client acessar o serviço webserver:
Fig. 10.13: Gerenciar políticas Egress e Ingress para bloquear acesso - ETAPA 7
Observe que a comunicação entre os recursos foi bloqueado!
466
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
LAB 10.2 - Criar políticas para liberar acesso via Labels
Neste laboratório vamos criar 2 políticas de segurança de rede para:
• Liberar o Egress do pod webserver até o pod client
• Liberar o Ingress do pod client até o pod webserver.
liberar acesso Egress
Vamos criar mais uma regra de Network Policy através do botão Create from YAML.
Fig. 10.14: Criar política Egress para liberar acesso via Labels - ETAPA 1
Novamente acesse repositório 543 da 4Linux para copiar o conteúdo do arquivo modelo 2egress-webserver-to-pod-client.yaml.
467
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.15: Criar políticas Egress para liberar acesso via Labels - ETAPA 2
Retorne ao painel do Rancher para limpar o conteúdo exemplo, e colar o conteúdo do modelo
2-egress-webserver-to-pod-client.yaml.
Fig. 10.16: Criar políticas Egress para liberar acesso via Labels - ETAPA 3
Descrição Egress
• podSelector e matchLabels: Seleciona os pods com a label “app=php”.
468
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
• egress, to: Seleciona os pods com a label “curso=rancher”.
liberar acesso Ingress
Vamos criar mais uma regra de Network Policy através do botão Create from YAML.
Fig. 10.17: Criar política Ingress para liberar acesso via Labels - ETAPA 1
Novamente acesse repositório 543 da 4Linux para copiar o conteúdo do arquivo modelo 3ingress-pod-client-from-webserver.yaml.
Fig. 10.18: Criar política Ingress para liberar acesso via Labels - ETAPA 2
Retorne ao painel do Rancher para limpar o contéudo exemplo, e colar o conteúdo do modelo
469
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
3-ingress-pod-client-from-webserver.yaml.
Fig. 10.19: Criar política Ingress para liberar acesso via Labels - ETAPA 3
Descrição Ingress
• podSelector e matchLabels: Seleciona os pods com a label “curso=rancher”.
• ingress, from: Seleciona os pods com a label “app=php”.
Testando políticas egress e ingress
Uma vez que as duas novas regras de Network Policy foram criadar, teste o acesso entre os
recursos:
470
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.20: Testando políticas egress e ingress - ETAPA 1
É possível verificar que o acesso entre os recursos resolvendo nomes, ainda não será
possível!
Acesse a lista de Pods e copie o IP do pod do webserver.
Fig. 10.21: Testando políticas egress e ingress - ETAPA 2
471
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Agora realize o teste de comunicação apontando IP do Pod do webserver:
Fig. 10.22: Testando políticas egress e ingress - ETAPA 3
Não é possível a comunicação entre o pod-client e o pod webserver por nome e IP. Neste caso
o motivo é a falta de label no pod-client, já que as regras de Network Policy só permitem o
acesso através do label app = rancher.
Fig. 10.23: Testando políticas egress e ingress - ETAPA 4
Para resolver isso vamos editar o manifesto do pod-client, através da opção Edit YAML.
472
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.24: Testando políticas egress e ingress - ETAPA 5
Adicione na linha 82:
labels:
curso: rancher
Fig. 10.25: Testando políticas egress e ingress - ETAPA 6
Salve as alterações e teste novamente o acesso por IP ao serviço webserver:
473
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.26: Testando políticas egress e ingress - ETAPA 7
LAB 10.3 - Criar políticas para liberar acesso via DNS
Neste laboratório vamos criar 1 política de segurança de rede para:
• Liberar as portas
53 TCP
e
53 UDP
no Egress e Ingress
O objetivo desse NetworkPolicy é liberar somente o fluxo de tráfego entre os pods a partir da
resolução de nomes.
Para poder acessar os recursos por nomes, vamos criar um novo Network Policy através do
botão Create from YAML.
474
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.27: Criar políticas para liberar acesso via DNS - ETAPA 1
Novamente acesse repositório 543 da 4Linux para copiar o conteúdo do arquivo modelo 4allow-dns.yaml.
Fig. 10.28: Criar políticas para liberar acesso via DNS - ETAPA 2
Retorne ao painel do Rancher para limpar o conteúdo exemplo, e colar o conteúdo do modelo
4-allow-dns.yaml.
475
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.29: Criar políticas para liberar acesso via DNS - ETAPA 3
Descrição Egress
• port: Define em qual porta a regra sera aplicada. Para selecionar uma faixa de porta
use port para porta inicial e endport para porta final.
• protocol: Define em qual protocolo a regra sera aplicada. Utilize os protocolos TCP e
UDP.
Agora tente realizar o acesso ao serviço webserver usando o DNS:
476
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.30: Criar políticas para liberar acesso via DNS - ETAPA 4
Como resultado final é possível verificar que o Network Policy 4-allow-dns esta permitindo o acesso entre recursos via nome!
Fig. 10.31: Criar políticas para liberar acesso via DNS - ETAPA 5
477
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
LAB 10.4 - Criar política para liberar acesso a internet
Neste laboratório vamos criar 1 política de segurança de rede para:
• Liberar o Egress apenas ao pod
webserver
no namespace
devops
O objetivo desse NetworkPolicy é liberar o fluxo de tráfego do pod
instalação de pacotes.
até a
internet.
webserver
permitindo a
Vamos realizar um teste de conectividade no pod do webserver, através da opção Execute
Shell.
Fig. 10.32: Criar política para liberar acesso a internet - ETAPA 1
Tente atualizar a lista de pacotes através do seguinte comando:
apt update
478
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.33: Criar política para liberar acesso a internet - ETAPA 2
O comando apresenta erros porque o pod não ter acesso a porta 53, e sendo assim
não é possível resolver os nomes dos repositórios presentes no arquivo sources.list!
Para resolver isso vamos criar um novo Network Policy através do botão Create from YAML.
Fig. 10.34: Criar política para liberar acesso a internet - ETAPA 3
479
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Novamente acesse repositório 543 da 4Linux para copiar o conteúdo do arquivo modelo 5allow-internet-webserver-to-egress.yaml.
Fig. 10.35: Criar política para liberar acesso a internet - ETAPA 4
Retorne ao painel do Rancher para limpar o conteúdo exemplo, e colar o conteúdo do modelo
5-allow-internet-webserver-to-egress.yaml.
Fig. 10.36: Criar política para liberar acesso a internet - ETAPA 5
480
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Descrição Egress
• ipBlock: Define um conjunto particular de faixas de IP a serem permitidos como origens
no caso de entrada ou destinos no caso de saída.
• cidr: Define os ips permitidos na regra.
Mais uma vez tente atualizar a lista de pacotes através do comando
que agora é possível acesso a porta 53 resolvendo nomes.
apt update,
e verifique
Fig. 10.37: Criar política para liberar acesso a internet - ETAPA 6
RBAC
RBAC significa controle de acesso baseado em função. É um modelo de segurança que oferece
controle granular sobre o que pode ser feito em um cluster e por quem. É fundamental para
qualquer implantação de um cluster Kubernetes de classe empresarial. Esteja você usando o
projeto Kubernetes de software livre ou um grande provedor de nuvem que oferece serviços, o
mecanismo subjacente para controlar o acesso ao seu cluster é o RBAC.
O RBAC é um recurso do Kubernetes separado dos recursos de autenticação e autorização
integrados ao plano de controle. Com o RBAC, você pode controlar quem tem acesso ao seu
cluster e quais ações eles podem realizar. O RBAC é baseado em dois conceitos: Roles e
RoleBindings.
• Role: Uma função é um conjunto de permissões. Por exemplo, você pode criar uma
função que permita que um usuário leia um recurso específico, mas não grave nele.
481
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Uma associação de função concede uma função a um usuário ou grupo específico. Por
exemplo, você pode criar uma associação de função que dê a função somente leitura
aos desenvolvedores do grupo de usuários.
Você pode usar o RBAC para controlar o acesso a qualquer objeto de API no Kubernetes, incluindo pods, serviços e secrets.
• RoleBinding: É um método de atribuição de uma Role a um usuário em um cluster
Kubernetes. Uma associação de Role pode ser usada para conceder a um usuário
permissões para vários recursos ou pode ser usada para conceder a um usuário permissões
para um único recurso.
Lab 10.5 - Gerenciar RBAC no Rancher
Neste laboratório vamos aprender como gerenciar RBAC no Rancher.
Testar acesso ao namespace default
Vamos testar se o usuário analista consegue criar um pod no namespace default.
Selecione Pods ao lado esquerdo da tela e depois clique no botão Create from YAML.
Fig. 10.38: Testar acesso ao namespace default - ETAPA 1
Digite ou cole o conteúdo abaixo:
--apiVersion: v1
kind: Pod
482
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
metadata:
name: pod-busybox
namespace: default
labels:
app: busybox
spec:
containers:
- name: busybox
image: busybox:1.28
command:
- sleep
- "3600"
Não esqueça de clicar no botão Create.
Fig. 10.39: Testar acesso ao namespace default - ETAPA 2
Ao tentar criar o recurso sera mostrado uma mensagem de erro, indicando que o usuário
analista não tem permissão para criar pods dentro do namespace default.
483
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.40: Testar acesso ao namespace default - ETAPA 3
Vamos agora testar a criação de um Deploy através da opção Deployments e no botão
Create.
Fig. 10.41: Testar acesso ao namespace default - ETAPA 4
Em seguida clique no link Edit as YAML.
484
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.42: Testar acesso ao namespace default - ETAPA 5
Digite ou cole o conteúdo abaixo:
--kind: Deployment
apiVersion: apps/v1
metadata:
name: deploy-nginx
namespace: default
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
E clique no botão Create.
485
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.43: Testar acesso ao namespace default - ETAPA 6
Ao tentar criar o recurso sera mostrado uma mensagem de erro, indicando que o usuário
analista não tem permissão para criar deployments dentro do namespace default.
Fig. 10.44: Testar acesso ao namespace default - ETAPA 7
Vamos agora testar a criação de um serviço através da opção Services e no botão Create.
486
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.45: Testar acesso ao namespace default - ETAPA 8
Vamos utilize o serviço do tipo NodePort.
Fig. 10.46: Testar acesso ao namespace default - ETAPA 9
Em seguida clique no link Edit as YAML.
487
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.47: Testar acesso ao namespace default - ETAPA 10
Digite ou cole o conteúdo abaixo:
--apiVersion: v1
kind: Service
metadata:
name: service-nginx
namespace: default
labels:
app: nginx
spec:
ports:
- Port:
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: NodePort
E clique no botão Create.
488
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.48: Testar acesso ao namespace default - ETAPA 11
Ao tentar criar o recurso sera mostrado uma mensagem de erro, indicando que o usuário
analista não tem permissão para criar services dentro do namespace default.
Fig. 10.49: Testar acesso ao namespace default - ETAPA 12
Gerenciar Roles
Deslogue da conta do usuário analista e logue com o a conta local do usuário admin.
489
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.50: Gerenciar Roles no Rancher - ETAPA 1
Para trabalhar com Roles, clique na opção More Resources -> RBAC.
Fig. 10.51: Gerenciar Roles no Rancher - ETAPA 2
E depois clique na opção Roles.
490
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.52: Gerenciar Roles no Rancher - ETAPA 3
Vamos criar roles através do comando kubectl, através da opção Kubectl Shell.
Fig. 10.53: Gerenciar Roles no Rancher - ETAPA 4
Crie uma role de nome analista, permitindo a listagem, criação, atualização, e remoção dos
recursos pod, deployments, services no namespace default.
kubectl create role analista --verb=get,list,create,update,patch,delete --resource=pods,
deployments,services,services/proxy -n default
Resultado esperado:
491
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.54: Gerenciar Roles no Rancher - ETAPA 5
Gerenciar RoleBindings
Antes de criar uma RoleBinding é preciso copiar o ID do usuário analista, através da opção
Users & Authentication -> Users.
Na lista de usuários vamos selecionar e copiar o ID do usuário analista.
Fig. 10.55: Gerenciar RoleBindings no Rancher - ETAPA 1
Retorne ao More Resources -> RBAC e clique em RoleBindings.
492
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.56: Gerenciar RoleBindings no Rancher - ETAPA 2
Novamente abra a opção Kubectl Shell e crie uma RoleBinding de nome analista, associando
a role analista ao ID do usuário analista no namespace default.
kubectl create rolebinding analista --role=analista --user=u-4k4hxzzv4l -n default
Resultado esperado:
Fig. 10.57: Gerenciar RoleBindings no Rancher - ETAPA 3
Testando regras no namespace default
Deslogue da conta local do usuário admin e logue com a conta do usuário analista.
493
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.58: Gerenciar RoleBindings no Rancher - ETAPA 1
Agora vamos testar se é possível criar um pod no namespace default, através da opção Pods
e depois clique no botão Create from YAML.
Fig. 10.59: Gerenciar RoleBindings no Rancher - ETAPA 2
Digite o conteúdo do arquivo modelo abaixo e depois clique no botão Create.
--apiVersion: v1
kind: Pod
metadata:
name: pod-busybox
namespace: default
labels:
app: busybox
spec:
494
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
containers:
- name: busybox
image: busybox:1.28
command:
- sleep
- "3600"
Fig. 10.60: Gerenciar RoleBindings no Rancher - ETAPA 3
Como resultado final é possível perceber que a Role e RoleBinding teve efeito, pois agora o
usuário analista consegue criar um pod dentro do namespace default.
Fig. 10.61: Gerenciar RoleBindings no Rancher - ETAPA 4
Vamos agora testar a criação de um Deploy através da opção Deployments e no botão
Create.
495
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.62: Gerenciar RoleBindings no Rancher - ETAPA 5
Digite ou cole o conteúdo do arquivo modelo abaixo e depois clique no botão Create.
--kind: Deployment
apiVersion: apps/v1
metadata:
name: deploy-nginx
namespace: default
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
496
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.63: Gerenciar RoleBindings no Rancher - ETAPA 6
Como resultado final é possível perceber que a Role e RoleBinding teve efeito, pois agora o
usuário analista consegue criar um deploy dentro do namespace default.
Fig. 10.64: Gerenciar RoleBindings no Rancher - ETAPA 7
Vamos agora testar a criação de um serviço através da opção Services e no botão Create.
497
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.65: Gerenciar RoleBindings no Rancher - ETAPA 8
Digite ou cole o conteúdo do arquivo modelo abaixo e depois clique no botão Create.
Fig. 10.66: Gerenciar RoleBindings no Rancher - ETAPA 9
Como resultado final é possível perceber que a Role e RoleBinding teve efeito, pois agora o
usuário analista consegue criar um service dentro do namespace default.
Vamos testar o serviço através do IP do NodePort.
498
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.67: Gerenciar RoleBindings no Rancher - ETAPA 10
Fig. 10.68: Gerenciar RoleBindings no Rancher - ETAPA 11
OPA Gatekeeper
O OPA Gatekeeper é um componente que ajuda a controlar o acesso à implantação do OPA.
Você pode usar o OPA Gatekeeper para impor políticas de autorização em sua implantação do
OPA. O OPA Gatekeeper é construído no projeto Open Policy Agent (OPA). O projeto OPA
Gatekeeper é um projeto de código aberto desenvolvido e mantido pela comunidade OPA.
O OPA Gatekeeper é um conjunto de ferramentas que ajuda a implantar e gerenciar o OPA em
seu ambiente. O projeto OPA Gatekeeper fornece uma interface de linha de comando (CLI) e
uma interface de usuário (UI) baseada na web que você pode usar para implantar e gerenciar
o OPA em seu ambiente.
Como funciona o OPA Gatekeeper?
499
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
• O OPA Gatekeeper usa o Open Policy Agent (OPA) para impor políticas de autorização
em sua implantação do OPA. OPA é um projeto de código aberto desenvolvido e mantido
pela comunidade OPA.
• O OPA Gatekeeper usa a linguagem de política OPA Rego para criar políticas de autorização. OPA Rego é uma linguagem de política projetada para o projeto Open Policy
Agent.
• O OPA Gatekeeper armazena as políticas que você cria no OPA Rego em um repositório
de políticas. O repositório de políticas é um repositório Git hospedado no GitHub.
• O OPA Gatekeeper impõe as políticas que você cria no repositório de políticas. O OPA
Gatekeeper usa a API OPA para impor as políticas. A API OPA é uma API HTTP
fornecida pelo projeto OPA.
Quais são os benefícios de usar o OPA Gatekeeper?
• O OPA Gatekeeper ajuda você a controlar o acesso à sua implantação OPA. Você pode
usar o OPA Gatekeeper para impor políticas de autorização em sua implantação do OPA.
Lab 10.6 - Instalação do OPA Gatekeeper no Rancher
Neste laboratório vamos aprender como realizar a instalação do OPA Gatekeeper no Rancher.
Deslogue da conta do usuário analista e logue com o a conta local do usuário admin.
Fig. 10.69: Instalação do OPA Gatekeeper no Rancher - ETAPA 1
Em seguida selecione o cluster cluster1-gke e depois clique no botão Cluster Tools.
500
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.70: Instalação do OPA Gatekeeper no Rancher - ETAPA 2
Clique no botão Install localizado em OPA Gatekeeper.
Fig. 10.71: Instalação do OPA Gatekeeper no Rancher - ETAPA 3
Selecione o projeto Default e clique no botão Next para continuar.
501
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.72: Instalação do OPA Gatekeeper no Rancher - ETAPA 4
Para iniciar a instalação do pacote clique no botão Install.
Fig. 10.73: Instalação do OPA Gatekeeper no Rancher - ETAPA 5
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
502
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.74: Instalação do OPA Gatekeeper no Rancher - ETAPA 6
Lab 10.7 - Criar ConstraintTemplates no OPA Gatekeeper
Neste laboratório vamos aprender como criar ConstraintTemplates no OPA Gatekeeper.
Visualizar ConstraintTemplates prontos
Para gerenciar templates selecione OPA Gatekeeper ao lado esquerdo da tela.
Fig. 10.75: Visualizar ConstraintTemplates prontos - ETAPA 1
E depois selecione a opção Template.
503
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.76: Visualizar ConstraintTemplates prontos - ETAPA 2
Para visualizar as configurações do template clique no nome k8srequiredlabels.
Fig. 10.77: Visualizar ConstraintTemplates prontos - ETAPA 3
O objetivo desse template é forçar a criação de um recurso, somente se o mesmo possuir um
label. Um exemplo de uso na prática é a criação de um novo namespace.
504
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.78: Visualizar ConstraintTemplates prontos - ETAPA 4
Descrição:
• violation: Define a mensagem e os detalhes que são exibidos ao usuário quando a
política é violada (violação representa uma regra). É assim que obtemos feedback para
nossos usuários do cluster sobre por que o Gatekeeper rejeitou uma alteração em seu
recurso;
• provied: Define uma variável para manter a lista de labels para o recurso;
• required: Define uma variável que contém uma lista dos labels que precisamos para
presentes no recurso;
• missing: = Cria uma matriz com os itens encontrados em required, mas não encontrados
em provied;
• count: Se houver mais de zero itens nessa matriz de diferença, isso significa que temos
um ou mais labels obrigatórios que não estão lá e isso é uma violação da política;
• msg: A mensagem é uma frase personalizada que é exibida ao cliente.
Agora vamos visualizar as configurações do template k8sallowrepos.
505
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.79: Visualizar ConstraintTemplates prontos - ETAPA 5
O objetivo desse template é forçar a utilização de um determinado servidor de imagem
para container. Um exemplo de uso na prática é permitir somente o uso de imagens do
servidor privado da empresa.
Fig. 10.80: Visualizar ConstraintTemplates prontos - ETAPA 6
Criar ConstraintTemplates no OPA Gatekeeper
Para facilitar a nossa administração, acesse o link do curso onde você ira encontrar diversos
exemplos:
https://github.com/4linux/543/tree/main/opa-gatekeeper
506
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.81: Criar Templates no OPA Gatekeeper - ETAPA 1
Retorne ao painel do Rancher e abra o Kubectl Shell.
Fig. 10.82: Criar Templates no OPA Gatekeeper - ETAPA 2
Através do comando kubectl, vamos criar o template k8sminreplicacount usando o arquivo
modelo 1-opa-template-replica-count.yaml disponível no Github da 4Linux.
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/1-opatemplate-replica-count.yaml
507
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
O objetivo desse template é forçar a criação de um recurso com uma quantidade
de réplicas. Um exemplo de uso na prática é padronizar a quantidade minima de
replicas para suas aplicações no cluster Kubernetes.
Fig. 10.83: Criar Templates no OPA Gatekeeper - ETAPA 3
Conteúdo do ConstraintTemplate k8sminreplicacount
--apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8sminreplicacount
spec:
crd:
spec:
names:
kind: K8sMinReplicaCount
validation:
openAPIV3Schema:
properties:
min:
type: integer
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8sminreplicacount
violation[{"msg": msg, "details": {"missing_replicas": missing}}] {
provided := input.review.object.spec.replicas
required := input.parameters.min
missing := required - provided
508
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
}
missing > 0
msg := sprintf("Voce deve fornecer mais %v replicas", [missing])
Através do comando kubectl, vamos criar o template k8sdenyprivileged usando o arquivo
modelo 2-opa-template-deny-privileged.yaml disponível no Github da 4Linux.
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/2-opatemplate-deny-privileged.yaml
O objetivo desse template é impedir a criação de um recurso que possua privilégios
administrativos. Um exemplo de uso na prática é padronizar a segurança de suas
aplicações no cluster Kubernetes.
Fig. 10.84: Criar Templates no OPA Gatekeeper - ETAPA 4
Conteúdo do ConstraintTemplate k8sdenyprivileged
--apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8sdenyprivileged
509
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
spec:
crd:
spec:
names:
kind: K8sDenyPrivileged
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8sdenyprivileged
violation[{"msg": msg, "details": {}}] {
c := input_containers[_]
c.securityContext.privileged
msg := sprintf("Nao e permitido executar container com privilegio: %v,
securityContext: %v", [c.name, c.securityContext])
}
input_containers[c] {
c := input.review.object.spec.containers[_]
}
input_containers[c] {
c := input.review.object.spec.initContainers[_]
}
Através do comando kubectl, vamos criar o template k8sdenysecret usando o arquivo modelo
3-opa-template-deny-secret.yaml disponível no Github da 4Linux.
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/3-opatemplate-deny-secret.yaml
O objetivo desse template é impedir a criação de secrets em um determinado namespace. Um exemplo de uso na prática é padronizar a segurança no cluster Kubernetes.
510
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.85: Criar Templates no OPA Gatekeeper - ETAPA 5
Conteúdo do ConstraintTemplate k8sdenysecret
--apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
name: k8sdenysecret
spec:
crd:
spec:
names:
kind: K8sDenySecret
validation:
openAPIV3Schema:
properties:
message:
type: string
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8sdenysecret
violation[{"msg": msg}] {
1 > 0
msg := input.parameters.message
}
Lab 10.8 - Criar Constraints no OPA Gatekeeper
Neste laboratório vamos aprender como criar Constraints no OPA Gatekeeper.
511
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Criar via painel
Uma vez que os templates foram criados, vamos criar constraints através da opção Constraints e depois clique no botão Create.
Fig. 10.86: Criar Constraints no OPA Gatekeeper - ETAPA 1
Selecione o template k8srequiredlabels.
Fig. 10.87: Criar Constraints no OPA Gatekeeper - ETAPA 2
E preencha as seguintes informações:
• Name: namespace-label
• Enforcement Action: Deny - deny admission requests with any violation
• Scope: Cluster & Namespaced
512
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
• Namespaces: devops
Fig. 10.88: Criar Constraints no OPA Gatekeeper - ETAPA 3
Na parte de Rules clique no botão Add ApiGroup.
Fig. 10.89: Criar Constraints no OPA Gatekeeper - ETAPA 4
E preencha as seguintes informações:
• ApiGroups: ""
• Kinds: Namespace
513
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.90: Criar Constraints no OPA Gatekeeper - ETAPA 5
Na parte de Parameters digite:
- Labels:
- curso
Para terminar clique no botão Create.
Fig. 10.91: Criar Constraints no OPA Gatekeeper - ETAPA 6
Em seguida vamos criar um segundo contraint através do botão Create.
514
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.92: Criar Constraints no OPA Gatekeeper - ETAPA 7
Selecione o template k8sallowrepos.
Fig. 10.93: Criar Constraints no OPA Gatekeeper - ETAPA 8
E preencha as seguintes informações:
•
•
•
•
Name: images-from-docker-hub
Enforcement Action: Deny - deny admission requests with any violation
Scope: Namespaced
Namespaces: devops
515
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.94: Criar Constraints no OPA Gatekeeper - ETAPA 9
Na parte de Rules preencha as seguintes informações:
• ApiGroups: ""
• Kinds: Pod
Fig. 10.95: Criar Constraints no OPA Gatekeeper - ETAPA 10
516
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Na parte de Parameters digite:
registry: "docker.io/"
Para terminar clique no botão Create.
Fig. 10.96: Criar Constraints no OPA Gatekeeper - ETAPA 11
Criar via kubectl
Vamos criar novos contraints através do Kubectl Shell.
517
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.97: Criar Constraints via kubectl - ETAPA 1
Através do comando kubectl, vamos criar o contraint deployment-min-replicas usando o
arquivo modelo 1-opa-contraint-replica-count.yaml disponível no Github da 4Linux.
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/1-opacontraint-replica-count.yaml
Conteúdo do Constraint deployment-min-replicas
--apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sMinReplicaCount
metadata:
name: deployment-min-replicas
spec:
match:
kinds:
- apiGroups: ["apps"]
kinds: ["Deployment"]
namespaces:
- "devops"
parameters:
min: 2
Através do comando kubectl, vamos criar o contraint deny-privileged-container usando o
arquivo modelo 2-opa-contraint-deny-privileged.yaml disponível no Github da 4Linux.
518
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/2-opacontraint-deny-privileged.yaml
Conteúdo do Constraint deny-privileged-container
--apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sDenyPrivileged
metadata:
name: deny-privileged-container
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
namespaces:
- "devops"
Através do comando kubectl, vamos criar o contraint deny-secret usando o arquivo modelo
3-opa-constraint-deny-secret.yaml disponível no Github da 4Linux.
kubectl create -f https://raw.githubusercontent.com/4linux/543/main/opa-gatekeeper/3-opaconstraint-deny-secret.yaml
Conteúdo do Constraint deny-privileged-container
--apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sDenySecret
metadata:
name: deny-secret
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Secret"]
namespaces:
- "devops"
parameters:
message: "ACESSO NEGADO!"
Após criar o comando kubectl podemos verificar a existencia de cinco ConstraintTemplates.
519
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.98: Criar Constraints via kubectl - ETAPA 2
Lab 10.9 - Testando regras do OPA Gatekeeper
Neste laboratório vamos testar as regras do OPA Gatekeeper.
Vamos agora testar a criação de um Deploy através da opção Deployments e no botão
Create.
520
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.99: Testando regras do OPA Gatekeeper - ETAPA 1
Vamos criar um deploy coma as seguintes informações:
• Name: nginx
• Replicas: 1
• Container Image: nginx
Fig. 10.100: Testando regras do OPA Gatekeeper - ETAPA 2
521
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
É possível observar que não é possível criar um Deploy somente com 1 réplica!
Fig. 10.101: Testando regras do OPA Gatekeeper - ETAPA 3
Edite os números de réplicas mudando para os 2 e tente criar novamente.
Fig. 10.102: Testando regras do OPA Gatekeeper - ETAPA 4
522
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.103: Testando regras do OPA Gatekeeper - ETAPA 5
Como resultado final agora temos um Deploy com 2 réplicas.
Fig. 10.104: Testando regras do OPA Gatekeeper - ETAPA 6
Faça um novo testes, selecionandoe Pods ao lado esquerdo da tela e depois clique no botão
Create from YAML.
523
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.105: Testando regras do OPA Gatekeeper - ETAPA 7
Digite ou cole o modelo que cria um Pod com contexto de segurança que permite privilegios.
--apiVersion: v1
kind: Pod
metadata:
labels:
run: pod-priviled
name: pod-priviled
namespace: devops
spec:
containers:
- image: nginx
name: pod-priviled
524
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.106: Testando regras do OPA Gatekeeper - ETAPA 8
É possível observar que não é possível criar um Pod com privilégios!
Fig. 10.107: Testando regras do OPA Gatekeeper - ETAPA 9
Remova as 2 últimas linhas do Pod e tente criar novamente.
525
10. Gerenciar Segurança com Rancher
Caique Araujo / caiquearaujoac@gmail.com
Fig. 10.108: Testando regras do OPA Gatekeeper - ETAPA 10
Como resultado final agora temos um Pod respeitando as regras de segurança.
Fig. 10.109: Testando regras do OPA Gatekeeper - ETAPA 11
Caique Araujo / caiquearaujoac@gmail.com
11
Gerenciar Manutenção e Backup
Competências da Aula
•
•
•
•
•
Gerenciar disponibilidade dos Nodes (cordon/drain)
Instalar nfs-subdir-external-provisioner no cluster local
Instalar Rancher Backups
Realizar backup de clusters com Rancher
Realizar restore de clusters com Rancher
Cordon/Drain
O cordon é um comando no Kubernetes que marca um nó como “não programável”. Isso
significa que nenhum novo pod pode ser agendado nesse nó. Os pods que já estão em execução
no nó não são afetados. Cordon é útil quando você precisa realizar manutenção em um nó. Por
exemplo, pode ser necessário atualizar o kernel ou instalar um novo software. Com o cordão
instalado, você pode ter certeza de que novos pods não serão agendados no nó enquanto você
estiver realizando a manutenção.
Depois de concluir a manutenção, você pode usar o comando uncordon para remover o marcador
“não programável” e permitir que novos pods sejam agendados no nó. O comando kubectl
cordon node impede que um nó receba novos pods, mas não afeta os pods que já estão em
execução no nó.
O drain é um comando no Kubernetes usado para remover normalmente um nó de um cluster.
526
527
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Isso é feito primeiro isolando o nó, o que o marca como não programável. Isso impede que
novos pods sejam atribuídos ao nó. Em seguida, o processo de drenagem do nó exclui todos
os pods no nó, um por um. Finalmente, o nó é desarmado e removido do cluster.
O comando aceita várias opções para controlar o processo de despejo. Por exemplo, você
pode usar a flag --ignore-daemonsets para ignorar pods gerenciados por objetos DaemonSet.
Lab 11.1 - Gerenciar disponibilidade dos Nodes no Rancher
Neste laboratório vamos aprender como gerenciar disponibilidade dos Nodes no Rancher.
Cordon
Para começar logue com a conta do usuário local admin.
Fig. 11.1: Mudar estado do nó para Cordon - ETAPA 1
Em seguida clique em Nodes na área de Cluster.
528
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.2: Mudar estado do nó para Cordon - ETAPA 2
Selecione um nó da lista e clique no Cordon.
Fig. 11.3: Mudar estado do nó para Cordon - ETAPA 3
Verifique o status do nó mudou para Cordoned.
A partir de agora esse nó não irá receber novas réplicas de Pods!
529
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.4: Mudar estado do nó para Cordon - ETAPA 4
Para testar o estado de Cordon, vamos editar as configurações do deploy deploy-nginx.
Fig. 11.5: Mudar estado do nó para Cordon - ETAPA 5
Na caixa réplicas altere o valor para 10 e Salve as alterações deploy.
530
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.6: Mudar estado do nó para Cordon - ETAPA 6
Para verificar em qual nó as novas réplicas foram locados, clique no deploy deploy-nginx.
Fig. 11.7: Mudar estado do nó para Cordon - ETAPA 7
531
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Perceba que o nó que esta em Cordon possui poucas réplicas!
Fig. 11.8: Mudar estado do nó para Cordon - ETAPA 8
Retorne a lista de nodes e remova o estado de Cordon, através do botão Uncordon.
532
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.9: Mudar estado do nó para Cordon - ETAPA 9
Verifique o status do nó mudou para Active.
Fig. 11.10: Mudar estado do nó para Cordon - ETAPA 10
Drain
Selecione um nó da lista e clique no Drain.
533
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.11: Mudar estado do nó para Drain - ETAPA 1
Nas opções do Drain selecione:
• Delete Empty Dir Data: Yes
• Force: Yes
Confirme através do botão Drain.
Fig. 11.12: Mudar estado do nó para Drain - ETAPA 2
534
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Acompanha a drenagem dos Pods!
Fig. 11.13: Mudar estado do nó para Drain - ETAPA 3
É possível observar que uma vez que o nó esteja com o status Drained e não será
possível alocar nenhuma réplica para ele.
Fig. 11.14: Mudar estado do nó para Drain - ETAPA 4
535
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Ao clicar no nó podemos verificar a existência dos pods de infraestrutura e sistema.
Fig. 11.15: Mudar estado do nó para Drain - ETAPA 5
Retorne a lista de nodes e remova o estado de Drained, através do botão Uncordon.
Fig. 11.16: Mudar estado do nó para Drain - ETAPA 6
536
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Verifique o status do nó mudou para Active.
Fig. 11.17: Mudar estado do nó para Drain - ETAPA 7
Backup/Restore
O operador Rancher Backup é usado para fazer backup e restauração do Rancher em qualquer
cluster Kubernetes. Este aplicativo é um gráfico do Helm e pode ser implantado por meio da
página Rancher Apps & Marketplace ou usando a CLI do Helm.
O operador de restauração de backup precisa ser instalado no cluster local e faz backup apenas
do aplicativo Rancher. As operações de backup e restauração são executadas apenas no cluster
local do Kubernetes.
Lab 11.2 - Instalar nfs-subdir-external-provisioner no cluster Local
Neste laboratório vamos instalar o pacote nfs-subdir-external-provisioner no cluster Local.
Alterne para o painel do gcp e abra uma janela do navegador para a instância rancher.
537
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.18: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 1
Instale o cliente do nfs através do seguinte comando:
sudo docker container exec -it rancher-manager zypper install nfs-client
Confirme a instalação dos pacotes através da tecla Y.
Fig. 11.19: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 2
Retorne ao painel do Rancher selecione o cluster local.
538
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.20: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 3
Em seguida selecione a opção Repositories em Apps & Marketplace.
Fig. 11.21: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 4
Cique no botão Create para adicionar um novo repositório.
539
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.22: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 5
Preencha as seguintes informações:
• Name: nfs-subdir-external-provisioner
• Index URL: https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner
Fig. 11.23: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 6
Verifique se o repositório nfs-subdir-external-provisioner foi criado corretamente.
540
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.24: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 7
Para instalar a nova aplicação clique em Charts, pesquise nfs na caixa ao lado direito da tela,
e selecione o pacote nfs-subdir-external-provisioner.
Fig. 11.25: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 8
Para continuar a instalação clique no botão Install.
541
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.26: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 9
Selecione o namespace detault e digite o nome nfs-subdir-external-provisioner.
Selecione a opção Customize Helm options before install e clique no botão Next para
continuar.
Fig. 11.27: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 10
No bloco de configuração nfs vamos alterar as seguintes informações:
• path: /backups
• reclaimPolicy: Retain
542
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
• server: Digite ou cole o IP externo da instância nfs-server
Clique no botão Next para continuar.
Fig. 11.28: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 11
Para iniciar a instalação do pacote clique no botão Install.
Fig. 11.29: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 12
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
543
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.30: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 13
Na área de Storage é possível observar que um novo StorageClass de nome nfs-client foi
criado em nosso cluster.
Fig. 11.31: Instalar nfs-subdir-external-provisioner no cluster Local - ETAPA 14
Lab 11.3 - Instalar Rancher Backups
Neste laboratório vamos instalar o operador de backups no Rancher.
Vamos instalar operador de backups através do botão Cluster Tools.
544
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.32: Instalar Rancher Backups - ETAPA 1
Em seguida clique no botão Install localizado em Rancher Backups.
Fig. 11.33: Instalar Rancher Backups - ETAPA 2
Selecione o projeto Default e a opção Customize Helm options before install e clique no
botão Next para continuar.
545
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.34: Instalar Rancher Backups - ETAPA 3
Na área de Chart Options vamos selecionar User an existent storage class.
Na caixa Storage Class selecione nfs-client e na caixa Size deixe com 10Gi.
Clique no botão Next para continuar.
Fig. 11.35: Instalar Rancher Backups - ETAPA 4
546
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Para iniciar a instalação do pacote clique no botão Install.
Fig. 11.36: Instalar Rancher Backups - ETAPA 5
Após a instalação exibir a mensagem SUCCESS clique no ícone para fechar o terminal.
Fig. 11.37: Instalar Rancher Backups - ETAPA 6
Lab 11.4 - Gerenciar backup de cluster no Rancher
Neste laboratório vamos gerenciar backups de cluster no Rancher.
Para gerenciar backup e restauração de clusters, clique em Rancher Backups.
547
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.38: Gerenciar backup de cluster no Rancher - ETAPA 1
Para criar um novo backup, clique em Backup e depois no botão Create.
Fig. 11.39: Gerenciar backup de cluster no Rancher - ETAPA 2
Preencha as seguintes informações para o seu novo backup:
•
•
•
•
Name: clusters-gke
Schedule: One-Time Backup
Encryption: Store the contents of the backup unencrypted
Storage Location: Use the defaul storage localtion configured during installation
Clique no botão Create para criar o backup.
548
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.40: Gerenciar backup de cluster no Rancher - ETAPA 3
Como resultado final temos um backup dos clusters presentes no Rancher.
Os arquivos de backups estão armazenados no servidor NFS, porque no cluster local
o StorageClass default é o nfs-client!
Fig. 11.41: Gerenciar backup de cluster no Rancher - ETAPA 4
Lab 11.5 - Gerenciar restore de cluster no Rancher
Neste laboratório vamos gerenciar restore de cluster no Rancher.
549
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Antes de testar a restauração de clusters, vamos selecionar o cluster2-gke e depois removê-lo.
Fig. 11.42: Gerenciar restore de cluster no Rancher - ETAPA 1
Fig. 11.43: Gerenciar restore de cluster no Rancher - ETAPA 2
Para criar um novo restore, clique em Restores e depois no botão Create.
Fig. 11.44: Gerenciar restore de cluster no Rancher - ETAPA 3
550
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Preencha as seguintes informações para o seu novo restore:
• Backup Source: An existing backup config
• Target Backup: clusters-gke
Clique no botão Create para criar o restore.
Fig. 11.45: Gerenciar restore de cluster no Rancher - ETAPA 4
Como resultado final temos um restore dos clusters presentes no Rancher.
Fig. 11.46: Gerenciar restore de cluster no Rancher - ETAPA 5
Aguarde alguns minutos e verifique que o cluster 2 foi restaurado com sucesso
551
11. Gerenciar Manutenção e Backup
Caique Araujo / caiquearaujoac@gmail.com
Fig. 11.47: Gerenciar restore de cluster no Rancher - ETAPA 6
Fig. 11.48: Gerenciar restore de cluster no Rancher - ETAPA 7
Caique Araujo / caiquearaujoac@gmail.com
12
Provisionar Rancher na
GCP/AWS/Azure através do
Terraform
Competências da Aula
•
•
•
•
•
Introdução ao Terraform
Instalação e configuração do google-cloud-sdk no Linux
Provisionar o Rancher e Cluster Kubernetes com provedor GCP
Provisionar o Rancher e Cluster Kubernetes com provedor AWS
Provisionar o Rancher e Cluster Kubernetes com provedor Azure
Terraform
O Terraform é um software para criar, alterar e versionar a infraestrutura de TI de forma segura
e eficaz. Ele é código aberto e disponível sob a licença Apache 2.0. Ele é construído para trabalhar com qualquer provedor de nuvem, incluindo AWS, Azure, Google Cloud, DigitalOcean,
e muitos outros.
Com o Terraform, você pode criar, alterar e destruir toda a infraestrutura de TI, como
máquinas virtuais, redes, contêineres e muito mais.
552
553
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
LAB 12.1 - Instalação do Terraform
Neste laboratório vamos aprender como instalar o Terraform.
Através da instância custom, abra uma conexão SSH!
Realize o download o binário compactado do Terraform.
wget https://releases.hashicorp.com/terraform/1.0.7/terraform_1.0.7_linux_amd64.zip
Descompacte o arquico através do comando
unzip.
unzip terraform_1.0.7_linux_amd64.zip
Mova o binário
terraform
para o diretório
/usr/local/bin/.
sudo mv terraform /usr/local/bin/
Teste a instalação através do seguinte comando:
terraform -version
Resultado esperado:
Terraform v1.0.7
on linux_amd64
Para terminar vamos instalar o Auto Completion para o Terraform.
terraform -install-autocomplete
554
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
LAB 12.2 - Instalação e configuração do google-cloud-sdk no Linux
Neste laboratório vamos aprender como instalar o google-cloud-sdk na máquina virtual com
o sistema operacional Linux.
O primeiro passo e fazer a instalação do Google Cloud SDK. Vamos seguir os passos da
documentação oficial:
https://cloud.google.com/sdk/docs/quickstart#deb
Para começar realize o download do google-cloud-sdk:
curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-354.0.0linux-x86_64.tar.gz \
-o "google-cloud-sdk.tar.gz"
Em seguida descompacte o arquivo através do comando
tar:
tar -xf google-cloud-sdk.tar.gz
Realize a instalação através do
script install.sh,
localizado na pasta google-cloud-sdk:
./google-cloud-sdk/install.sh
Tecle ENTER para iniciar a instalação:
Do you want to help improve the Google Cloud SDK (y/N)? <TECLE ENTER>
Tecle Y e ENTER para atualizar a variável de ambiente $PATH e habilitar o autocompletion de
comandos:
Modify profile to update your $PATH and enable shell command completion?
Do you want to continue (Y/n)?
Tecle
ENTER
Y <TECLE ENTER>
para confirme o caminho do arquivo
.bashrc:
555
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Enter a path to an rc file to update, or leave blank to use
[/home/suporte-gcp/.bashrc]: <TECLE ENTER>
Antes de testar a instalação atualize a sessão do Shell, através do comando
bash.
bash
Para instalar o Google Cloud SDK no Debian/Ubuntu através de repositórios, siga as etapas
de instalação da documentação oficial:
https://cloud.google.com/sdk/docs/quickstart#deb
Para instalar o Google Cloud SDK no Red Hat/Fedora/CentOS através de repositórios,
siga as etapas de instalação da documentação oficial:
https://cloud.google.com/sdk/docs/quickstart#rpm
Para instalar o Google Cloud SDK no Windows, siga as etapas de instalação da documentação
oficial:
https://cloud.google.com/sdk/docs/quickstart#windows
Para instalar o Google Cloud SDK no Mac OSX, siga as etapas de instalação da documentação
oficial:
https://cloud.google.com/sdk/docs/quickstart#mac
Configuração do google-cloud-sdk
Execute o comando
gcloud init
para inicializar o SDK sem realizar um diagnostico da rede:
gcloud init --skip-diagnostics
Tecle
Y
e
ENTER
para realizar o login em sua conta do google:
Your current configuration has been set to: [default]
You must log in to continue. Would you like to log in (Y/n)?
Y <TECLE ENTER>
556
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Em seguida copie o link e cole em seu navegador para permitir acesso ao Goocle Cloud SDK.
Fig. 12.1: Configuração do Google Cloud SDK - ETAPA 1
Logue com a conta do usuário que possui acesso ao projeto multicloud.
Fig. 12.2: Configuração do Google Cloud SDK - ETAPA 2
Clique no botão Permitir para permitir acesso ao Goocle Cloud SDK.
557
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.3: Configuração do Google Cloud SDK - ETAPA 3
Sera gerado um código onde é preciso copiá-lo:
558
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.4: Configuração do Google Cloud SDK - ETAPA 4
Retorne ao terminal onde o usuário suporte-gcp esta logado, e cole o código em Enter verification code: e tecle ENTER.
Fig. 12.5: Configuração do Google Cloud SDK - ETAPA 5
Em seguida digite o valor correspondente ao projeto cluster2 e tecle ENTER.
559
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Pick cloud project to use:
[1] cluster1-346911
[2] cluster2-346911
[3] tokyo-silicon-340713
[4] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 2 <TECLE ENTER>
Tecle
Y
e
ENTER
para configurar a região e zona na GCP:
Do you want to configure a default Compute Region and Zone? (Y/n)?
Y <TECLE ENTER>
Digite o valor 7 e tecle ENTER, para selecionar us-central1-c.
Did not print [42] options.
Too many options [92]. Enter "list" at prompt to print choices fully.
Please enter numeric choice or text value (must exactly match list
item): 7 <TECLE ENTER>
Para testar execute o comando que lista as instâncias na conta do suporte-aws:
gcloud compute instances list
Resultado:
NAME
EXTERNAL_IP
STATUS
gke-cluster2-gke-nodes-010f64a7-2w8r
104.198.77.34
RUNNING
gke-cluster2-gke-nodes-010f64a7-7849
104.198.247.252 RUNNING
gke-cluster2-gke-nodes-010f64a7-bw9p
34.121.235.149
RUNNING
gke-cluster2-gke-nodes-010f64a7-phxd
34.136.111.55
RUNNING
ZONE
MACHINE_TYPE
PREEMPTIBLE
INTERNAL_IP
us-central1-c
n2-highmem-2
10.128.0.52
us-central1-c
n2-highmem-2
10.128.0.51
us-central1-c
n2-highmem-2
10.128.0.50
us-central1-c
n2-highmem-2
10.128.0.53
Lab 12.3 - Provisionar o Rancher e Cluster Kubernetes com provedor GCP
Neste laboratório vamos aprender como provisionar o Rancher e um cluster Kubernetes com
provedor GCP através do Terraform.
560
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Excluir cluster cluster2-gke
Para começar vamos acessar área de Cluster Management e selecionar a opção Clusters.
Fig. 12.6: Excluir cluster cluster2-gke - ETAPA 1
Selecione o cluster2-gke e depois clique no botão Delete.
Fig. 12.7: Excluir cluster cluster2-gke - ETAPA 2
Confirmar remoção através do botão Delete.
561
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.8: Excluir cluster cluster2-gke - ETAPA 3
}
Provisionar o Rancher e Cluster na GCP com Terraform
Alterne para a instância custom e realize o clone do projeto quickstart. Em seguida acesse a
pasta quickstart/gcp:
git clone https://github.com/rancher/quickstart
cd quickstart/gcp
O primeiro passo é pesquisar a localização do arquivo adc.json, que contém as suas credenciais
de acesso a GCP.
find /home/suporte -iname adc.json
562
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Resultado esperado:
/home/suporte/.config/gcloud/legacy_credentials/<seu_email>/adc.json
O proximo passo é selecionar em qual projeto vamos provisionar o Rancher. Execute o comando
abaixo para listar os seus projetos na GCP:
gcloud projects list
Na lista de projetos vamos anotar o ID do cluster2:
PROJECT_ID
cluster1-346911
cluster2-346911
tokyo-silicon-340713
NAME
cluster1
cluster2
My First Project
PROJECT_NUMBER
761011794426
267338272310
35651740265
Agora que você possui as informações necessárias, vamos renomear o arquivo de variáveis
utilizadas pelo Terraform:
mv terraform.tfvars.example terraform.tfvars
E em seguida edite o arquivo
terraform.tfvars
através do comando
vim:
vim terraform.tfvars
Defina os seguintes valores:
gcp_account_json = "/home/suporte/.config/gcloud/legacy_credentials/<seu_email>/adc.json"
gcp_project = "<id_do_projeto_cluster2>"
rancher_server_admin_password = "CursoRancher4Linux"
cert_manager_version = "1.7.1"
docker_version = "19.03"
gcp_region = "us-central1"
563
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
gcp_zone = "us-central1-c"
machine_type = "n1-standard-2"
prefix = "rancher-gcp"
rancher_kubernetes_version = "v1.21.11+k3s1"
rancher_version = "v2.6.2"
workload_kubernetes_version = "v1.21.10-rancher1-1"
Antes de realizar o Deploy de uma instância com Terraform, execute o comando terraform
para inicializar o ambiente.
terraform init
Resultado esperado:
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Se estiver tudo ok, você precisa executar o comando
terraform apply.
terraform apply --auto-approve
Resultado esperado:
Apply complete! Resources: 16 added, 0 changed, 0 destroyed.
Outputs:
rancher_node_ip = "34.68.230.125"
rancher_server_url = "https://rancher.34.68.230.125.sslip.io"
workload_node_ip = "104.198.247.252"
init
564
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Acesse em seu navegador o endereço gerado em rancher_server_url.
Clique n o botão Avançado e no link Ir para rancher para aceitar o certificado.
Fig. 12.9: Provisionar o Rancher e Cluster na GCP com Terraform - ETAPA 1
Fig. 12.10: Provisionar o Rancher e Cluster na GCP com Terraform - ETAPA 2
Entre com o usuário admin a senha CursoRancher4Linux.
565
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.11: Provisionar o Rancher e Cluster na GCP com Terraform - ETAPA 3
Para visualizar os recursos do cluster, clique em quickstart-gcp-custom na área de EXPLORE CLUSTER.
Fig. 12.12: Provisionar o Rancher e Cluster na GCP com Terraform - ETAPA 4
Como resultado final temos um Rancher com cluster kubernetes provisionado na GCP
através do terraform!
566
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.13: Provisionar o Rancher e Cluster na GCP com Terraform - ETAPA 5
Para remover os recursos que o Terraform criou, execute o comando
terraform destroy.
terraform destroy --auto-approve
Resultado esperado:
google_compute_instance.rancher_server: Destruction complete after 1m55s
tls_private_key.global_key: Destroying... [id=81d179f0562fd7f5ecd42f64a3300fef17247c0b]
tls_private_key.global_key: Destruction complete after 1s
google_compute_address.rancher_server_address: Destroying... [id=projects/cluster2-346911/
regions/us-central1/addresses/rancher-server-ipv4-address]
google_compute_firewall.rancher_fw_allowall: Destroying... [id=projects/cluster2-346911/
global/firewalls/rancher-gcp-rancher-allowall]
google_compute_address.rancher_server_address: Still destroying... [id=projects/cluster2
-346911/regions/us-cen.../addresses/rancher-server-ipv4-address, 10s elapsed]
google_compute_firewall.rancher_fw_allowall: Still destroying... [id=projects/cluster2
-346911/global/firewalls/rancher-gcp-rancher-allowall, 10s elapsed]
google_compute_address.rancher_server_address: Destruction complete after 11s
google_compute_firewall.rancher_fw_allowall: Destruction complete after 11s
Destroy complete! Resources: 16 destroyed.
Lab 12.4 - Provisionar o Rancher e Cluster Kubernetes com provedor AWS
Neste laboratório vamos aprender como provisionar o Rancher e um cluster Kubernetes com
provedor AWS através do Terraform.
567
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Criar usuário e gerar chaves na AWS
ATENÇÃO: Se você não possui uma configuração de chaves para o seu usuário na AWS, siga
as instruções na Aula 2, “Lab 2.6 - Criar Cluster Kubernetes EKS”.
Provisionar o Rancher e Cluster na AWS com Terraform
Alterne para a instância custom e acesse a pasta
quickstart/aws:
cd ~/quickstart/aws
Renomeie o arquivo de variáveis utilizadas pelo Terraform:
mv terraform.tfvars.example terraform.tfvars
E em seguida edite o arquivo
terraform.tfvars
através do comando
vim terraform.tfvars
Defina os seguintes valores:
aws_access_key = "COLE_AQUI_SUA_aws_access_key"
aws_secret_key = "COLE_AQUI_SUA_aws_secret_key"
rancher_server_admin_password = "CursoRancher4Linux"
add_windows_node = false
aws_region = "us-east-1"
aws_session_token = ""
cert_manager_version = "1.7.1"
docker_version = "19.03"
instance_type = "t3a.medium"
prefix = "rancher-aws"
rancher_kubernetes_version = "v1.21.11+k3s1"
rancher_version = "v2.6.2"
vim:
568
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
windows_instance_type = "t3a.large"
workload_kubernetes_version = "v1.21.10-rancher1-1"
Antes de realizar o Deploy de uma instância com Terraform, execute o comando terraform
para inicializar o ambiente.
terraform init
Resultado esperado:
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Se estiver tudo ok, você precisa executar o comando
terraform apply.
terraform apply --auto-approve
Resultado esperado:
Apply complete! Resources: 3 added, 0 changed, 1 destroyed.
Outputs:
rancher_node_ip = "35.175.124.18"
rancher_server_url = "https://rancher.35.175.124.18.sslip.io"
windows-workload-ips = []
windows_password = <sensitive>
workload_node_ip = "3.232.131.17"
Acesse em seu navegador o endereço gerado em rancher_server_url.
Clique n o botão Avançado e no link Ir para rancher para aceitar o certificado.
init
569
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.14: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 1
Fig. 12.15: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 2
Entre com o usuário admin a senha CursoRancher4Linux.
570
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.16: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 3
Para visualizar os recursos do cluster, primeiro clique em Cluster Management.
Fig. 12.17: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 4
Em seguida clique no botão Explore do cluster quickstart-aws-custom
571
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.18: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 5
Como resultado final temos um Rancher com cluster kubernetes provisionado na AWS
através do terraform!
Fig. 12.19: Provisionar o Rancher e Cluster na AWS com Terraform - ETAPA 6
Para remover os recursos que o Terraform criou, execute o comando
terraform destroy --auto-approve
Resultado esperado:
terraform destroy.
572
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
aws_instance.rancher_server: Destruction complete after 2m13s
aws_security_group.rancher_sg_allowall: Destroying... [id=sg-0dac790ec17ba9796]
aws_key_pair.quickstart_key_pair: Destroying... [id=rancher-aws-rancher
-20220429180926857600000001]
aws_key_pair.quickstart_key_pair: Destruction complete after 1s
tls_private_key.global_key: Destroying... [id=243a3aee6c226e8883bf89d239a638db86aeb87e]
tls_private_key.global_key: Destruction complete after 0s
aws_security_group.rancher_sg_allowall: Destruction complete after 2s
Destroy complete! Resources: 15 destroyed.
Lab 12.5 - Provisionar o Rancher e Cluster Kubernetes com provedor Azure
Neste laboratório vamos aprender como provisionar o Rancher e um cluster Kubernetes com
provedor Azure através do Terraform.
O Terraform precisa do ID de client e secret do Azure para realizar o provisionamento
do ambiente. Para gerar esses IDs sera necessário registrar um aplicativo no AD do
Azure e criar um secret para esse aplicativo.
Registrar aplicativo no Azure AD
Para regitrar um aplicativo no no AD do Azure, clique no menu do portal e selecione na lista
o menu Azure Acitive Directory e clique na opção Exibir.
Fig. 12.20: Registrar aplicativo no Azure AD - ETAPA 1
573
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Em seguida clique em Registros de aplicativo ao lado esquerdo da tela.
Fig. 12.21: Registrar aplicativo no Azure AD - ETAPA 2
Depois clique no ícone + Novo registro.
Fig. 12.22: Registrar aplicativo no Azure AD - ETAPA 3
Digite app-rancher na caixa Nome e depois clique no botão Registrar.
574
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.23: Registrar aplicativo no Azure AD - ETAPA 4
Aproveite para copiar o ID do aplicativo (cliente) e colar em um arquivo de texto.
Fig. 12.24: Registrar aplicativo no Azure AD - ETAPA 5
Copie também o ID do diretório (locatário) e cole em um arquivo de texto.
575
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.25: Registrar aplicativo no Azure AD - ETAPA 6
Criar secret para o aplicativo no Azure AD
Para criar um novo certificado segredo, clique no link Adicionar um certificado ou segredo.
Fig. 12.26: Criar secret para o aplicativo no Azure AD - ETAPA 1
Em seguida clique no botão + Novo segredo do cliente.
576
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.27: Criar secret para o aplicativo no Azure AD - ETAPA 2
Na caixa descrição digite app-rancher e depois clique no botão Adicionar.
Fig. 12.28: Criar secret para o aplicativo no Azure AD - ETAPA 3
Aproveite para copiar o ID do secret e colar em um arquivo de texto.
577
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.29: Criar secret para o aplicativo no Azure AD - ETAPA 4
Definir atribuição de função o aplicativo no IAM
O próximo passo agora é gerenciar as assinaturas, através do ícone Assinaturas. Digite e
acesse assinatura na caixa de pesquisa.
Fig. 12.30: Definir atribuição de função o aplicativo no IAM - ETAPA 1
Na lista selecione a sua assinatura onde vamos gerenciar novos recursos.
578
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.31: Definir atribuição de função o aplicativo no IAM - ETAPA 2
Aproveite para copiar o ID da Assinatura e colar em um arquivo de texto.
Fig. 12.32: Definir atribuição de função o aplicativo no IAM - ETAPA 3
Próximo passo é clicar em IAM (Controle de acesso) ao lado esquerdo da tela.
579
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
O nosso objetivo é atribuir uma função a nossa aplicação app-rancher!
Fig. 12.33: Definir atribuição de função o aplicativo no IAM - ETAPA 4
Em seguida clique no botão Adicionar atribuição de função.
Fig. 12.34: Definir atribuição de função o aplicativo no IAM - ETAPA 5
Na lista selecione a função Proprietário e clique no botão Próximo.
580
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.35: Definir atribuição de função o aplicativo no IAM - ETAPA 6
Em seguida vamos selecionar um membro através do link + Selecionar membros.
Fig. 12.36: Definir atribuição de função o aplicativo no IAM - ETAPA 7
Na caixa Selecionar sera preciso digitar app-rancher depois clicar no botão Selecionar.
581
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.37: Definir atribuição de função o aplicativo no IAM - ETAPA 8
Em seguida clique no botão Próximo.
Fig. 12.38: Definir atribuição de função o aplicativo no IAM - ETAPA 9
A terminar clique no botão Examinar + atribuir.
582
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.39: Definir atribuição de função o aplicativo no IAM - ETAPA 10
Para validar se o aplicativo app-rancher tem função de Proprietário, clique na guia Atribuições
de função.
Fig. 12.40: Definir atribuição de função o aplicativo no IAM - ETAPA 11
Provisionar o Rancher e Cluster na Azure com Terraform
Alterne para a instância custom e acesse a pasta
quickstart/azure:
583
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
cd ~/quickstart/azure
Renomeie o arquivo de variáveis utilizadas pelo Terraform:
mv terraform.tfvars.example terraform.tfvars
E em seguida edite o arquivo
terraform.tfvars
através do comando
vim:
vim terraform.tfvars
Defina os seguintes valores:
azure_client_id = "COLE_AQUI_O_SEU_azure_client_id"
azure_client_secret = "COLE_AQUI_O_SEU_azure_client_secret"
azure_subscription_id = "COLE_AQUI_O_SEU_azure_subscription_id"
azure_tenant_id = "COLE_AQUI_O_SEU_azure_tenant_id"
rancher_server_admin_password = "CursoRancher4Linux"
windows_admin_password = ""
add_windows_node = false
azure_location = "Brazil South"
cert_manager_version = "1.7.1"
docker_version = "19.03"
instance_type = "Standard_D2as_v4"
prefix = "rancher-azure"
rancher_kubernetes_version = "v1.21.11+k3s1"
rancher_version = "v2.6.2"
workload_kubernetes_version = "v1.21.10-rancher1-1"
Antes de realizar o Deploy de uma instância com Terraform, execute o comando terraform
para inicializar o ambiente.
init
584
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
terraform init
Resultado esperado:
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
Se estiver tudo ok, você precisa executar o comando
terraform apply.
terraform apply --auto-approve
Resultado esperado:
Apply complete! Resources: 20 added, 0 changed, 0 destroyed.
Outputs:
rancher_node_ip = "20.226.57.80"
rancher_server_url = "https://rancher.20.226.57.80.sslip.io"
windows-workload-ips = []
workload_node_ip = "20.226.40.36"
Acesse em seu navegador o endereço gerado em rancher_server_url.
Clique n o botão Avançado e no link Ir para rancher para aceitar o certificado.
585
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.41: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 1
Fig. 12.42: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 2
Entre com o usuário admin a senha CursoRancher4Linux.
586
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.43: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 3
Para visualizar os recursos do cluster, primeiro clique em Cluster Management.
Fig. 12.44: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 4
Em seguida clique no botão Explore do cluster quickstart-azure-custom
587
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
Fig. 12.45: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 5
Como resultado final temos um Rancher com cluster kubernetes provisionado na
Azure através do terraform!
Fig. 12.46: Provisionar o Rancher e Cluster na Azure com Terraform - ETAPA 6
Para remover os recursos que o Terraform criou, execute o comando
terraform destroy --auto-approve
Resultado esperado:
terraform destroy.
588
12. Provisionar Rancher na GCP/AWS/Azure através do Terraform
Caique Araujo / caiquearaujoac@gmail.com
tls_private_key.global_key: Destruction complete after 0s
azurerm_network_interface.rancher-server-interface: Destruction complete after 6s
azurerm_public_ip.rancher-server-pip: Destroying... [id=/subscriptions/0009f13e-68f4-4cae-8
cb2-9e26239157a1/resourceGroups/rancher-azure-rancher-quickstart/providers/Microsoft.
Network/publicIPAddresses/rancher-server-pip]
azurerm_subnet.rancher-quickstart-internal: Destroying... [id=/subscriptions/0009f13e-68f4
-4cae-8cb2-9e26239157a1/resourceGroups/rancher-azure-rancher-quickstart/providers/
Microsoft.Network/virtualNetworks/rancher-azure-network/subnets/rancher-quickstartinternal]
azurerm_public_ip.rancher-server-pip: Still destroying... [id=/subscriptions/0009f13e-68f4
-4cae-8cb2-...k/publicIPAddresses/rancher-server-pip, 10s elapsed]
azurerm_subnet.rancher-quickstart-internal: Still destroying... [id=/subscriptions/0009f13e
-68f4-4cae-8cb2-...rk/subnets/rancher-quickstart-internal, 10s elapsed]
azurerm_public_ip.rancher-server-pip: Destruction complete after 10s
azurerm_subnet.rancher-quickstart-internal: Destruction complete after 11s
azurerm_virtual_network.rancher-quickstart: Destroying... [id=/subscriptions/0009f13e-68f4
-4cae-8cb2-9e26239157a1/resourceGroups/rancher-azure-rancher-quickstart/providers/
Microsoft.Network/virtualNetworks/rancher-azure-network]
azurerm_virtual_network.rancher-quickstart: Still destroying... [id=/subscriptions/0009f13e
-68f4-4cae-8cb2-.../virtualNetworks/rancher-azure-network, 10s elapsed]
azurerm_virtual_network.rancher-quickstart: Destruction complete after 13s
azurerm_resource_group.rancher-quickstart: Destroying... [id=/subscriptions/0009f13e-68f4-4
cae-8cb2-9e26239157a1/resourceGroups/rancher-azure-rancher-quickstart]
azurerm_resource_group.rancher-quickstart: Still destroying... [id=/subscriptions/0009f13e
-68f4-4cae-8cb2-...roups/rancher-azure-rancher-quickstart, 10s elapsed]
azurerm_resource_group.rancher-quickstart: Destruction complete after 16s
Download