Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trilha Opensanca | Developer Docker - Dia 04

B2519015997dff04abe2568ebb2cf729?s=47 Opensanca
October 10, 2017

Trilha Opensanca | Developer Docker - Dia 04

Apresentação do quarto dia da Trilha Developer que está sendo oferecida pelo grande amigo Rafael Pereira Girolineto.

B2519015997dff04abe2568ebb2cf729?s=128

Opensanca

October 10, 2017
Tweet

Transcript

  1. Docker Containers, Imagens e Cluster Dia #04

  2. Docker Swarm: • Roteia as requisições entre instâncias do mesmo

    serviço • Faz verificação de status • Mantém o nro de instâncias em execução • Permite escalar containers em uma ou mais máquinas
  3. Docker Swarm

  4. Estrutura do Swarm - Manager • Gerenciamento do estado do

    cluster • Gerenciamento dos serviços ◦ Balanceamento de carga ◦ Service Discovery ◦ Escalabilidade de serviços ◦ Distribuição dos Serviços no Cluster • Swarm API Endpoint • Pode executar containers dependendo do seu estado ◦ Active ou Drain • Pode ser transformado em worker ◦ docker node demote
  5. Estrutura do Swarm - Manager Um cluster com N Managers

    suporta a queda de (N - 1) / 2 Managers • Swarm com 1 manager suporta a queda de 0 managers • Swarm com 3 manager suporta a queda de 1 managers • Swarm com 5 manager suporta a queda de 2 managers Apesar de ser possível utilizar mais de 7 managers, não é recomendado por questões de performance (para manter todo o estado do cluster sincronizado)
  6. Estrutura do Swarm - Worker • Seu propósito é apenas

    executar containers. • Não influencia em nenhuma das operações dos Managers. • Não é possível criar um nó swarm com apenas um nó worker (sem managers) • Um worker pode ser promovido a Manager ◦ docker node promote
  7. Swarm - Execução de um Serviço

  8. Sujando as mãos no mar • Criar um nó no

    labs.play-with-docker.com docker swarm init --advertise-addr [IP Address] docker node ls • Tentar transformá-lo em worker docker node demote [id do node] • Inspecionar o nó docker node inspect [id do node] docker swarm join-token worker • Subir um serviço qualquer docker service create --name nginx -p 80:80 -d nginx:latest docker service ls docker container ps docker node ps
  9. Sujando mais as mãos no mar • Criar adicionar um

    worker (instanciar outro nó) [node2] docker swarm join [token][IP do Manager]:2377 [node2] docker node ls • Transformar novo nó em manager [node1] docker node ls [node1] docker node promote [ID do worker] [node2] docker node ls • Transformar node 1 nó em worker [node2] docker node demote [ID do node1] [node2] docker node ls [node1] docker node ls
  10. Sujando mais ainda as mãos no mar • Listar os

    containers em ambos os nós [node1] docker container ps [node2] docker container ps • Escalar o container para 20 instâncias [node2] docker service scale nginx=20 [node1] docker container ps [node2] docker container ps • Remover o worker (pelo broser, remover o node1) [node2] docker node ls [node2] docker container ps
  11. Dicas e Malemolências > docker node [comando] ls - Listar

    nós do cluster ps - Listar containers executando no nó rm - Remover um nó update - Alterar o estado de um nó inspect - Inspecionar o nó promote - Promove um nó para manager demote - Transforma em worker
  12. Swarm - Placement • É possível influenciar em quais nós

    do swarm serão distribuídos os containers de um serviço • Serviço GLOBAL terá uma instância em cada nó do swarm • Serviço REPLICATED será distribuído pelo cluster, de acordo com regras de placement e carga das máquinas ◦ Placement: (spread) ▪ Busca por nós com o label utilizada no placement ▪ Distribui de maneira uniforme os containers de acordo com diferentes valores do label
  13. Swarm - Exemplo Placement docker service create --replicas 9 --name

    redis --placement-pref 'spread=node.labels.datacenter' Redis:latest Supondo que existam 6 nós com o label datacenter, como seria a distribuição dos containers? datacenter=america : node_1, node_4, node_6 datacenter=europa : node_2, node_5 datacenter=africa : node_3
  14. Stack

  15. version: '3' services: c_mongo: image: mongo:latest volumes: - ./node-rest-example/data:/data/db node_server:

    image: rafapg/os-td-nodeserver:latest ports: - 8080:3000 links: - c_mongo depends_on: - c_mongo docker-compose.yml
  16. Segurança

  17. Segurança no Swarm • Quando um cluster é criado o

    nó inicial asusme papel de CA ◦ --external-ca sobrescreve esse comportamento • Dois tokens (workers / managers) são gerados para garantir que apenas nós designados entrem no cluster ◦ digest do certificado root + segredo gerado aleatoriamente • Quando um nó entra no cluster o manager emite um novo certificado • Os certificados TLS são utilizados na autenticação, autorização e criptografia de toda comunicação no cluster Swarm
  18. Segurança no Swarm

  19. Segurança no Swarm • Rotação dos Certificados ◦ Rotacionados a

    cada 3 meses (pode ser configurado) ◦ É possível forçar a troca do certificado (caso tenha sido comprometido) • Troca de certificado ◦ Um certificado novo é gerado e assinado pelo antigo ▪ Isso garante que todos os nós que confiavam no certificado antigo aceitarão o novo certificado ◦ Os managers solicita que todos os workers gerem novos certificados ◦ O certificado antigo é removido (tokens de join mudam a partir disso)
  20. Bibliotecas e Utilitários

  21. None
  22. None
  23. None
  24. None
  25. Perguntas& Dúvidas& Certezas& Elogios& Containers

  26. Obrigado!!! f fb.com/rafael.girolineto @rafakareka rafapg rafapg.85@gmail.com