Deep dive: Docker Image Build Service with Foreman and Katello

Hi,
as part of my bachelor's thesis, I was looking into integrating
Katello and Docker and a sneak-peek of my efforts was demonstrated
in a deepdive roughly two months ago[1]. Now, I would like to invite
you for a short demo to show its current status with Q&A session and
further discussion if needed.

The event will be on Wednesday 20.5.2015 at 15:00GMT/UTC via https://plus.google.com/events/cl2hfek9mthqorvtbag0m92mgak

Changes since last deepdive:

  • automatic builds of images triggered by content view version publish
  • bulk build of images
  • updates of images based on applicable errata or package version changes
  • reworked UI

The deepdive will cover these features along with necessary details about its internals.

Background info

··· --------------- > The core of the functionality is build based on content views: one can > select the content view and environment or an activation key, a git repository containing the Dockerfile to build and the base image to be used. > > When the build is triggered, the container is set up to consume content from Katello using subscription-manager. > > Also, the original FROM image is (optionally) replaced by the one specified in the > build configuration: this gives us the ability to have full control over the > image. One could take the base image (let's say a CentOS) > and move that through the dev->test->production lifecycle and > base the rest of the images on the production version > of the base image. We then also know, that when the base image > is updated, what are the other images that need rebuilding as well. > > Once the image is produced, we can push the metadata about the > installed images back to the Katello and let Pulp compute the > applicable updates later, as we do that already for the traditional > hosts. > > For the build service itself. we've initially taken an approach of > building images inside a container. The core of it is the project > Dock [1], which provides a build container with pluggable architecture > (with setting the content view repositories, or pushing the images > back to Katello as plugins). > > The reasons for this are: > > * from it's nature, we can expect that the compute resource providing > a docker runtime is already available > * other projects (such as OpenShift) takes the same approach so that > we can share common code (as we already did with [1] > * with further Kubernetes integration, we should get the scale-out > functionality for free. (fire-and-forget tasks seem as a perfect > match for the technology as the Docker is) > * ability to easily test the builds on a local infra with minimum > dependencies. > > [1] - https://github.com/DBuildService/dock

[1] - https://www.youtube.com/watch?v=e-LBOc7laAAHi,

– Adam

The deep-dive is over, the recording is available here:

https://plus.google.com/u/0/b/102496134326414788199/events/cl2hfek9mthqorvtbag0m92mgak

Feel free to raise you questions/comments/suggestions directly in this mail thread.

– Ivan

··· ----- Original Message ----- > Hi, > as part of my bachelor's thesis, I was looking into integrating > Katello and Docker and a sneak-peek of my efforts was demonstrated > in a deepdive roughly two months ago[1]. Now, I would like to invite > you for a short demo to show its current status with Q&A session and > further discussion if needed. > > The event will be on Wednesday 20.5.2015 at 15:00GMT/UTC via > https://plus.google.com/events/cl2hfek9mthqorvtbag0m92mgak > > Changes since last deepdive: > * automatic builds of images triggered by content view version publish > * bulk build of images > * updates of images based on applicable errata or package version changes > * reworked UI > > The deepdive will cover these features along with necessary details about its > internals. > > Background info > --------------- > > The core of the functionality is build based on content views: one can > > select the content view and environment or an activation key, a git > > repository containing the Dockerfile to build and the base image to be > > used. > > > > When the build is triggered, the container is set up to consume content > > from Katello using subscription-manager. > > > > Also, the original FROM image is (optionally) replaced by the one specified > > in the > > build configuration: this gives us the ability to have full control over > > the > > image. One could take the base image (let's say a CentOS) > > and move that through the dev->test->production lifecycle and > > base the rest of the images on the production version > > of the base image. We then also know, that when the base image > > is updated, what are the other images that need rebuilding as well. > > > > Once the image is produced, we can push the metadata about the > > installed images back to the Katello and let Pulp compute the > > applicable updates later, as we do that already for the traditional > > hosts. > > > > For the build service itself. we've initially taken an approach of > > building images inside a container. The core of it is the project > > Dock [1], which provides a build container with pluggable architecture > > (with setting the content view repositories, or pushing the images > > back to Katello as plugins). > > > > The reasons for this are: > > > > * from it's nature, we can expect that the compute resource providing > > a docker runtime is already available > > * other projects (such as OpenShift) takes the same approach so that > > we can share common code (as we already did with [1] > > * with further Kubernetes integration, we should get the scale-out > > functionality for free. (fire-and-forget tasks seem as a perfect > > match for the technology as the Docker is) > > * ability to easily test the builds on a local infra with minimum > > dependencies. > > > > [1] - https://github.com/DBuildService/dock > > > [1] - https://www.youtube.com/watch?v=e-LBOc7laAAHi, > > -- Adam > > -- > You received this message because you are subscribed to the Google Groups > "foreman-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to foreman-dev+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. >