AWS EC2 Container Service (ECS) In Action - iMasters Developer Week - Vitoria

25
Container Service in Action

Transcript of AWS EC2 Container Service (ECS) In Action - iMasters Developer Week - Vitoria

Container Service in Action

Heitor Vital

● Áreas de Atuação o Cloud Computing o Segurança Informação o Jogos o Dispositivos Móveis o …

● Acadêmico o MBA FGV o Mestrado UFPE o Graduação UFPE

br.linkedin.com/in/heitorvital

twitter.com/heitorvital

hvital.blogspot.com.br

labs.siteblindado.com

Antes o mundo era simples 1 Server + LAMP, agora ...

Matrix from Hell

Transporte de carga pré-1960

Solução Transportes

Docker is a shipping container system for code

Docker enables any application and its dependencies to be packaged up as a lightweight, portable, self-sufficient container

Vantagens

● Developers o Inside the box (code) o Build once...run anywhere

● SysAdmins / DevOps o Outside the box (infra) o Configure once...run anything

Virtual Machines X Containers

Segurança

● Ambientes Isolados o Filesystem: root filesystem separado o Resource: cpu e memória isolados via cgroups o Network: namespace próprio, virtual interface e IP próprio

● Isso é suficiente?? o 6 CVEs em 2014 o Relativamente baixo ainda :)

Docker Timeline

● 01/2013 - Projeto interno (dotCloud) ● 03/2013 - PyCon US + Docker 0.1 ● 09/2013 - RedHat + Docker 0.6 ● 01/2014 - $15M Greylock Partners ● 04/2014 - Suporte Elastic Beanstalk ● 09/2014 - $40M Sequoia Capital ● 11/2014 - Suporte ECS (EC2 Container Service)

Docker on AWS

● Configuration & Deployment ● Microservices ● Batch processing

Facilidades

Cluster management Scaling Scheduling Security Extensible

Key Components

● Containers Instances o EC2 Instances o Docker daemon o ECS Agent (connect to clusters)

● Clusters o Grupo de Containers Instances o Pode ser de tipos diferentes o Multi-AZ Support

● Tasks [Definition] o Grupo de containers

relacionados o Executado nos

Containers Instances

● Containers o Docker container o Executor de task

“Hands-On”

Configurar CLI

Toda execução do Amazon ECS é via AWS CLI. Referência

$  sudo  easy_install  pip  

$  sudo  pip  install  awscli  

$  aws  configure

Create Cluster

$  aws  ecs  create-­‐cluster  -­‐-­‐cluster-­‐name  iMastersCluster  

{          "cluster":  {                  "clusterName":  "iMastersCluster",                    "status":  "ACTIVE",                    "clusterArn":  "arn:aws:ecs:us-­‐east-­‐1:748809930145:cluster/iMastersCluster"          }  }

Create Container Instances

Usar template do CloudFormation de exemplo https://s3.amazonaws.com/amazon-ecs-cloudformation/Amazon_ECS_Quickstart.template

List Container Instances

$  aws  ecs  list-­‐container-­‐instances  -­‐-­‐cluster  iMastersCluster  

{          "containerInstanceArns":  [                  "arn:aws:ecs:us-­‐east-­‐1:748809930145:container-­‐instance/4b89a26c-­‐a9ea-­‐4149-­‐bb20-­‐ccbb50828860"          ]  }

CUIDADO: Esperar um tempo. Se a lista estiver vazia, esperar mais um pouco!

Register Task Definition

$  aws  ecs  register-­‐task-­‐definition  -­‐-­‐cli-­‐input-­‐json  file://task.json  

{      "containerDefinitions":  [          {              "name":  “sleep",  "image":  “busybox”,  "cpu":  10,              "command":  ["sleep","360"],              "memory":  10,"essential":  true          }      ],      "family":  "sleep360"  }

NOTAS: Aqui não é output do comando. É o conteúdo do arquivo | 1.024 cpu units por core | Mínimo de 4MB RAM por container

List Task Definitions

$  aws  ecs  list-­‐task-­‐definitions  

{          "taskDefinitionArns":  [                  "arn:aws:ecs:us-­‐east-­‐1:748809930145:task-­‐definition/sleep360:1",                    "arn:aws:ecs:us-­‐east-­‐1:748809930145:task-­‐definition/sleep360:2"          ]  }

Run Task

$  aws  ecs  run-­‐task  -­‐-­‐cluster  iMastersCluster    

                                     -­‐-­‐task-­‐definition  sleep360:1    

                                     -­‐-­‐count  1  

{        //  Output  grande  com  detalhes  da  task  }

NOTAS: Aqui não é output do comando. É o conteúdo do arquivo | 1.024 cpu units por core | Mínimo de 4MB RAM por container

Check running Task

$  aws  ecs  list-­‐tasks  -­‐-­‐cluster  iMastersCluster  

{          "taskArns":  [                  "arn:aws:ecs:us-­‐east-­‐1:748809930145:task/b2fae186-­‐4cdd-­‐4f18-­‐ad1d-­‐e38d637f9c80"          ]  }  

OU  SSH  na  máquina  $  docker  ps  

$  docker  inspect  CONTAINER_ID

Referências

Ainda teremos muitas novidades em breve. Produto ainda em PREVIEW

1. https://aws.amazon.com/ecs/ 2. http://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html 3. https://aws.amazon.com/blogs/aws/ec2-container-service-in-action/ 4. https://www.youtube.com/watch?v=2vJLS8qfhI0 5. https://www.youtube.com/watch?v=JIuyCgNg8io 6. https://www.youtube.com/watch?v=LE5uBqNp2Ds 7. http://docs.aws.amazon.com/cli/latest/reference/ecs/index.html 8. https://github.com/aws/amazon-ecs-agent 9. https://www.docker.com/ 10.http://www.dockerbook.com/ 11.http://scm.zoomquiet.io/data/20131004215734/index.html

OBRIGADO !!br.linkedin.com/in/heitorvital

twitter.com/heitorvital

hvital.blogspot.com.br

labs.siteblindado.com

Heitor Vital