Choose your deployment path
This page's steps are hidden until you pick one. Every other lab page then follows the same choice, and you can switch at any time from the header.
Docker ComposeKubernetes / Helm

Setup & Prerequisites

Start here — the path controls at the top of this page are clickable

Look at the very top of this page, above the “Setup & Prerequisites” title:

  • Haven’t chosen yet? You will see Choose your deployment path with two buttons — Docker Compose and Kubernetes / Helm. They are buttons, not labels. Click one. The setup steps further down this page stay hidden until you do.
  • Already chosen? You will see a padlock line naming your current path, with a Switch to … button beside it.

Your choice is not permanent and it is not a commitment. The padlock line and its Switch to … button appear at the top of every page in this workshop, so you can change paths at any point — nothing you have already done is lost by switching.

Only one path’s commands are ever shown to you. That is deliberate: running the Docker commands and the Kubernetes commands is the most common way to get stuck in this workshop.

Which path should I choose?

Both paths deploy the same four containers and end at the same working lab. They differ only in where the containers run and how you drive them. Nothing in Labs 1–4 depends on which one you pick.

Docker ComposeKubernetes / Helm
Runs onYour own machine (laptop, VM, or workstation)An existing Kubernetes cluster
You work fromYour own terminalAzure Cloud Shell
You needDocker Engine 24+, Compose v2.20+, Git, jq, 8 GB free RAM, 5 GB diskkubectl 1.28+, Helm 3.14+, jq, a running cluster, a default StorageClass
Per-lab commanddocker compose uphelm upgrade --install
Reaching the lab UIDirectly on localhostkubectl port-forward, plus Cloud Shell web preview
GPUOptional — cuts model load from ~60 s to ~5 sNot used
Setup time~15 minutes~20 minutes
Cleanupdocker compose downhelm uninstall

Choose Docker Compose if…

  • You are not continuing from another workshop — this is the default, and the shortest route to a working lab.
  • You have Docker on the machine in front of you and at least 8 GB of RAM free.
  • You want the fastest feedback loop: containers restart in seconds and everything is on localhost.
  • You do not have a Kubernetes cluster, or do not want to spend lab time on one.

Choose Kubernetes / Helm if…

  • You are continuing from the Kubernetes 101 workshop and already have a cluster and an Azure Cloud Shell session. This is the main reason to pick it.
  • Your organisation runs FortiAIGate and its protected workloads on Kubernetes, and you want the lab to match how you would actually deploy it.
  • You want to see the Helm chart, the manifests, and how the pieces map to Services and PersistentVolumeClaims.
  • Your own machine cannot spare 8 GB of RAM, but your cluster can.
Not sure? Choose Docker Compose

Unless you are arriving from the Kubernetes 101 workshop, Docker Compose is the right choice. It has fewer prerequisites and fewer things that can go wrong, and you can switch to the Kubernetes path later from the control at the top of any page.

Stack overview

The lab application is four containers wired together with Docker Compose (or Helm for Kubernetes). Each lab adds one layer:

flowchart TD
    L1[Lab 1<br>Ollama only] --> L2[Lab 2<br>Agent + UI]
    L2 --> L3[Lab 3<br>MCP Server]
    L3 --> L4[Lab 4<br>same stack<br>different env vars]

The single configuration value that controls which LLM the agent talks to is OPENAI_BASE_URL. By default it points at the local Ollama container. If you want to route through FortiAIGate instead, that is the only value you change — the agent image, MCP server, and UI are identical.

Your setup steps

The panel below shows the setup steps for your chosen path only. If you see the Choose your deployment path buttons at the top of this page instead of steps, you have not picked a path yet — click one and the steps appear here.

Choose your deployment path: Docker ComposeKubernetes / Helm
Locked in — every lab page follows this choice.

Run everything on your own machine. Recommended unless you are continuing from the Kubernetes 101 workshop.

RequiresDocker Engine + Compose v2, Git, ~8 GB RAM free
GPUOptional — speeds up model loading, not required
Setup time~15 minutes

Continue: Docker Compose Setup

Deploy to a Kubernetes cluster with Helm. For attendees continuing from the K8s 101 workshop, who already have a cluster and an Azure Cloud Shell session.

Requireskubectl 1.28+, Helm 3.14+, jq 1.6+, a running cluster, a default StorageClass
Node sizeOllama needs ≥ 4 GB RAM on the node it schedules to
Setup time~20 minutes

Continue: Kubernetes / Helm Setup

Continuing from K8s 101?

Your path selection is stored per workshop site, so it does not carry over from K8s 101 — clicking Kubernetes / Helm at the top of this page is what sets it here.