Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Wercker on CoreOS
Matthew Hooker
March 16, 2015
Technology
4
350
Wercker on CoreOS
Matthew Hooker
March 16, 2015
Tweet
Share
More Decks by Matthew Hooker
See All by Matthew Hooker
Cloud-native DevOps†µ
mwhooker
0
78
Use ZooKeeper for discovery at converge time
mwhooker
3
240
Jones
mwhooker
1
530
Other Decks in Technology
See All in Technology
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
3
9.1k
プログラマがオブジェクト指向しても幸せになれない理由
shirayanagiryuji
0
140
Lessons Learned from Scaling Infrastructure as Code
joatmon08
0
800
さいきんのRaspberry Pi。 / osc22do-rpi
akkiesoft
6
5.2k
Oracle Cloud Infrastructure:2022年6月度サービス・アップデート
oracle4engineer
PRO
0
150
FoodTechにおける商流・金流・物流の進化/Evolution of Commercial, Financial, and Logistics in FoodTech
dskst
0
400
ラブグラフ紹介資料 〜プロダクト解体新書〜 / Lovegraph Product Deck
lovegraph
0
260
MoT TechTalk #12 タクシーアプリ『GO』大規模トラフィックを捌く分析データ基盤の全容に迫る!
mot_techtalk
1
370
データ分析で切り拓け! エンジニアとしてのデータ分析職キャリア戦略
ksnt
0
150
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
0
520
Strategyパターン
hankehly
0
140
IoTLT88-NTKanazawa-laundry-dry
yukima0707
0
230
Featured
See All Featured
Why Our Code Smells
bkeepers
PRO
324
55k
How to Ace a Technical Interview
jacobian
265
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
4
510
Automating Front-end Workflow
addyosmani
1351
200k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Fantastic passwords and where to find them - at NoRuKo
philnash
27
1.5k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
940
Fireside Chat
paigeccino
12
1.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
Faster Mobile Websites
deanohume
294
28k
Building Your Own Lightsaber
phodgson
94
4.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
315
19k
Transcript
wercker
wercker on CoreOS http://wercker.com @wercker
Wercker: automation driven development • Wercker is an automation platform
• ci/cd not ambitious enough • continuous is assumed
Interface • wercker.yml • Describe job environment • Describe a
work pipeline • Describe required services
Interface • wercker.yml • Describe job environment • Describe a
work pipeline • Describe required services box: tcnksm/gox@0.1.0
Interface • wercker.yml • Describe job environment • Describe a
work pipeline • Describe required services steps: -‐ script: name: install code: go get -‐v -‐d ./... -‐ golint
Interface • wercker.yml • Describe job environment • Describe a
work pipeline • Describe required services services: -‐ mongodb
Output • Pipeline outputs container image • Hugely beneficial •
Immutable, tested object linked to commit • Repeatability
Under the hood • Standalone process dispatches work to fleet
• Called “kiddie-pool”
mhook • Needed simple package manager • downloads packages from
S3 • indexed by project, branch, and commit • similar to Kelsey Hightower’s `pm` https://github.com/wercker/mhook
kiddie-pool uses mhook [Unit] Description=Wercker Kiddie-‐Pool %i After=install-‐mhook.service
[Service] ExecStartPre=/tmp/mhook -‐-‐bucket <bucket> \\ —project kiddie-‐pool \\ —branch master \\ —commit latest \\ /opt/bin/kiddie-‐pool-‐%i ExecStartPre=/usr/bin/chmod +x /tmp/kiddie-‐pool-‐%i ... [Install] WantedBy=multi-‐user.target [X-‐Fleet] Global=true
kiddie-pool • Sits between work queue and fleet • Constructs
Unit from job metadata • Unit invokes `wercker` cli tool • Sends to fleet over http API
wercker cli • Understands how to actually run the job
• You can download and run wercker locally • rapid iteration • don’t even need us • wow http://wercker.com/downloads/
What’s next • Smart job assignment • Fleet naively allocates
work • Need a job scheduler that’s smarter • Colocate jobs, data, and services • Help us build this
What’s next • mhook • Push behavior • Signing packages
• Wercker step
Logging • Logging • Use Graylog because they have a
working docker image • `journalhook` sends application data to journal • `journal2gelf` container streams journal to graylog • persists journal cursor https://github.com/wercker/journalhook
Provisioning • Vagrant for development • AWS/Cloud Formation for user-facing
• Single script to send application units to fleet • Separation of concerns, no duplication
etcd • Used to publish service information • In the
application to signal job aborts • Best way to run is as cluster of its own • should get easier with 2.0 with proxies • need to configure many things to have correct etcd url
References 1. http://wercker.com/downloads/ 2. https://github.com/wercker/mhook 3. https://github.com/wercker/journalhook 4. https://github.com/systemd/journal2gelf 5.
https://registry.hub.docker.com/u/mwhooker/ journal2gelf/ 6. https://speakerdeck.com/mwhooker/wercker-on- coreos
Thank you Matt Hooker wercker Software Engineer matt@wercker.com @mwhooker http://wercker.com
http://twitter.com/wercker Grab a shirt and/or sticker! wercker