Skip to content

Quickstart

In about 10 minutes you will run the Open Operator Platform on your own machine, in dev mode.

Dev mode means a local kind cluster with login turned off: you need no Keycloak users, tokens or passwords. You download the Helm charts, change a setting and run one script that deploys the platform.

For your own machine only

Dev mode is meant for trying the platform, for example for research. With login off, anyone who can reach the Portal or OEG can deploy workloads on your cluster. Never use this setup on a shared machine or on a network you don't trust.

Dev mode also leaves out what needs login: API clients, federation and the Data Lab. To use them, install with login as in Deploy with Helm.

Before you start

You need:

  • A Linux machine with at least 4 CPU cores, 12 GiB of RAM and 20 GiB of free disk (see Hardware).
  • These tools, installed and on your PATH:

    Tool Minimum version Check with
    Docker 20.x docker --version
    kind 0.20 kind --version
    kubectl 1.25 kubectl version --client
    Helm v3 helm version
    Git any git --version
  • Free host ports 30082 (Portal) and 32263 (OEG API), plus the other ports kind maps: 30081, 30083, 30989, 32004, 32013 and 32415. Stop anything else listening on them.

  • No existing kind cluster called oop-cluster. Check with kind get clusters.

1. Download the Helm charts

Clone the helm repository and move into it. Run every command in this guide from this directory.

git clone https://labs.etsi.org/rep/oop/deploy/helm.git
cd helm

The clone checks out the main branch, which holds the latest release.

2. Turn login off

Login for the whole platform is controlled by one chart value, global.auth.enabled, which is true by default. Open environments/kind/values.yaml, find the global: block, and add auth.enabled: false under it:

global:
  publicHost: localhost
  auth:
    enabled: false

Keep publicHost: localhost. The chart refuses to install without login when publicHost is anything other than localhost or 127.0.0.1.

With login off:

  • Keycloak is not deployed, since nothing needs to log in.
  • Federation Manager is not deployed, since partner operators must authenticate.
  • OEG accepts API calls without a token.
  • The Portal treats every visitor as one local user, dev, who has every role.

3. Deploy the stack

./deploy-on-kind.sh

The script does everything in one go:

  1. It creates a one-node kind cluster called oop-cluster, switches kubectl to it (context kind-oop-cluster) and creates the namespace oop.
  2. It installs the platform with Helm, using environments/kind/values.yaml (including your change from step 2), and prints the access URLs. Keycloak and Federation Manager are not in the list, since they are not deployed.

The script prints WARNING: environments/kind/secrets.values.yaml not found. You can ignore it: the file holds only the Groq API key for AI². Without it, the AI² pods still start, but the AI assistant cannot answer. To use AI², see Deploy with Helm.

4. Wait until the platform is up

The first install downloads all container images, which takes a few minutes. Wait until every Deployment is available:

kubectl -n oop wait --for=condition=Available deployment --all --timeout=15m
kubectl -n oop get pods

When it is up, every pod is Running, except the setup Jobs, which show Completed. If a pod stays in Pending, ImagePullBackOff or CrashLoopBackOff, see Troubleshooting.

5. Tell SRM where your apps can be reached

SRM reports a host address in the endpoints of every app it deploys. In environments/kind/values.yaml, this address is a placeholder, endpoint_host: <IP>. Now that the cluster exists, replace it with the IP address of the kind node, and run the Helm part of the deployment again to apply it:

NODE_IP=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' oop-cluster-control-plane)
echo "$NODE_IP"
sed -i "s/endpoint_host: <IP>/endpoint_host: $NODE_IP/" environments/kind/values.yaml
./scripts/helm-deploy.sh

./scripts/helm-deploy.sh only updates the installed platform, so this takes a few seconds. You can skip this step if you don't plan to deploy apps, but the endpoints of your apps then show <IP> instead of an address.

6. Check that it works

Ask OEG for the edge cloud zones. In dev mode you need no token:

curl -s http://localhost:32263/edge-application-management/v0.1alpha1/edge-cloud-zones

The answer lists one zone, kind local zone, with status active. That means OEG is running and reaches SRM. If you get 503 instead, SRM is still restarting after step 5: wait a few seconds and retry.

The platform is now reachable at:

What URL
Portal http://localhost:30082
OEG API (Swagger UI) http://localhost:32263/docs

Open the Portal: you are signed in straight away, with no login page.

Clean up

When you are done with the platform, delete the cluster. This also deletes everything that was installed in it:

kind delete cluster --name oop-cluster

To undo your changes to environments/kind/values.yaml, run git checkout environments/kind/values.yaml.

Next steps