Containerize components on Fuel node to enable upgrade

Registered by Matthew Mosesohn

This blueprint covers the implementation of Docker containers to contain each of the Fuel components, including nailgun, astute/naily, cobbler, nginx, Fuel manifests, OSTF, postgres, and other components. Each container defines its requirements, determining container launch order. Tasks include isolation of Puppet modules, implementation of a base Docker profile, creation of a collection of shared volumes, and a clever launcher capable of starting containers with the necessary volumes and network relationships attached.

Blueprint information

Status:
Complete
Approver:
Mike Scherbakov
Priority:
Essential
Drafter:
Matthew Mosesohn
Direction:
Approved
Assignee:
Matthew Mosesohn
Definition:
Approved
Series goal:
Accepted for 5.0.x
Implementation:
Implemented
Milestone target:
milestone icon 5.0
Started by
Vladimir Kuklin
Completed by
Mike Scherbakov

Related branches

Sprints

Whiteboard

Done:
* Docker containers for nailgun services
  - Puppetized:
     -Merged: nginx, cobbler, rsync, postgresql, ostf
     -Ready to merge: host only manifests
     -In progress, but images exist: rabbitmq, nailgun, rsyslog, mcollectived
* Refactored every nailgun component to run independently (see item above)
* Extended version.yaml (from Ivan K) to specify production value
* Package docker-io, lxc RPMs (merged)
* Storage container framework for puppet manifests, software repositories, container service logs, and diagnostic snapshot
* Fuel base OS requirements (MERGED)
  - Light manifests for non-contained features (NTP, iptables, ssh key)
  - 6.5 CentOS kernel
* Extend firewall puppet module to handle docker iptables rules
* Find best solution for compressing Docker images (lrzip)
* Cobbler workaround to forward DHCP requests from nodes to Cobbler container via iptables modules and dhcrelay
* Tweak Cobbler profile config to override SERVER variable to admin IP when astute creates cobbler profiles.
* Refactor yaml path lookup to search /etc/fuel for astute.yaml and version.yaml (necessary to overcome LXC linking limitations)
* Refactor astute for RPM based install
* Rebase docker to 0.10.0 to fix some critical runtime bugs
* refactor bootstrap_admin_node to deploy Docker and use host-only site.pp for deployment (on review)
* dockerctl - docker container launcher daemon to handle names, source files, volumes (on review)
* Refactor docker image build and compression stage of Fuel ISO (testing now)

Todo:
* Fix docker init script to kill containers better
* Disk space requirements assessment (~15gb extra before cleanup of container artifacts) - documentation task
* Containers log rotation - review #91406

Nice to have:
* [Related to updating Fuel deployments] Patch nailgun to add yum repo and path to puppet modules (not started)
 - Add variables for fuel_yum_repo, fuel_apt_repo in Cobbler metadata and into kickstart/pressed (not started)
 - Add fuel puppet manifest version to astute deployment_engine.rb line 115 (rsync path for modules) (not started)
* Upgrade manager (PoC needs a DB migration example) (WIP Evgeniy L)
 - May be delayed out of this release
* Base container items:
  - SSH daemon for each container (NOT NEEDED - lxc-attach works)
  - Tests support for each component (split run_tests.sh for nailgun into individual components)
* Tests for upgrade and rollback
* public Fuel docker container repository
* Extend default astute.yaml with credentials so they can be synced across all containers easily (instead of hardcoded in puppet) - not crucial for 5.0

Gerrit topic: https://review.openstack.org/#q,topic:bp/fuel-containerization-of-services,n,z

Addressed by: https://review.openstack.org/82497
    Allow nginx to deploy separate from nailgun

Addressed by: https://review.openstack.org/82506
    Allow separate RabbitMQ server for nailgun

Addressed by: https://review.openstack.org/82542
    Separate OSTF and Postgres from nailgun

Addressed by: https://review.openstack.org/83061
    Separate nailgun::cobbler from nailgun

Addressed by: https://review.openstack.org/81069
    WIP. Optional install OSTF from packages

Addressed by: https://review.openstack.org/83735
    Add capability for installing astute from pkg

Addressed by: https://review.openstack.org/85292
    Add tftp conntrack modules on master node boot

Addressed by: https://review.openstack.org/85294
    Add dhcp package to the CentOS repository

