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

CoreOS Bare Metal

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

CoreOS Bare Metal

Avatar for Dalton Hubble

Dalton Hubble

January 27, 2016
Tweet

More Decks by Dalton Hubble

Other Decks in Programming

Transcript

  1. --- api_version: v1alpha1 groups: - name: Node 1 spec: etcd1

    require: uuid: 16e7d8a7-bfa9-428b-9117-363341bb330b mac: 52:54:00:89:d8:10 Matching Machines
  2. --- api_version: v1alpha1 groups: - name: Workers spec: worker require:

    region: us-central1 zone: us-central1-a - name: Default spec: default Matching Machines
  3. ├── cloud │ ├── etcd.yaml │ ├── master.sh │ └──

    worker.sh ├── config.yaml ├── ignition │ ├── etcd.json │ ├── master.json │ └── worker.json └── specs ├── etcd │ └── spec.json ├── master │ └── spec.json └── worker └── spec.json data • “Boot” Configs • Ignition Configs • Cloud Configs
  4. { "id": "master", "boot": { "kernel": "/assets/coreos/899.5.0/coreos_production_pxe.vmlinuz", "initrd": ["/assets/coreos/899.5.0/coreos_production_pxe_image.cpio.gz"], "cmdline":

    { "cloud-config-url": "http://config.srv:8080/cloud?uuid={{uuid}}&mac={{mac}}”, "coreos.config.url": "http://config.srv:8080/ignition?uuid={{uuid}}&mac={{mac}}", "coreos.first_boot": "" } }, "cloud_id": "master.sh", "ignition_id": "master.json" } Specification
  5. #cloud-config coreos: etcd2: name: node1 initial-cluster: node1=http://172.15.0.21:2380,node2=http://172. 15.0.22:2380,node3=http://172.15.0.23:2380 initial-advertise-peer-urls: http://172.15.0.21:2380

    advertise-client-urls: http://172.15.0.21:2379 listen-client-urls: http://0.0.0.0:2379 listen-peer-urls: http://172.15.0.21:2380 units: - name: etcd2.service command: start - name: fleet.service command: start Cloud Config
  6. { "ignitionVersion": 1, "networkd": { "units": [ { "name": "00-ens3.network",

    "contents": "[Match]\nName=ens3\n\n[Network]\nGateway=172. 15.0.1\nAddress=172.15.0.21" } ] } } Ignition (better)
  7. • iPXE, PXE->iPXE • Pixiecore • GNU GRUB (upcoming) •

    PXE via TFTP (possibly) Network Boot Endpoints
  8. $ docker pull quay.io/coreos/dnsmasq $ sudo docker run --rm --cap-add=NET_ADMIN

    quay. io/coreos/dnsmasq -d -q --dhcp-range=172. 17.0.43,172.17.0.99 --enable-tftp --tftp- root=/var/lib/tftpboot --dhcp-userclass=set:ipxe,iPXE --dhcp-boot=tag:#ipxe,undionly.kpxe --dhcp-boot=tag: ipxe,http://172.17.0.2:8080/boot.ipxe dnsmasq
  9. $ sudo ./acifile $ sudo rkt run dnsmasq.aci --net=metal0 --

    -d -q -- dhcp-range=172.15.0.50,172.15.0.99 --enable-tftp -- tftp-root=/var/lib/tftpboot --dhcp-userclass=set: ipxe,iPXE --dhcp-boot=tag:#ipxe,undionly.kpxe -- dhcp-boot=tag:ipxe,http://bootcfg.foo:8080/boot.ipxe --dhcp-option=3,172.15.0.1 --address=/bootcfg. foo/172.15.0.2 dnsmasq
  10. $ sudo rkt run --net=metal0:IP=172.15.0.2 --mount volume=assets,target=/assets --volume assets,kind=host,source=$PWD/assets --mount

    volume=data,target=/data --volume data,kind=host,source=$PWD/examples/rkt quay.io/coreos/bootcfg -- -address=0.0.0.0:8080 - log-level=debug rkt run
  11. • Usability: Ignition Rendering, Metadata service, configuration improvements • Adopt:

    Ignition • Features: GNU Grub • Guides: ◦ rkt all the things! ◦ Cluster examples, common needs ◦ Disk installs, auto-updates, deployment • End to end Distributed Trusted Computing Roadmap
  12. • Bare Metal Config Service POC • Try it on

    your laptop with rkt or Docker - make a Kubernetes cluster • Try it on physical machines - make a Kubernetes cluster • Feedback / Contribute Summary
  13. May 9 & 10, 2016 | Berlin, Germany • Early

    bird tickets • Sponsorships are still available • Submit a talk before February 29th! coreos.com/fest @coreosfest
  14. CoreOS is running the world’s containers We’re hiring: [email protected] [email protected]

    90+ Projects on GitHub, 1,000+ Contributors coreos.com Support plans, training and more OPEN SOURCE ENTERPRISE