Project

Profile

Help

Story #4188

As a Pulp3 user, I have containers

Added by bmbouter about 1 year ago. Updated 7 months ago.

Status:
MODIFIED
Priority:
Normal
Assignee:
-
Category:
-
Sprint/Milestone:
Start date:
Due date:
% Done:

0%

Platform Release:
Blocks Release:
Backwards Incompatible:
No
Groomed:
No
Sprint Candidate:
No
Tags:
QA Contact:
Complexity:
Smash Test:
Verified:
No
Verification Required:
No
Sprint:

Description

Motivation

Some Pulp users likely want to run Pulp processes inside containers. We want these containers pre-built and available in the significant registries so that users can easily run Pulp from there.

There are a few flavors of containers that people want. Specifically 3 groups:

Core Containers. These containers (1 per Pulp process) only have pulpcore and pulpcore-plugin installed on them. This is useful for anyone who wants to build a derivative container, or have a vanilla core container without any plugins installed yet.

End User Single-Plugin Containers. These containers contain 1 plugin, e.g. pulp_rpm or pulp_docker. It's a container offering from a plugin developer to their end user as an easy way to run that plugin.

Specialty Plugin-Mix Containers. There will likely be several of these mixture containers made and maintained over time. For example we may want a single container with all known pulp plugins installed in it for compatability testing purposes. Also we'll want a plugin specifically for large stakeholders like Katello who uses a specific set of plugins.

What OS?

The images will be CentOS7. CentOS 7 images that comes pre-bundled with python 3.6 are available and pre-built from the CentOS group.

How Many Processes per Container?

Container best-practices suggest we only run 1 process per container

Is each Pulp process, i.e. pulp_resource_manager, pulp_worker, pulp_webserver its own container?

Yes. This makes it easy for end users who only have to specify a name instead of a name and environment variables to give that container its personality.

Which registries?

The primary registry Pulp publishes containers to is quay.io. It would also be nice to be on dockerhub additionally. More registries would also be OK beyond these.

What about Redis and Postgresql?

We need to find where those are maintained on the registries also.

Who is building these images?

Travis will be doing the container building, testing, and publishing. These will be additional steps in existing pipelines and new pipelines in Travis. For example, the same Travis pipeline that publishes a Pulp release to PyPI, will also build the container and pulp-smash test it before publishing the container to the registry.

Who is maintaining the Travis automation?

The core team maintains the images that do not include any plugins.
Each plugin team can choose to add Travis build/test/publish workflows for their plugins and can maintain that.
For new plugins, the plugin_template should come with as much boilerplate container build/test/publish code as possible

What about specialty plugin mixtures of containers?

For specialty build mixtures, Pulp can produce build files, e.g. a Dockerfile that would allow a public build service like dockerhub to build an image for you to your needs. This could be a check-the-plugins-you-want webform in the docs or on pulpproject.org for example.


Subtasks

Task #4189: Extend Travis build+publish pipeline to build, test, and publish vanilla core process images to quay.ioNEW

Actions
Story #4198: As a plugin writer, the plugin_template has a container-build-test pipeline as part of itNEW

Actions
Ansible Plugin - Story #4199: As an Ansible user, I have containersNEW

Actions
Python Support - Story #4200: As a Python user, I have containersNEW

Actions
File Support - Story #4201: As a File user, I have containersNEW

Actions
Container Support - Story #4202: As a Docker user, I have containersNEW

Actions
RPM Support - Story #4203: As an RPM user, I have containersNEW

Actions

Associated revisions

Revision 764dfc36 View on GitHub
Added by Eric D. Helms 8 months ago

fixes #4188: Add Pulp 3 container image built from PyPi

Revision 7012b62a View on GitHub
Added by bmbouter 8 months ago

Merge pull request #13 from ehelms/add-dockerfile

Fixes #4188: Add Pulp 3 container image built from PyPi

History

#1 Updated by amacdona@redhat.com about 1 year ago

For arbitrary plugin mixtures, one alternative to generating Dockerfiles could be to use an init container0.

We could build containers with pulpcore (without plugins), and use the init container to install plugins. We would have to mount the site-packages and modify the python path so that the plugin container and the pulpcore container know about each other and install dependencies correctly.

[0]: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/

#2 Updated by bmbouter about 1 year ago

  • Tracker changed from Issue to Story
  • % Done set to 0

#3 Updated by Anonymous 8 months ago

  • Status changed from NEW to MODIFIED
  • % Done changed from 0 to 100

#4 Updated by daviddavis 7 months ago

  • Sprint/Milestone set to 3.0

#5 Updated by bmbouter 7 months ago

  • Tags deleted (Pulp 3)

Please register to edit this issue

Also available in: Atom PDF