Install the standard Kubernetes operator
The Speedscale operator runs in your cluster and manages the components used to capture and replay traffic. This installation creates cluster-scoped RBAC, a Speedscale CRD, and admission webhooks. If your installer can write only in one existing namespace, use the namespace-scoped installation. See Kubernetes installation options to compare both modes.
Prerequisites
- A Kubernetes cluster and
kubectlaccess with permission to install cluster-scoped resources. - A service account API key from Tenant Settings. Ask a tenant administrator to create one if needed.
- Helm 3 for the Helm and rendered-manifest methods, or speedctl for the CLI method.
- The network access described in Evaluation prerequisites.
Check platform requirements before installing on OpenShift, GKE Autopilot, EKS Auto Mode, or a cluster running Istio. The Helm and manifest examples below enable eBPF capture; confirm the eBPF system requirements first. Use the platform-specific values where required.
Install with your coding agent
This platform install deliberately installs both speedctl and proxymock. For proxymock alone without cluster setup, use the proxymock-only agent install.
Let your coding agent (Claude Code, Cursor, Codex, Gemini CLI, Kiro, or any assistant that can read a URL and run commands) do the whole install. Paste this into the chat:
Install Speedscale for me. First fetch the agent skill at
https://raw.githubusercontent.com/speedscale/skills/main/skills/install-speedscale/SKILL.md
and the references/ and scripts/ files it links to (same base URL), save them
under your skills directory, then follow the skill. Ask me before touching a
Kubernetes cluster.
The install-speedscale skill follows the same steps as the manual install below. It installs speedctl and proxymock, adds Helm and kubectl if they are missing, sets up your API key without ever printing it, and picks Helm values for your platform (EKS, GKE, AKS, minikube, kind, OpenShift). Then it verifies the operator and, only for the agent you select, offers to add the proxymock MCP server and bundled skills after previewing the paths. The agent announces every step that changes something before running it. It stops for you at browser sign-in and before touching a cluster whose name looks like production. With no cluster available, it installs just the CLIs.
Already have proxymock? proxymock mcp install --client claude-code --skills offers MCP and bundled skills for that selected client, preferring project scope. Add --dry-run to preview paths. You can also add it as a Claude Code plugin with /plugin marketplace add speedscale/skills, or add it to other agents with npx skills add speedscale/skills.
See Agent skills for the other skills.
Retrieve your API key
For manual installation, use a service account API key so the cluster's access is independent of an employee's account. With the Helm, Argo CD, and rendered-manifest methods, create the namespace and load the key from a protected file into a Secret. Write the file without a trailing newline, for example printf %s "$KEY" > /secure/path/to/key; a newline becomes part of the key and authentication fails:
kubectl create namespace speedscale
kubectl -n speedscale create secret generic speedscale-apikey \
--from-file=SPEEDSCALE_API_KEY=/secure/path/to/key \
--from-literal=SPEEDSCALE_APP_URL=app.speedscale.com
If the namespace or Secret already exists, use your platform's provisioning process to manage it. For speedctl install, supply the service account key when prompted by the wizard.
Choose an installation method
For Helm and rendered manifests, add the public chart repository:
helm repo add speedscale https://speedscale.github.io/operator-helm/
helm repo update
Create speedscale-values.yaml with your cluster name and any required platform settings. The key itself stays in the Secret:
apiKeySecret: speedscale-apikey
clusterName: YOUR-CLUSTER-NAME
ebpf:
enabled: true
Use ebpf.enabled: false if your cluster cannot run eBPF and follow the sidecar fallback. Review the chart's install and upgrade lifecycle for resource ownership, hooks, and CRD handling.
- Helm
- speedctl
- Argo CD
- Rendered manifests
Install with the values file:
helm install speedscale-operator speedscale/speedscale-operator \
--namespace speedscale \
--values speedscale-values.yaml
Keep this values file for upgrades. See the Helm values reference for additional configuration.
Install speedctl, then run:
speedctl install
Choose Kubernetes and follow the prompts. This wizard is available on macOS, Linux, and Windows. After installation, follow Enable eBPF capture, or use the sidecar fallback if your cluster cannot run eBPF.
Image pull secrets
If your images require existing image pull Secrets, pass their names to the wizard:
speedctl install --imgpullsecrets my-secret1,my-secret2
Create the API key Secret in the destination cluster before syncing the application. If Argo CD creates the namespace, add CreateNamespace=true to syncPolicy.syncOptions, and make sure the Secret (for example a SealedSecret or ExternalSecret) syncs before this Application, such as in an earlier sync wave, because the operator needs it at startup. Apply the same cluster name and platform values to source.helm.values. Set targetRevision to the chart version you reviewed in the Helm repository.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: speedscale-operator
namespace: argocd
spec:
project: default
source:
repoURL: https://speedscale.github.io/operator-helm/
targetRevision: YOUR-CHART-VERSION
chart: speedscale-operator
helm:
values: |-
apiKeySecret: speedscale-apikey
clusterName: YOUR-CLUSTER-NAME
ebpf:
enabled: true
destination:
namespace: speedscale
name: in-cluster
syncPolicy:
automated: {}
Review rendered manifests and GitOps before enabling automated sync. Argo CD handles chart hooks and CRDs differently from a Helm CLI installation.
Helm runs on your workstation; it does not need to run in the cluster. Render the chart to Kubernetes YAML using your values file:
helm template speedscale-operator speedscale/speedscale-operator \
--namespace speedscale \
--values speedscale-values.yaml > speedscale-operator.yaml
Manage the output through your GitOps process or use it as a Kustomize resource:
resources:
- speedscale-operator.yaml
Applying rendered YAML does not reproduce Helm's hook ordering. Review rendered manifests and GitOps before applying the output or enabling automated sync.
Re-render when upgrading so chart changes and image versions stay current. The output can contain generated TLS private keys; handle it according to your secret-management policy. If your organization prohibits Helm tooling entirely, contact Speedscale Support for help producing custom manifests.
Verify installation
Check that the operator and forwarder pods are running:
kubectl -n speedscale get pods
Expect at least the operator and forwarder pods in Running state; the suffixes differ on your cluster:
NAME READY STATUS RESTARTS AGE
speedscale-forwarder-xxxxxxxxxx-xxxxx 1/1 Running 0 5s
speedscale-operator-xxxxxxxxxx-xxxxx 1/1 Running 0 15s
When eBPF is enabled, also check the collector pods:
kubectl -n speedscale get pods -l app=speedscale-nettap
If proxymock is installed, check component readiness, connectivity, and your kubeconfig permissions:
proxymock cluster status --speedscale-namespace speedscale
For failures, see installation troubleshooting or ask in the Speedscale Community.
Kerberos cloud proxy
If your outbound proxy requires Kerberos, follow Kerberos proxy authentication to configure the operator override and mount credentials. The operator propagates these settings to forwarder and inspector.
Private registry images
If your organization requires approved Redis or Java runtime images, configure replayComponents.redis.image and jks.image in your Helm values. The Helm values reference covers runtime requirements and truststore behavior, with a private registry example for Artifactory.
Next steps
Use the tutorial to record and replay a demo application, or follow cluster capture and replay with proxymock. See eBPF capture targets to select workloads for capture.