Slide 1

Slide 1 text

Kubernetes: Passado, presente e futuro.

Slide 2

Slide 2 text

Fernando Ike // linkedin.com/in/fernandoike // twitter.com/fernandoike // pontocafe.fernandoike.com

Slide 3

Slide 3 text

TEMOS VAGAS!! #VempraZup Tire foto do QR Code para ver as oportunidades. zup.com.br/vagas

Slide 4

Slide 4 text

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ A diferença do que é Container e VM

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

1979 Chroot para o Unix 7 História dos containers 1982 Adicionado no BSD 2000 Criado Jail no FreeBSD 2001 Criado Linux VServer 2004 Solaris Container 2005 Open VZ 2006 Process Containers/ Control Groups (cgroups) 2008 LXC 2013 LMCTFY* + Docker *Os conceitos que deram origem ao libcontainer. 2014 Kubernetes

Slide 7

Slide 7 text

Azure, AWS, Docker e VMWare anunciam suporte ao Kubernetes E a história do Kubernetes? Process Containers 2006 2008 Process Containers cgroups (Linux) 2014 2015 2017 2019 Primeiro Commit - Github Kubernetes Primeiro Release Borg Paper + Kubernetes doado para Cloud Native Computing Foundation + Hybrid Cloud suportada por soluções baseadas no K8s: IBM Cloud Paks, Google Anthos, AWS Outposts e Azure Arc

Slide 8

Slide 8 text

Container é uma unidade padrão de software que empacota o código e as suas dependências para que um aplicativo seja executada de forma rápida, confiável e portável O que é Container?

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

“Orquestração de container é um processo de automação de tarefas de implantação, gerenciamento, dimensionamento e rede de containers.” “Pode ser usado em qualquer ambiente onde é usado containers e pode ajudar na implementação da mesma aplicação em diferentes ambientes sem a necessidade de novos de redesenho.” https://www.redhat.com/en/topics/containers/what-is-container-orchestration

Slide 11

Slide 11 text

Borg vs Kubernetes https://kubernetes.io/

Slide 12

Slide 12 text

“Kubernetes é uma sistema open source para gerenciar aplicações conteinerizadas através de múltiplos servidores. Fornece mecanismos básicos para deploy, manutenção e escalabilidade das aplicações” O que é Kubernetes? https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/

Slide 13

Slide 13 text

Não é PaaS, apesar de ter funcionalidades típicas como Gerenciamento de deploys, escalabilidade, load balancing Não é um middleware Não é um Framework de processamento (Ex: Spark, Haddop) Não é Banco de dados (Ex: MySQL, PostgreSQL) Não é um Storage Cluster (Ex: Ceph, GlusterFS) Não é DevOps Não é Continuous Delivery Não é SRE O que não é

Slide 14

Slide 14 text

--- apiVersion: v1 kind: Pod metadata: creationTimestamp: null labels: run: nginx name: nginx spec: containers: - image: nginx:1.19 name: nginx ports: - containerPort: 80 resources: {} dnsPolicy: ClusterFirst restartPolicy: Always status: {} $ kubectl run nginx --image=nginx:1.19 --replicas=3 --port=80 $ kubectl expose pod nginx --port=80 --target-port=80 $ kubectl delete service nginx $ kubectl delete pod nginx Declarativo Imperativo

Slide 15

Slide 15 text

“Objetos são entidades persistentes num sistema Kubernetes. Kubernetes usa essas entidades para representar os estados do seu cluster. Especificamente, eles podem descrever quais aplicações conteinerizadas estão em execução, os recursos disponíveis para elas e as políticas sobre o comportamento delas.” Objetos

Slide 16

Slide 16 text

“São as menores unidades de computação que pode ser criada e gerenciada no Kubernetes. Um Pod é um grupo de um ou mais containers, com recursos de rede e armazenamento compartilhado e uma especificação de como executar os containers” Pod https://www.jeremyjordan.me/kubernetes/

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Distribuição dos PODs

Slide 19

Slide 19 text

Arquitetura https://thenewstack.io/kubernetes-an-overview/

Slide 20

Slide 20 text

Arquitetura https://kubernetes.io/

Slide 21

Slide 21 text

