SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Publicando WSO2 API Manager no
Kubernetes
08 Setembro 2020
Hello!
Francisco Ribeiro
Lead Solutions Engineer
francisco@wso2.com
● Introdução ao Kubernetes
● Por quê Kubernetes?
● K8s Deployment Architecture
● Demos
○ Deploy WSO2 API Manager with Analytics in Google Kubernetes
Engine (GKE)
○ Aplicar rolling updates no WSO2 API Manager com zero downtime
- wum update no gateway
○ Autoscaling do WSO2 API Manager Gateway baseado no load de
produção
● Melhores práticas no deploy do WSO2 API Manager em K8s
Agenda
3
Kubernetes
Kubernetes
● Kubernetes (K8s) é um sistema de open source para gerenciar
aplicações "containerizada" em vários hosts, fornecendo mecanismos
básicos para implantação, manutenção e escalonamento de
aplicativos
● By Google
○ Borg, Omega, and Kubernetes - Lições aprendidas a partir de 3
sistemas de gerenciamento de container em uma década
○ https://ai.google/research/pubs/pub44843
5
Outros Players..
● Docker Swarm
● OpenShift
● Apache Mesos + DCOS
● Rancher
6
Por que Kubernetes?
● Autohealing/ Autoscaling
○ Se um container falha no Docker, sua aplicação para de funcionar
○ K8s automaticamente iniciaria um novo container, e garantiria que
sua aplicação sempre tenha o número especificado de containers
executando.
○ K8s pode realizar o scale up/down dinamicamente baseado no
uso dos recursos (Horizontal Pod Autoscaling)
Por quê k8s? - Autohealing/Autoscaling
8
● Service Discovery
○ Precisa escalar containers/reiniciar um existente? No docker, será
necessário lidar com os IPs, etc.
○ K8s provê uma abstração sobre os endereços de IP, e com isso
toda essa parte de IPs é realizada automática
○ Load Balancing de Endpoints e endereçamento consistent é
disponível OOTB
Por quê k8s? - Networking/Port Mapping
9
● Roteamento Multi-host
○ Por padrão usa Bridge networking - limitada ao mesmo docker
host!
○ Um deployment real pode se estender entre múltiplos hosts
Por quê k8s? - Networking/Port Mapping...
10
11
https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0
● Consistência de Storage
○ Docker volume mounts - limitado à máquina host do docker
○ K8s Persistent Volumes - funciona em várias máquinas, tem
suporte a multi cloud
○ Pode estender suporte para múltiplos Cloud Storage Service
Providers
Por quê k8s? - Storage
12
13
https://blog.lwolf.org/post/how-i-deployed-glusterfs-cluster-to-kubernetes/
● K8s Probes
○ Critérios definidos pelo usuário para determinar saúde e
prontidão dos serviços nos containers implantados;
○ K8s realiza o scaling, healing makes scaling, healing, e decisões
de eviction baseado nessas checagens;
Por quê k8s? - Health Checks e Monitoramento
14
● Extensibilidade de Logging e Stats
○ K8s provê suporte extensivo e integração nativa a log analyzers e
sistema de monitoramento de métricas
■ Log Drivers
■ Prometheus
○ K8s possui um dashboard contendo informação de auditoria e
saúde do cluster
Por quê k8s? - Health Checks e Monitoramento...
15
● K8s para um usuário final é uma REST API
○ Pode interagir com artefatos declarativos baseados em YAML ou
através de comandos imperativos diretos
Por quê k8s? - Orchestration and DevOps
16
● K8s can schedule workloads based on resource availability
○ Cada workload pode definir os recursos que necessita para
cargas máximas e os recursos com os quais pode trabalhar em
média
Por quê k8s? - Resource Management
17
K8S Deployment Architecture
19
Container Networking Interface
Node1
Container1
Docker Runtime
Container1Container1Container1Container1Container1ContainerN
Node2
Container1
Docker Runtime
Container1Container1Container1Container1Container1ContainerN
Node3
Container1
Docker Runtime
Container1Container1Container1Container1Container1ContainerN
K8s Master
kubectl (CLI)
20
https://medium.com/containermind/a-reference-architecture-for-deploying-wso2-middleware-on-kuberne
tes-d4dee7601e8e
Hora da Demo
21
22
Demo Agenda
• Deploy do WSO2 API Manager com Analytics no Google Kubernetes
Engine (GKE)
– Usando Helm Charts para o Pattern #1 com o gateway apartado
– Deploy NGINX Ingress Controller
– Acessar os Management Consoles
– Deploy a API de exemplo: PizzaShack API
• Aplicar rolling updates no WSO2 API Manager com zero downtime -
wum update no gateway
• Autoscaling do WSO2 API Manager Gateway baseado no load de
produção
Deploy WSO2 API Manager com
Analytics no Google Kubernetes Engine
(GKE)
● Instalar gcloud-sdk
○ https://cloud.google.com/sdk/install
● Instalar kubectl (compatível with v1.15)
○ https://kubernetes.io/docs/tasks/tools/install-kubectl/
● Instalar Git
○ https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
● Instalar Helm
● https://helm.sh/docs/intro/install/
● Criar um projeto no Google Cloud Platform
○ https://cloud.google.com/resource-manager/docs/creating-managing-pro
jects
In order to use WSO2 Kubernetes resources, you need an active WSO2 subscription.
If you do not possess an active WSO2 subscription already, you can sign up for a
WSO2 Free Trial Subscription from here.
Instalar Pré-Requisitos
24
25
Nginx Ingress Controller
● Instalar o Nginx Ingress Controller
helm install nginx-ingress ingress-nginx/ingress-nginx 
--namespace ingress-nginx 
--set controller.replicaCount=1 
--set
controller.nodeSelector."beta.kubernetes.io/os"=linux 
--set
defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux
26
Aplicar rolling updates no WSO2 API
Manager com zero downtime
Autoscaling do WSO2 API Manager
Gateway baseado no load de produção
29
Como o HPA funciona?
Melhores práticas com Kubernetes
31
Reduza o armazenamento local não reproduzível
Containers são efêmeros
32
Evitar múltiplos arquivos de configuração complexos
A complexidade da configuração determina a complexidade do
bootstrap do container
33
Use um usuário non-root dentro do container
Evite o acesso ao host como usuário root
34
Use Readiness e Liveness probes
Readiness → a app está pronta para iniciar a servir o tráfego?
Liveness → a app ainda está executando?
35
Definir os resource limits e requests para os containers
resources:
requests:
memory: "2Gi"
cpu: "2000m"
limits:
memory: "3Gi"
cpu: "3000m"
36
Tenha como alvo imagens de Containers com tamanhos pequenos
Menos pull para fazer, menos tempo para iniciar
37
Experimente o WSO2 APIM no Kubernetes
Kubernetes-apim:
https://github.com/wso2/kubernetes-apim/tree/3.1.x
Kubernetes AM Operator:
https://github.com/wso2/k8s-wso2am-operator/tree/v1.0.0
Kubernetes Demo:
https://github.com/wso2brasil/webinar-k8s-apim-08-set-2020
Question Time!
wso2.com
Thanks!

