kaws - deploying kubernetes clusters using aws, coreos, terraform and rust

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

Upload: kubeacademy

Post on 22-Jan-2018

1.067 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

@jimmycuadra

Page 2: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

KUBERNETES IS THE FUTURE

Page 3: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

Page 4: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust
Page 5: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Reproducible infrastructure

Page 6: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust
Page 7: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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" }

Page 8: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ terraform plan

Page 9: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

Page 10: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ terraform apply

Page 11: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Provisioning

Page 12: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Workflow

Page 13: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

INTRODUCING KAWS

Page 14: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Goals

Page 15: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Infrastructure as code

Page 16: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Production grade Kubernetes clusters

Page 17: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Secure access credentials

Page 18: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

Shell scripts

Page 19: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust
Page 20: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

Page 21: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

Page 22: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ cat terraform/main.tf

module "kaws" { source = "github.com/InQuicker/kaws//terraform?ref=v0.1.0"

... }

Page 23: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ kaws key export [email protected]

Page 24: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

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

Page 25: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ 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

Page 26: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ 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

Page 27: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ kaws cluster apply staging

Page 28: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

kubernetes.example.com

Page 29: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

$ kaws admin create

$ kaws admin sign

$ kaws admin install

Page 30: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

OPEN SOURCED TODAY

Page 31: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

github.com/InQuicker/kaws

Page 32: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

THANK YOU@jimmycuadra

Page 33: KAWS - Deploying Kubernetes Clusters using AWS, CoreOS, Terraform and Rust

QUESTIONS?@jimmycuadra