Addressed by: https://review.openstack.org/85296
    Facts update: check several files for needed info

Addressed by: https://review.openstack.org/85400
    Added docker container refs

Addressed by: https://review.openstack.org/84709
    Add docker-io to RPM requirements

Addressed by: https://review.openstack.org/86096
    Add iptables rule parser for docker

Addressed by: https://review.openstack.org/86071
    Added base host only manifest with docker

Gerrit topic: https://review.openstack.org/#q,topic:docker-host,n,z

Addressed by: https://review.openstack.org/86941
    Add docker support for nailgun::venv class

Addressed by: https://review.openstack.org/87086
    Allow separate Astute server from nailgun

Addressed by: https://review.openstack.org/87119
    Add server override feature for cobbler

Addressed by: https://review.openstack.org/87121
    Add standalone nailgun role

Addressed by: https://review.openstack.org/85691
    Added mcollective stand-alone manifest examples

Addressed by: https://review.openstack.org/84415
    Docker container support for rsyslog

Addressed by: https://review.openstack.org/87243
    Standalone nginx site.pp and dir fixes

Addressed by: https://review.openstack.org/87742
    Deploy fuel node with docker containers

Addressed by: https://review.openstack.org/87961
    Add missing cobbler dependencies

Addressed by: https://review.openstack.org/88239
    Use correct path for send2syslog.py

Addressed by: https://review.openstack.org/88261
    Fix ulimit for /etc/sysconfig/docker

Addressed by: https://review.openstack.org/88310
    anna-install network-console to fix sshd in ubuntu

Addressed by: https://review.openstack.org/88533
    Fix paths for nginx for docker containers

Addressed by: https://review.openstack.org/88280
    makefile for docker container build process

Addressed by: https://review.openstack.org/88561
    disable chroot for rsyncd in docker

Addressed by: https://review.openstack.org/88580
    update produciton check for venv paths

Addressed by: https://review.openstack.org/89264
    Update OSTF to use ostf.conf instead of params

Addressed by: https://review.openstack.org/89836
    Add base nailgun packages for host only role

Addressed by: https://review.openstack.org/89839
    Add nailgun host and port to ostf in docker env

Addressed by: https://review.openstack.org/90041
    fix OSTF init workflow for docker deployment

Addressed by: https://review.openstack.org/90087
    Deploy fuel-dockerctl tools via puppet

Addressed by: https://review.openstack.org/90676
    Add tar dependency to shotgun

Addressed by: https://review.openstack.org/90701
    Add helper aliases for cli tools in docker containers

Addressed by: https://review.openstack.org/90713
    Add docker packages to dev ISO doc

Addressed by: https://review.openstack.org/90939
    Fix conditional for docker prebuilt option

Gerrit topic: https://review.openstack.org/#q,topic:bp/fuel-new-system-ruby-in-master-node,n,z

Addressed by: https://review.openstack.org/87533
    Update development documentation about Astute installation

Addressed by: https://review.openstack.org/91096
    Split pre_hooks into setup and start sections

Addressed by: https://review.openstack.org/91264
    Add openssh-clients requirement to shotgun

Addressed by: https://review.openstack.org/91276
    Add cobbler and astute volumes for diagnostic snapshot

Addressed by: https://review.openstack.org/91278
    Export astute and cobbler etc dirs as volumes

Addressed by: https://review.openstack.org/91336
    Download base images from Fuel mirror

Addressed by: https://review.openstack.org/91380
    Add retries to nailgun syncdb for docker deployment

Addressed by: https://review.openstack.org/91382
    Moved nailgun syncdb and fixtures to puppet

Gerrit topic: https://review.openstack.org/#q,topic:logrotate-for-containers,n,z

Addressed by: https://review.openstack.org/91406
    Add log rotation for docker containers

Addressed by: https://review.openstack.org/91766
    Clean up dockerctl usage and remove unimplemented funcs

Addressed by: https://review.openstack.org/91962
    Added Docker deployment information

Addressed by: https://review.openstack.org/92380
    Add several ways to determine fuel version for dockerctl

Addressed by: https://review.openstack.org/92543
    Update development documentation about ISO building

Addressed by: https://review.openstack.org/93316
    Put version.yaml into /etc/fuel/$RELEASE/ dir

Addressed by: https://review.openstack.org/93317
    Get fuel version from version.yaml

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.