Skip to main content
Welcome — this lesson introduces OpenShift Templates and the Catalog, aimed at beginners. You’ll learn what the Catalog presents in the web console, how Templates bundle multiple Kubernetes/OpenShift resources, and how to author and install your own Template. When you sign in to the OpenShift web console, the Catalog is the interface that presents deployment options and ready-made stacks. Instead of manually creating individual BuildConfigs, DeploymentConfigs, Services, ImageStreams, Secrets, and Routes, the Catalog provides packaged Template items so you can deploy a complete application stack in a single step. Common catalog items (example: Django + PostgreSQL)
  • A BuildConfig that builds the application image.
  • An ImageStream to tag and track builds.
  • A DeploymentConfig to run the application.
  • A DeploymentConfig (or StatefulSet/Deployment where appropriate) to run PostgreSQL.
  • A Service exposing the database to the application on port 5432.
  • A Secret to store database credentials and inject them into pods.
  • A Service exposing the application on port 80.
  • A Route to expose the application outside the cluster.
  • A set of parameters presented in the creation wizard (application name, Git repo, namespace, etc).
All these resources are packaged into a single Template object. Instantiating the Template creates the full stack with minimal input.
A diagram template of a Kubernetes/OpenShift deployment for a Django + PostgreSQL application. It shows components like Route, Services, Deployments, Secrets, Build, Image Stream and a parameters list.
Resources included in Templates — quick reference Creating and adding a Template to the catalog
  1. Author a Template YAML (or JSON) that defines:
    • The Template metadata (metadata.name, labels, annotations).
    • A parameters array for values to collect from users.
    • An objects array containing the resource manifests that will be created when the template is instantiated.
  2. Remove cluster-specific fields (status, resourceVersion, uid, creationTimestamp) from exported resource manifests before adding them.
  3. Replace hard-coded values with template parameters (e.g., ${APP_NAME}, ${NAMESPACE}, ${GIT_URI}).
  4. Create the Template in the cluster with oc create -f.
Minimal Template skeleton
Example showing how resource manifests sit inside objects (illustrative — sensitive fields omitted):
Install the template
Example output
If you need YAML for resources to include in a Template, export an existing resource and parameterize it. For example:
Then remove cluster-specific fields (status, resourceVersion, uid, creationTimestamp) and replace hard-coded values with template parameters before adding the manifest to the objects array.
Tips and best practices
  • Parameterize as much as possible (names, ports, secrets) so the Template is reusable across projects.
  • Use descriptive displayName and description fields for parameters so the Catalog creation wizard is clear to end users.
  • Keep Secrets out of source control. Consider generating Secrets at instantiation time or prompting users to supply credentials.
  • Test instantiation in a non-production project before adding to a shared Catalog.
Useful links and references Summary Templates let you package multiple OpenShift/Kubernetes resources and user-facing parameters into a single reusable object. Adding Templates to the Catalog provides end users with one-click deployment options for complex application stacks like Django + PostgreSQL. Follow the steps above to author, parameterize, and install Templates into your cluster.

Watch Video