Pulp CI

Pulp Operator

A Kubernetes Operator for Pulp 3, under active development (not production ready yet) by the Pulp team. The goal is to provide a scalable and robust cluster for Pulp 3. Pre-built images are hosted on quay.io.

Note that it utilizes a single container image from the pulpcore repo, to run 4 different types of service containers (like pulpcore-api & pulpcore-content.) currently manually built and hosted on quay.io.

It is currently working towards Phase 1 of the Kubernetes Operator Capability Model before being published on OperatorHub, including compatibility with more clusters.

See latest slide deck for more info.


  • pulpcore-api - serves REST API, Galaxy APIs (v1, v2, v3, UI), and the container registry API. The number of instances of this service should be scaled as demand requires. Administrators and users of all of the APIs create demand for this service.

  • pulpcore-content - serves content to clients. pulpcore-api redirects clients here to download content. When content is being mirrored from a remote source this service can download that content and stream it to the client the first time the content is requested. The number of instances of this service should be scaled as demand requires. Content consumers create demand for this service.

  • pulpcore-worker - performs syncing, importing of content, and other asynchronous operations that required resource locking. The number of instances of this service should be scaled as demand requires. Administrators and content importers create demand for this service.

  • pulpcore-resource-manager - all asynchronous work flows through this service. Only a single entity does work, but other instances can be run as hot spares that will take over if the active one fails.

Created with (based on template)

operator-sdk new pulp-operator --api-version=pulpproject.org/v1beta1 --kind=Pulp --type=ansible --generate-playbook

Built/pushed with

operator-sdk build --image-builder=buildah quay.io/pulp/pulp-operator:latest

podman login quay.io

podman push quay.io/pulp/pulp-operator:latest


Review deploy/crds/pulpproject_v1beta1_pulp_cr.default.yaml. If the variables' default values are not correct for your environment, copy to deploy/crds/pulpproject_v1beta1_pulp_cr.yaml, uncomment "spec:", and uncomment and adjust the variables.


minikube service list


Get external ports:

kubectl get services

Get external IP addresses:

kubectl get pods -o wide

How to File an Issue

To file a new issue set the Category to Operator when filing here.

See redmine fields for more detailed descriptions of all the fields and how they are used.

Field Instructions
Tracker For a bug, select Issue, for a feature-request, choose Story
Subject Strive to be specific and concise.
Description This is the most important part! Please see issue description.
Category Operator
Version The version of operator that you discovered the issue.
OS The Ansible managed OS.

Get Help

Documentation: https://docs.pulpproject.org/pulp_operator/

Issue Tracker: https://pulp.plan.io

We have enabled GitHub Discussions.

Join #pulp on Matrix for User support

Join #pulp-dev on Matrix for Developer discussion.