Mais conteúdo relacionado

Mais procurados

Mais procurados (16)

Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container Engine
 
Containers and microservices orchestration
Containers and microservices orchestrationContainers and microservices orchestration
Containers and microservices orchestration
 
Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2Transformação Digital de Forma Pragmatica WSO2
Transformação Digital de Forma Pragmatica WSO2
 
[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos[TDC-Arquitetura Java] Pastoreando Gatos
[TDC-Arquitetura Java] Pastoreando Gatos
 
WSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e SuportesWSO2 - Portfólio de Produtos, Soluções e Suportes
WSO2 - Portfólio de Produtos, Soluções e Suportes
 
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
TDC2018SP | Trilha Blockchain - Criando minha Primeira Blockchain Privada (DL...
 
ContribDoc
ContribDocContribDoc
ContribDoc
 
Latinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native appsLatinoware - Quarkus io cloud native apps
Latinoware - Quarkus io cloud native apps
 
Achieving DevSecOps Outcomes with Tanzu Advanced - Portuguese
Achieving DevSecOps Outcomes with Tanzu Advanced - PortugueseAchieving DevSecOps Outcomes with Tanzu Advanced - Portuguese
Achieving DevSecOps Outcomes with Tanzu Advanced - Portuguese
 
Containers e DevOps
Containers e DevOps Containers e DevOps
Containers e DevOps
 
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTSProvisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
Provisionando ambientes de Dev e Teste com Azure DevTest Labs e VSTS
 
Arquitetura Serverless na AWS
Arquitetura Serverless na AWSArquitetura Serverless na AWS
Arquitetura Serverless na AWS
 
Multicloud APIs Deployment using Azure DevOps, AKS, GKE and OpenShift
Multicloud APIs Deployment using Azure DevOps, AKS, GKE and OpenShiftMulticloud APIs Deployment using Azure DevOps, AKS, GKE and OpenShift
Multicloud APIs Deployment using Azure DevOps, AKS, GKE and OpenShift
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Serverless no Google Cloud
Serverless no Google CloudServerless no Google Cloud
Serverless no Google Cloud
 
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
Aplicações Distribuídas com Azure Service Bus + Azure Functions - Azure Tech ...
 

Semelhante a Publicando WSO2 API Manager no Kubernetes (Portuguese)

Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
Alvaro Viebrantz
 

Semelhante a Publicando WSO2 API Manager no Kubernetes (Portuguese) (20)

Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Opções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e ArquiteturasOpções de Backends para seus apps móveis: Análise e Arquiteturas
Opções de Backends para seus apps móveis: Análise e Arquiteturas
 
TDC - Da presença online ao Cloud Computing
TDC - Da presença online ao Cloud ComputingTDC - Da presença online ao Cloud Computing
TDC - Da presença online ao Cloud Computing
 
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
Docker de ponta a ponta - do Desenvolvimento à Nuvem - .NET SP - Outubro-2018
 
Monitoramento de containers Docker
Monitoramento de containers DockerMonitoramento de containers Docker
Monitoramento de containers Docker
 
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
Docker de ponta a ponta: do Desenvolvimento à Nuvem - Azure Talks - Agosto-2018
 
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOpsGerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
Gerenciando Clusters Kubernetes usando Cluster API, Azure Arc e GitOps
 
Iniciando com kubernetes
Iniciando com kubernetesIniciando com kubernetes
Iniciando com kubernetes
 
Containers em produção!
Containers em produção!Containers em produção!
Containers em produção!
 
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetesk6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
k6: Performance Engineering, Monitoramento e Teste de um HPA no Kubernetes
 
Conhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetesConhecendo o AKS, o azure container services com kubernetes
Conhecendo o AKS, o azure container services com kubernetes
 
Introdução a Kubernetes
Introdução a KubernetesIntrodução a Kubernetes
Introdução a Kubernetes
 
O poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e KubernetesO poder dos microsserviços com Docker e Kubernetes
O poder dos microsserviços com Docker e Kubernetes
 
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
Docker + Kubernetes + Azure: opções disponíveis para uso de Containers na nuv...
 
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideiasLatinoware 2019 - Kubernetes a plataforma de grandes ideias
Latinoware 2019 - Kubernetes a plataforma de grandes ideias
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 
DevOps & Docker com a stack Microsoft
DevOps & Docker com a stack MicrosoftDevOps & Docker com a stack Microsoft
DevOps & Docker com a stack Microsoft
 
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na PráticaKubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
Kubernetes na Nuvem | Minicurso Gratuito - Azure na Prática
 
Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!Flask e Docker - rumo a AWS!
Flask e Docker - rumo a AWS!
 
Drupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container EngineDrupal Camp CI&T - Kubernetes and Google Container Engine
Drupal Camp CI&T - Kubernetes and Google Container Engine
 

Mais de WSO2

Mais de WSO2 (20)

Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
 
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data PlatformLess Is More: Utilizing Ballerina to Architect a Cloud Data Platform
Less Is More: Utilizing Ballerina to Architect a Cloud Data Platform
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
WSO2CON 2024 - Unlocking the Identity: Embracing CIAM 2.0 for a Competitive A...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
WSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the CloudWSO2CON 2024 - Elevating the Integration Game to the Cloud
WSO2CON 2024 - Elevating the Integration Game to the Cloud
 
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & InnovationWSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
WSO2CON 2024 - OSU & WSO2: A Decade Journey in Integration & Innovation
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
WSO2CON 2024 - IoT Needs CIAM: The Importance of Centralized IAM in a Growing...
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital BusinessesWSO2CON 2024 - Software Engineering for Digital Businesses
WSO2CON 2024 - Software Engineering for Digital Businesses
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Publicando WSO2 API Manager no Kubernetes (Portuguese)

  • 1. Publicando WSO2 API Manager no Kubernetes 08 Setembro 2020
  • 2. Hello! Francisco Ribeiro Lead Solutions Engineer francisco@wso2.com
  • 3. ● Introdução ao Kubernetes ● Por quê Kubernetes? ● K8s Deployment Architecture ● Demos ○ Deploy WSO2 API Manager with Analytics in Google Kubernetes Engine (GKE) ○ Aplicar rolling updates no WSO2 API Manager com zero downtime - wum update no gateway ○ Autoscaling do WSO2 API Manager Gateway baseado no load de produção ● Melhores práticas no deploy do WSO2 API Manager em K8s Agenda 3
  • 5. Kubernetes ● Kubernetes (K8s) é um sistema de open source para gerenciar aplicações "containerizada" em vários hosts, fornecendo mecanismos básicos para implantação, manutenção e escalonamento de aplicativos ● By Google ○ Borg, Omega, and Kubernetes - Lições aprendidas a partir de 3 sistemas de gerenciamento de container em uma década ○ https://ai.google/research/pubs/pub44843 5
  • 6. Outros Players.. ● Docker Swarm ● OpenShift ● Apache Mesos + DCOS ● Rancher 6
  • 8. ● Autohealing/ Autoscaling ○ Se um container falha no Docker, sua aplicação para de funcionar ○ K8s automaticamente iniciaria um novo container, e garantiria que sua aplicação sempre tenha o número especificado de containers executando. ○ K8s pode realizar o scale up/down dinamicamente baseado no uso dos recursos (Horizontal Pod Autoscaling) Por quê k8s? - Autohealing/Autoscaling 8
  • 9. ● Service Discovery ○ Precisa escalar containers/reiniciar um existente? No docker, será necessário lidar com os IPs, etc. ○ K8s provê uma abstração sobre os endereços de IP, e com isso toda essa parte de IPs é realizada automática ○ Load Balancing de Endpoints e endereçamento consistent é disponível OOTB Por quê k8s? - Networking/Port Mapping 9
  • 10. ● Roteamento Multi-host ○ Por padrão usa Bridge networking - limitada ao mesmo docker host! ○ Um deployment real pode se estender entre múltiplos hosts Por quê k8s? - Networking/Port Mapping... 10
  • 12. ● Consistência de Storage ○ Docker volume mounts - limitado à máquina host do docker ○ K8s Persistent Volumes - funciona em várias máquinas, tem suporte a multi cloud ○ Pode estender suporte para múltiplos Cloud Storage Service Providers Por quê k8s? - Storage 12
  • 14. ● K8s Probes ○ Critérios definidos pelo usuário para determinar saúde e prontidão dos serviços nos containers implantados; ○ K8s realiza o scaling, healing makes scaling, healing, e decisões de eviction baseado nessas checagens; Por quê k8s? - Health Checks e Monitoramento 14
  • 15. ● Extensibilidade de Logging e Stats ○ K8s provê suporte extensivo e integração nativa a log analyzers e sistema de monitoramento de métricas ■ Log Drivers ■ Prometheus ○ K8s possui um dashboard contendo informação de auditoria e saúde do cluster Por quê k8s? - Health Checks e Monitoramento... 15
  • 16. ● K8s para um usuário final é uma REST API ○ Pode interagir com artefatos declarativos baseados em YAML ou através de comandos imperativos diretos Por quê k8s? - Orchestration and DevOps 16
  • 17. ● K8s can schedule workloads based on resource availability ○ Cada workload pode definir os recursos que necessita para cargas máximas e os recursos com os quais pode trabalhar em média Por quê k8s? - Resource Management 17
  • 19. 19 Container Networking Interface Node1 Container1 Docker Runtime Container1Container1Container1Container1Container1ContainerN Node2 Container1 Docker Runtime Container1Container1Container1Container1Container1ContainerN Node3 Container1 Docker Runtime Container1Container1Container1Container1Container1ContainerN K8s Master kubectl (CLI)
  • 22. 22 Demo Agenda • Deploy do WSO2 API Manager com Analytics no Google Kubernetes Engine (GKE) – Usando Helm Charts para o Pattern #1 com o gateway apartado – Deploy NGINX Ingress Controller – Acessar os Management Consoles – Deploy a API de exemplo: PizzaShack API • Aplicar rolling updates no WSO2 API Manager com zero downtime - wum update no gateway • Autoscaling do WSO2 API Manager Gateway baseado no load de produção
  • 23. Deploy WSO2 API Manager com Analytics no Google Kubernetes Engine (GKE)
  • 24. ● Instalar gcloud-sdk ○ https://cloud.google.com/sdk/install ● Instalar kubectl (compatível with v1.15) ○ https://kubernetes.io/docs/tasks/tools/install-kubectl/ ● Instalar Git ○ https://git-scm.com/book/en/v2/Getting-Started-Installing-Git ● Instalar Helm ● https://helm.sh/docs/intro/install/ ● Criar um projeto no Google Cloud Platform ○ https://cloud.google.com/resource-manager/docs/creating-managing-pro jects In order to use WSO2 Kubernetes resources, you need an active WSO2 subscription. If you do not possess an active WSO2 subscription already, you can sign up for a WSO2 Free Trial Subscription from here. Instalar Pré-Requisitos 24
  • 25. 25 Nginx Ingress Controller ● Instalar o Nginx Ingress Controller helm install nginx-ingress ingress-nginx/ingress-nginx --namespace ingress-nginx --set controller.replicaCount=1 --set controller.nodeSelector."beta.kubernetes.io/os"=linux --set defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux
  • 26. 26
  • 27. Aplicar rolling updates no WSO2 API Manager com zero downtime
  • 28. Autoscaling do WSO2 API Manager Gateway baseado no load de produção
  • 29. 29 Como o HPA funciona?
  • 31. 31 Reduza o armazenamento local não reproduzível Containers são efêmeros
  • 32. 32 Evitar múltiplos arquivos de configuração complexos A complexidade da configuração determina a complexidade do bootstrap do container
  • 33. 33 Use um usuário non-root dentro do container Evite o acesso ao host como usuário root
  • 34. 34 Use Readiness e Liveness probes Readiness → a app está pronta para iniciar a servir o tráfego? Liveness → a app ainda está executando?
  • 35. 35 Definir os resource limits e requests para os containers resources: requests: memory: "2Gi" cpu: "2000m" limits: memory: "3Gi" cpu: "3000m"
  • 36. 36 Tenha como alvo imagens de Containers com tamanhos pequenos Menos pull para fazer, menos tempo para iniciar
  • 37. 37 Experimente o WSO2 APIM no Kubernetes Kubernetes-apim: https://github.com/wso2/kubernetes-apim/tree/3.1.x Kubernetes AM Operator: https://github.com/wso2/k8s-wso2am-operator/tree/v1.0.0 Kubernetes Demo: https://github.com/wso2brasil/webinar-k8s-apim-08-set-2020