> For the complete documentation index, see [llms.txt](https://academy.pentaho.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.pentaho.com/pentaho-academy/solution-architect-learning-path-sandbox/speciality-courses/containers.md).

# Containers

{% hint style="warning" %}
**🧪 SANDBOX — draft content, sourced from an existing course outline.** Two modules (Getting Started, Containers 101) still need their lesson-level breakdown transcribed — REPLACE-ME.
{% endhint %}

Deploy the Pentaho Server with containers and Kubernetes: build the EE image from a staged archive with the softwareOverride layer pattern, run it against PostgreSQL with Podman Compose, then take the same deployment to a lightweight Kubernetes (K3s) cluster with raw manifests and a Helm chart — ending in a production-shaped HA topology.

{% columns %}
{% column %}

<p align="center"><i class="fa-file-lines" style="color:green;">:file-lines:</i><br><strong>15 lessons</strong><br><em>across 7 modules</em></p>
{% endcolumn %}

{% column %}

<p align="center"><i class="fa-flask" style="color:orange;">:flask:</i><br><strong>REPLACE-ME</strong><br><em>hands-on labs — pending Getting Started/Containers 101 breakdown</em></p>
{% endcolumn %}

{% column %}

<p align="center"><i class="fa-clock" style="color:cyan;">:clock:</i><br><strong>~2h45m+</strong><br><em>REPLACE-ME — known modules only, two intro modules still to time</em></p>
{% endcolumn %}
{% endcolumns %}

{% hint style="success" icon="cloud-arrow-up" %}
Every workshop is hands-on and runs on Pentaho's hosting platform. The Lab Guide is embedded in each lab and loads automatically when you open it — nothing to install.
{% endhint %}

***

<h3 align="center">Before you start</h3>

{% columns %}
{% column %}
{% hint style="success" icon="circle-check" %}
**What you'll need**

Podman Desktop, kubectl and Helm installed locally, plus a licensed Pentaho Server archive — covered in the Getting Started module. Comfort with containers helps but Containers 101 covers the concepts from scratch.
{% endhint %}
{% endcolumn %}

{% column %}
{% hint style="info" icon="tag" %}
**Built against**

REPLACE-ME — confirm target Pentaho version for this speciality (other paths are built against 11.0.0.3-310).
{% endhint %}
{% endcolumn %}
{% endcolumns %}

***

{% hint style="info" icon="trophy" %}

#### What you'll build

A full containerised Pentaho Server journey: a parameterised EE image, a Podman Compose deployment against PostgreSQL (with notes on MySQL/MSSQL/Oracle variants), the same deployment redeployed to K3s from raw manifests, a Helm chart wrapping that K3s deployment, and finally a production HA topology — two Pentaho nodes behind HAProxy with Keepalived VIP failover, shared PostgreSQL repository, Jackrabbit cluster journal, Quartz clustering, Carte clustering for PDI execution, and Tray.io driving event-based ETL through the Carte REST API.
{% endhint %}

***

<h3 align="center">What you'll learn</h3>

{% columns %}
{% column %}

* Build a parameterised Pentaho Server EE image from a staged archive using the softwareOverride layer pattern
* Deploy and smoke-test that image with Podman Compose against PostgreSQL, and adapt it for MySQL, MSSQL or Oracle
* Take a container deployment to Kubernetes (K3s): namespaces, configmaps, storage, database and server manifests
  {% endcolumn %}

{% column %}

* Package a K3s deployment as a Helm release, and install/upgrade/roll back from one chart
* Stand up production HA — HAProxy/Keepalived VIP failover, shared repository, Jackrabbit and Quartz clustering
* Cluster Carte for PDI execution and drive event-based ETL through the Carte REST API with Tray.io
  {% endcolumn %}
  {% endcolumns %}

***

<h3 align="center">Course Outline</h3>

<p align="center"><i class="fa-file-lines" style="color:green;">:file-lines:</i> reading · <i class="fa-flask" style="color:orange;">:flask:</i> hands-on workshop</p>

{% hint style="info" icon="circle-info" %}
Full lessons unlock once you're enrolled — this is the outline only. Getting Started and Containers 101 lesson-level detail and all times are REPLACE-ME/estimates throughout.
{% endhint %}

<table><thead><tr><th width="306">Module</th><th width="114" align="center">Reading</th><th width="139" align="center">Workshops</th><th width="100" align="right">Time</th><th>Videos</th></tr></thead><tbody><tr><td>Getting Started</td><td align="center">REPLACE-ME</td><td align="center">REPLACE-ME</td><td align="right">REPLACE-ME</td><td></td></tr><tr><td>Containers 101</td><td align="center">REPLACE-ME</td><td align="center">REPLACE-ME</td><td align="right">REPLACE-ME</td><td></td></tr><tr><td>Build the Image</td><td align="center">1</td><td align="center">1</td><td align="right">~25m</td><td></td></tr><tr><td>Compose Deployment</td><td align="center">2</td><td align="center">1</td><td align="right">~35m</td><td></td></tr><tr><td>Kubernetes (K3s)</td><td align="center">1</td><td align="center">1</td><td align="right">~25m</td><td></td></tr><tr><td>Helm</td><td align="center">0</td><td align="center">1</td><td align="right">~10m</td><td></td></tr><tr><td>High Availability</td><td align="center">2</td><td align="center">3</td><td align="right">~1h10m</td><td></td></tr><tr><td><strong>Total</strong></td><td align="center"><strong>REPLACE-ME</strong></td><td align="center"><strong>REPLACE-ME</strong></td><td align="right"><strong>~2h45m+</strong></td><td></td></tr></tbody></table>

{% stepper %}
{% step %}

### <i class="fa-compass" style="color:blue;">:compass:</i> Getting Started

`REPLACE-ME`

How to get the most out of this guide, and what to install up front — Podman Desktop, kubectl and Helm, plus the licensed Pentaho Server archive the image build stages.

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — transcribe the lesson-level breakdown for this module.
{% endhint %}
{% endstep %}

{% step %}

### <i class="fa-cubes" style="color:blue;">:cubes:</i> Containers 101

`REPLACE-ME`

Runtimes, orchestration and where the Pentaho Server fits — the concepts behind everything you deploy in this course.

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — transcribe the lesson-level breakdown for this module.
{% endhint %}
{% endstep %}

{% step %}

### <i class="fa-box" style="color:blue;">:box:</i> Build the Image

`1 reading · 1 workshop · ~25m`

Build a parameterised Pentaho Server EE image from a staged archive with the softwareOverride layer pattern, then smoke-test it with a throwaway compose file.

<details>

<summary>See the full breakdown</summary>

<table><thead><tr><th width="78"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of the Image</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Build the Pentaho Image</td><td>~15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-diagram-project" style="color:blue;">:diagram-project:</i> Compose Deployment

`2 reading · 1 workshop · ~35m`

Run the image against PostgreSQL 15 with Podman Compose — five repository databases, health checks, persistent volumes — and see what changes for MySQL, MSSQL and Oracle.

<details>

<summary>See the full breakdown</summary>

<table><thead><tr><th width="78"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Compose Deployment</td><td>~10m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Pentaho Server + Postgres</td><td>~15m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Database Variants</td><td>~10m</td></tr></tbody></table>

</details>

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — confirm full lesson title for "Pentaho Server + P..." (truncated in source outline).
{% endhint %}
{% endstep %}

{% step %}

### <i class="fa-network-wired" style="color:blue;">:network-wired:</i> Kubernetes (K3s)

`1 reading · 1 workshop · ~25m`

Take the same deployment to a lightweight Kubernetes: namespaces, configmaps, storage, database and server manifests, deployed and torn down by script.

<details>

<summary>See the full breakdown</summary>

<table><thead><tr><th width="78"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of K3s Deployment</td><td>~10m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Deploy to K3s</td><td>~15m</td></tr></tbody></table>

</details>

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — confirm full lesson title (truncated in source outline).
{% endhint %}
{% endstep %}

{% step %}

### <i class="fa-ship" style="color:blue;">:ship:</i> Helm

`1 workshop · ~10m`

Package the K3s deployment as a Helm release — install, upgrade and roll back from one chart.

<details>

<summary>See the full breakdown</summary>

<table><thead><tr><th width="78"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Install via Helm</td><td>~10m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-server" style="color:blue;">:server:</i> High Availability

`2 reading · 3 workshops · ~1h10m`

Production HA from the installation guide: two Pentaho nodes behind an HAProxy pair with Keepalived VIP failover, a shared PostgreSQL 14 repository, the Jackrabbit cluster journal and Quartz clustering — plus Carte clustering for PDI execution and Tray.io driving event-based ETL through the Carte REST API.

<details>

<summary>See the full breakdown</summary>

<table><thead><tr><th width="78"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Pentaho HA</td><td>~20m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Deploy Pentaho in HA</td><td>~20m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Carte Cluster for PDI</td><td>~10m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Tray.io Integration</td><td>~10m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Adaptation: HA on K3s</td><td>~10m</td></tr></tbody></table>

</details>

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — confirm full lesson titles for "Carte Cluster for PD..." and "Tray.io Integration ..." and "Adaptation: HA on K..." (truncated in source outline).
{% endhint %}
{% endstep %}
{% endstepper %}

***

{% hint style="info" icon="book" %}
**Glossary**

The source outline includes a standalone Glossary page. REPLACE-ME — confirm whether to carry this over as a page here, or fold its terms into the lessons themselves.
{% endhint %}

***

{% hint style="warning" icon="circle-question" %}
**REPLACE-ME** — confirm whether this speciality counts towards the Level 3 — Professional certification, and what "Free browse" means in the source tool (a preview mode not currently part of the Academy's purchase model).
{% endhint %}

***

<p align="center"><a class="button secondary" data-icon="arrow-left">Back to Speciality Courses</a></p>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://academy.pentaho.com/pentaho-academy/solution-architect-learning-path-sandbox/speciality-courses/containers.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
