CoreOS @ summer meetup in Utrecht

19
Timo Derstappen @teemow

description

 

Transcript of CoreOS @ summer meetup in Utrecht

Page 1: CoreOS @ summer meetup in Utrecht

Timo Derstappen@teemow

Page 2: CoreOS @ summer meetup in Utrecht

● Simple Service Orchestration● Based in Cologne, Germany● Built on top of CoreOS

http://giantswarm.io

Giant Swarm

Page 3: CoreOS @ summer meetup in Utrecht

● Minimal OS to host your containers● Automatic Updates● Cluster Management● Service Discovery

Page 4: CoreOS @ summer meetup in Utrecht

CoreOS 101

● Minimal Gentoo● PXE, OpenStack, AWS, GCE, Vagrant● Systemd, btrfs● Read-only rootfs (writable overlay)

Page 5: CoreOS @ summer meetup in Utrecht

CoreOS own tools

● Etcd● Fleet● Locksmith● Cloud-config

github.com/coreos

Page 6: CoreOS @ summer meetup in Utrecht

Etcd

● Highly available K/V store● Basis for

○ Configuration management○ Service Discovery

● Raft consensus algorithm● REST Interface

Page 7: CoreOS @ summer meetup in Utrecht

Discovery API

$ curl https://discovery.etcd.io/newhttps://discovery.etcd.io/463c1435f9f63c952e0899b1f459c0fe

Page 8: CoreOS @ summer meetup in Utrecht

Cloud Config

● Initialization of your instances● Configure etcd, fleet, locksmith

Page 9: CoreOS @ summer meetup in Utrecht

Configure your cluster#cloud-config

coreos:

etcd:

discovery: https://discovery.etcd.io/<token>

addr: $private_ipv4:4001

peer-addr: $private_ipv4:7001

Page 10: CoreOS @ summer meetup in Utrecht

Locksmith

● Reboot strategies for CoreOS updates● Uses etcd for distributed locks

Page 11: CoreOS @ summer meetup in Utrecht

Fleet

● Fleet is systemd for the cluster● Uses etcd● CLI and API to start your containers

Page 12: CoreOS @ summer meetup in Utrecht

Fleet Scheduler

● Simple (eg. based on Metadata)● But resolves service dependencies!● More to come (eg. based on available

resources)

Page 13: CoreOS @ summer meetup in Utrecht

Unit file[Unit]Description=A Redis Server[Service]TimeoutStartSec=0EnvironmentFile=/etc/environmentEnvironment="IMAGE=teemow/redis"ExecStartPre=/usr/bin/docker pull $IMAGEExecStart=/bin/bash -c "exec /usr/bin/docker run --rm -p $COREOS_PRIVATE_IPV4::6379 --name %n $IMAGE"ExecStop=/usr/bin/docker stop %n

Page 14: CoreOS @ summer meetup in Utrecht

Launch a service# startfleetctl start redis.service# statusfleetctl list-unitsfleetctl status redis.servicefleetctl journal redis.service# stopfleetctl stop redis.servicefleetctl destroy redis.service

Page 15: CoreOS @ summer meetup in Utrecht

Release it!

● Load Balancer● App● Database

Page 16: CoreOS @ summer meetup in Utrecht

Sidekick

● Keep configuration out of your app

Page 17: CoreOS @ summer meetup in Utrecht

Ambassador

● Reverse proxy for your service

● Keep service discovery out of your app

Page 18: CoreOS @ summer meetup in Utrecht

CoreOS

● Great foundation to create flexible distributed infrastructures

● Unix philosophy

Page 19: CoreOS @ summer meetup in Utrecht

Timo Derstappen@teemow

http://giantswarm.io

Thanks for listening!