Control Plane

Slide 22

Slide 22 text

Control Plane https://kubernetes.io/

Slide 23

Slide 23 text

É um serviço de armazenamento chave-valor distribuído, ele fornece uma maneira confiável para armazenar dados que precisam ser acessados por um sistema distribuído ou por cluster de máquinas. Control Plane - etcd

Slide 24

Slide 24 text

Componente que expõe Kubernetes API. Control Plane - API Server https://kubernetes.io/

Slide 25

Slide 25 text

Tipos de agendamento: • Requisitos de recursos individuais ou coletivos • Restrições de hardware/software/política • especificação de afinidade e não afinidade por localidade de dados, interferência entre cargas de trabalhos e prazos. Control Plane - Scheduler Observa os Pods recém-criados sem nó atribuído e designa um nó para executá-los https://kubernetes.io/

Slide 26

Slide 26 text

Componente responsável pela execução dos controladores Control Plane - Controller Manager Node Controller Replication Controller Endpoints Controller Service Account e Token Controller https://kubernetes.io/

Slide 27

Slide 27 text

Gerencia a integração com um provedor de Cloud Control Plane - Cloud Controller Manager Node controller Route controller Service controller https://kubernetes.io/

Slide 28

Slide 28 text

Node/Nós https://kubernetes.io/

Slide 29

Slide 29 text

Controllers São loops de controles que monitoram o estado do cluster, eles fazem ou requisitam o que é necessário

Slide 30

Slide 30 text

Deployments ReplicaSet StatefulSets DaemonSet CronJob Principais Controllers

Slide 31

Slide 31 text

Comunicação no Cluster - Proxy https://kubernetes.io/

Slide 32

Slide 32 text

Comunicação no Cluster - Iptables https://kubernetes.io/

Slide 33

Slide 33 text

Comunicação no Cluster - IPVS https://kubernetes.io/

Slide 34

Slide 34 text

https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/ Kube-Proxy vs Iptables vs Calico

Slide 35

Slide 35 text

ClusterIP NodePort LoadBalancer ExternalName Ingress Container para o mundo - Services

Slide 36

Slide 36 text

Services - ClusterIP

Slide 37

Slide 37 text

Services - NodePort

Slide 38

Slide 38 text

Services - Load Balancer

Slide 39

Slide 39 text

Services - Ingress

Slide 40

Slide 40 text

Storage - Tipos awsElasticBlockStore downwardAPI hostPath quobyte azureDisk emptyDir iscsi rbd azureDisk fc (fibre channel) local scaleIO cephfs flexVolume nfs secret cinder flocker persistentVolumeClaim storageos configMap gcePersistentDisk projected vsphereVolume glusterfs portworxVolume

Slide 41

Slide 41 text

Storage - Provisioning

Slide 42

Slide 42 text

Container Storage Interface (CSI)

Slide 43

Slide 43 text

Segurança - Níveis de proteção https://kubernetes.io/

Slide 44

Slide 44 text

Content Delivery Network Web Application Firewall Origin Cloak IPS/IDS Anti-DDoS Segurança - Servidores/Datacenter

Slide 45

Slide 45 text

Acesso a API Server (Control plane) Acesso de rede aos Nodes (nodes) Limitar o acesso a API do IaaS pelo K8s Access to etcd Segurança - Infraestrutura

Slide 46

Slide 46 text

Acesso ao Kubernetes https://medium.com/@sureshpalemoni/kubernetes-authentication-and-authorization-with-x509-client-certificates-edbc3517c10

Slide 47

Slide 47 text

Autenticação (OpenID/OAuth2, X.509, JWT, RBAC, etc.) Implementação de Autenticação => OpenID/OAuth2, certificado x.509, JWT Implementar TLS no acesso a API do Kubernetes Restringir acesso via X.509, JWT, senha, etc... a API do Kubernetes Habilitar TLS no Ingress Política de acesso da Rede => Ingress, Egress, isolamento de container Criptografia dos secrets no etcd, Vault ou KMS de IaaS QoS para os PODs => Guaranteed (request), Burstable (limit), BestEffor (sem) Segurança - Acesso aos Workloads

Slide 48

Slide 48 text

