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.

Services

  • 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/v1alpha1 --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

Usage

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

./up.sh

minikube service list

or

Get external ports:

kubectl get services

Get external IP addresses:

kubectl get pods -o wide