Slide 1

Slide 1 text

KAWS Deploying Kubernetes Clusters using AWS, CoreOS, Terraform, and Rust @jimmycuadra

Slide 2

Slide 2 text

KUBERNETES IS THE FUTURE

Slide 3

Slide 3 text

$ export KUBERNETES_PROVIDER=aws $ curl -sS https://get.k8s.io | bash

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Reproducible infrastructure

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

resource "aws_elb" "frontend" { name = "frontend-load-balancer" listener { instance_port = 8000 instance_protocol = "http" lb_port = 80 lb_protocol = "http" } instances = ["${aws_instance.app.*.id}"] } resource "aws_instance" "app" { count = 5 ami = "ami-043a5034" instance_type = "m1.small" }

Slide 8

Slide 8 text

$ terraform plan

Slide 9

Slide 9 text

+ aws_instance.example ami: "" => "ami-043a5034" availability_zone: "" => "" instance_type: "" => "m1.small" key_name: "" => "" private_dns: "" => "" private_ip: "" => "" public_dns: "" => "" public_ip: "" => "" security_groups: "" => "" subnet_id: "" => ""

Slide 10

Slide 10 text

$ terraform apply

Slide 11

Slide 11 text

Provisioning

Slide 12

Slide 12 text

Workflow

Slide 13

Slide 13 text

INTRODUCING KAWS

Slide 14

Slide 14 text

Goals

Slide 15

Slide 15 text

Infrastructure as code

Slide 16

Slide 16 text

Production grade Kubernetes clusters

Slide 17

Slide 17 text

Secure access credentials

Slide 18

Slide 18 text

Shell scripts

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

$ kaws init my-companys-infrastructure $ cd my-companys-infrastructure $ git init

Slide 21

Slide 21 text

$ tree . !"" clusters !"" pubkeys #"" terraform #"" main.tf

Slide 22

Slide 22 text

$ cat terraform/main.tf module "kaws" { source = "github.com/InQuicker/kaws//terraform?ref=v0.1.0" ... }

Slide 23

Slide 23 text

$ kaws key export [email protected]

Slide 24

Slide 24 text

$ tree . !"" clusters !"" pubkeys $ #"" [email protected] #"" terraform #"" main.tf

Slide 25

Slide 25 text

$ kaws cluster create staging \ --ami ami-1234 \ --domain example.com \ --kubernetes-version 1.0.7 \ --instance-size m3.medium \ --ssh-key deployer \ --uid [email protected] \ --zone-id Z1D633PJN98FT9

Slide 26

Slide 26 text

$ tree . !"" clusters $ #"" staging $ !"" apiserver-key.pem.asc $ !"" apiserver.pem $ !"" ca-key.pem.asc $ !"" ca.pem $ !"" ca.srl $ !"" node-key.pem.asc $ !"" node.pem $ !"" openssl.cnf $ !"" terraform.tfstate $ #"" terraform.tfvars !"" pubkeys $ #"" [email protected] #"" terraform #"" main.tf

Slide 27

Slide 27 text

$ kaws cluster apply staging

Slide 28

Slide 28 text

kubernetes.example.com

Slide 29

Slide 29 text

$ kaws admin create $ kaws admin sign $ kaws admin install

Slide 30

Slide 30 text

OPEN SOURCED TODAY

Slide 31

Slide 31 text

github.com/InQuicker/kaws

Slide 32

Slide 32 text

THANK YOU @jimmycuadra

Slide 33

Slide 33 text

QUESTIONS? @jimmycuadra