On Github getcarina / carina-use-cases
Ash Wilson, Carolyn Van Slyck and Nick Silkey
$ docker run nginxWhat's involved in deploying a flask app What that looks like with Docker
Docker as a Service
Secure place to run your containers Push button Docker clusters Freechatops (n): putting tools in the middle of the conversation
These are speaker notesIncident Response is inherently collaborative!
Engineers - Incident Mgmt - Stakeholders - Leadership
These are speaker notesInstrument jobs, in chat, via webhooks
@hubot: gif me rick astley
@hubot: youtube me rick astley
!m elarson
pglass++ for fixing all the things!
These are speaker notesDev onboarded our OpenStack-based product, in Carina soon after it went public beta. Easy via docker-compose!
These are speaker notesHeroku + RedisToGo => Carina + ObjectRocket
Typical Stop, Dump, Check, Import, Start, Validate
Dockerfile > Procfile
Drinking our own πΎ
These are speaker notesRemember designate-carina?
$ make bootstrap
$ make cluster-create
$ make allThese are speaker notes
$ make setup
$ make carina-create
$ make d-build
$ make d-run
$ make d-psThese are speaker notes
$ make d-logs
$ make d-roll
$ make pkg-search HUBOT_PACKAGE=hubot-pugme
$ make pkg-add HUBOT_PACKAGE=hubot-pugme
$ make pkg-upThese are speaker notes
Ash Wilson
Mic transition, intro
These domains are all served by a single, open-source system called "Deconst"
Not static sites
Each site managed independently by different processes
Making changes = hunting down the right person and sending email
Publishing = all over the place; some Jenkins, some manual
Avoid "Hey everybody, spend loads of time converting all your docs into our one true format!"
Or even worse: "use the same tooling"
Unify: infrastructure; search; metrics and logging
Separate: GitHub repos; source formats
"Inverted CMS"
Manage content with an API
Bring together docs written in many places in many ways
Number one need from the day we shipped: ability to see content before it's live
Needs to be accessible to a wide range of potential contributors
Don't assume everyone has a good Ruby, Python, Node setup locally
Vagrant/local Docker cause more yak-shaving problems
No "staging server": complicated git workflows, only one person can use it at a time
Opensource CI/CD software called "Strider"
Chosen because it's nice and twelve-factor, customizable
Custom build plugins for content and control repositories
Strider content build plugin runs two Docker containers in sequence
First is the "preparer"
An adapter between the host doc system and the JSON format the content service understands
Writes assets and JSON documents to directories within a workspace volume
Important to run in Docker, as a non-root user! Jekyll and Sphinx can both run arbitrary code
Also keeps us from having to manage Ruby / Python / Node versions on the build host
Query the content service with fingerprints to see which assets and documents are new
Pack them in tarballs and bulk-upload them
Strider watches the container's exit status
Carolyn Van Slyck
* Teaching Docker * Catch-22 * Setup painsInteractive online programming environment
Previously iPython Focused on data science, but fun for other things too!getcarina.com/blog/learning-how-to-whale
π³ π³ π³ π