Scanner das vulnerabilidades de dependências no Container e Sistema Operacional Assinar as imagens de containers (ex: Notary) Desabilitar usuários privilegiados (ex: root) Segurança - Containers

Slide 49

Slide 49 text

Implementar mTLS (mutual TLS) Limitar a qtde de portas expostas Dependências de terceiros Static Application Security Testing Dynamic Application Security Testing Segurança - Code

Slide 50

Slide 50 text

Camada de infraestrutura de baixa latência configurável projetada para lidar com alto volume de comunicação de processos em rede entre os serviços de infraestrutura de aplicações usando APIs. Service Mesh https://www.nginx.com/blog/what-is-a-service-mesh/

Slide 51

Slide 51 text

https://www.redhat.com/pt-br/topics/microservices/what-is-a-service-mesh Service Mesh

Slide 52

Slide 52 text

Sidecar proxy Service discovery Balanceador de Carga Criptografia Autenticação e Autorização Monitoramento/Observabilidade Service Mesh

Slide 53

Slide 53 text

Service Mesh Interface É uma coleção de especificações de Custom Resource Definitions (CRD) e Extension API Servers, essas APIs podem ser instaladas em qualquer cluster K8s e manipuladas pelas ferramentas padrão. https://smi-spec.io/

Slide 54

Slide 54 text

Traffic policy – políticas de identidade e criptografia de transporte entre as aplicações Traffic telemetry – captura das principais métricas como error rate e latẽncia entre os serviços Traffic management – gerenciamento do tráfego entre os diferentes serviços Service Mesh Interface

Slide 55

Slide 55 text

Consul Connect* Flagger Istio* Linkerd Maesh Meshery Rio Service Mesh Hub Open Service Mesh Service Mesh Interface

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

https://medium.com/@lawrence143/what-is-kubernetes-distribution-5fd6fe7c3d34 Kubernetes is new Linux

Slide 58

Slide 58 text

https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/ Kubernetes is new Linux Homologado na CNCF 112 distribuições Kubernetes ou versões gerenciadas (IaaS/PaaS)

Slide 59

Slide 59 text

Kubernetes is new Linux ‘Pure’ distributions ‘Plus’ distributions Kubernetes-as-a-service Limited-purpose distributions https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/

Slide 60

Slide 60 text

Hubble é uma plataforma distribuída para observabilidade em segurança e rede para aplicações Cloud Native Troubleshooting de apps no K8s

Slide 61

Slide 61 text

Hubble - Troubleshooting de apps no K8s

Slide 62

Slide 62 text

Projetos para colocar no radar

Slide 63

Slide 63 text

1.19 (LTS) - 1 ano.

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

O Futuro

Slide 66

Slide 66 text

https://github.com/kelseyhightower/kubernetes-the-hard-way https://wiki.aquasec.com/display/containers/Kubernetes+Architecture+101 https://blog.risingstack.com/the-history-of-kubernetes/ http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43438.pdf https://www.slideshare.net/egg9/kubernetes-introduction https://blog.aquasec.com/a-brief-history-of-containers-from-1970s-chroot-to-docker-2016 https://en.wikipedia.org/wiki/OS-level_virtualization https://cloud.ibm.com/docs/containers?topic=containers-kube_concepts https://smi-spec.io/ https://landscape.cncf.io/category=cloud-native-storage&grouping=category&zoom=250 https://kubernetes.io/docs https://www.alibabacloud.com/blog/getting-started-with-kubernetes-%7C-access-control-a-security-measure-in-kubernetes_596331 https://www.dnsstuff.com/rbac-vs-abac-access-control https://github.com/cilium/hubble https://ebpf.io/ https://github.com/cilium/cilium https://rtfm.co.ua/en/kubernetes-clusterip-vs-nodeport-vs-loadbalancer-services-and-ingress-an-overview-with-examples/ https://en.wikipedia.org/wiki/Intermodal_container https://www.pexels.com/photo/aerial-photo-of-buildings-and-roads-681335/ https://containerjournal.com/topics/container-ecosystems/kubernetes-distribution-what-it-is-and-what-it-isnt/ https://docs.aws.amazon.com/pt_br/eks/latest/userguide/calico.html Referências