This process is not for production. Use it only for testing or development.
Prerequisites
Before starting, have the following ready:- Arize distribution access — JWT token for downloading the distribution from Arize
- Passwords and secrets — You will choose a MinIO password, Postgres password, and encryption key (all base64-encoded in
values.yaml) - Organization name — Name of your organization or company (for
values.yaml) - App URL — The URL you will use to reach the Arize UI (e.g.
https://arize-app.yourdomain.com). This can be a hostname you map to a private IP (see Step 8) if the VM has no public address. - Network access to the VM — If the VM only has a private IP (for example
10.x.x.x,172.16.x.x, or192.168.x.x), your browser, SDKs, and any clients must run on a host that can reach that address (same VPC or subnet, site-to-site VPN, or client VPN into the cloud network). You do not need a public IP for this guide.
Step 1: Create the virtual machine
Create a single VM with these specifications:| Requirement | Specification |
|---|---|
| Size | 16 vCPU, 128 GB RAM — e.g. n2d-highmem-16 (GCP), r7a.4xlarge (AWS), Standard_E16s_v5 (Azure) |
| OS | Debian base image |
| Boot disk | 500 GB |
| Network | Allow HTTP and HTTPS traffic to the VM. If the machine uses a private IP only, restrict ingress to trusted CIDRs (for example your VPC, office, or VPN range) instead of the open internet. If the VM has a public IP, you can allow HTTP/HTTPS from the internet or from specific IPs, depending on your policy. |
| Access | SSH (port 22). Add firewall rules and an SSH key as required by your cloud provider. For a private-IP-only host, allow SSH from your bastion, VPN, or admin network. |
Step 2: Install k3s
SSH into the machine, then run:kubectl get nodes. You should see your node with status Ready and role control-plane, for example:
Step 3: Install Helm
helm version. You should see JSON output with BuildInfo for your Helm installation.
Step 4: Install MinIO (object storage)
MinIO provides the S3-compatible object storage used by Arize AX. The commands below create aminio directory, a values file, and install the MinIO Helm chart.
- Persistence size: Set
persistence.sizeto the max storage per bucket (e.g. up to 75Gi). With a 500 GB boot disk, 75Gi per bucket leaves space for other PVCs. - Credentials: Set
rootPasswordto a password you choose; you will use the same user/password invalues.yamllater.
Step 5: Retrieve the Arize distribution
Create a release folder, download the distribution, and extract it. Replace<your JWT token> with your actual JWT.
Step 6: Create values.yaml
From thearize-release-* directory, create values.yaml by editing the placeholders below and pasting the result into your terminal. All values marked “(base64 encoded)” must be base64-encoded.
- hubJwt: Your Arize JWT (base64)
- postgresPassword: A password you choose (base64)
- cephS3AccessKeyId: MinIO user from Step 4, e.g.
minio(base64) - cephS3SecretAccessKey: MinIO password from Step 4 (base64)
- cipherKey: An encryption key you generate (base64)
- appBaseUrl: The URL where you will access the Arize UI
Step 7: Install Arize AX
From the samearize-release-* directory, run:
kubectl get pods -n arize to see all pods in a running state.
Step 8: Configure ingress
Ingress exposes the Arize AX UI over HTTPS. You can use any certificate; this step uses a self-signed certificate for a low-effort setup. You can choose any domain (e.g.arize-app.example.local) — no real DNS record is required because you will use /etc/hosts to point the hostname to your VM.
Private IP only: If the VM has no public IP, use the VM’s private address in /etc/hosts on every client that should open the UI or send data (your laptop on VPN, a jump host, or a build agent in the same VPC). The certificate and ingress hostnames stay the same; only the IP you map must be reachable from that client.
8a. Generate a self-signed certificate
From the home directory, generate the cert. Replace<your domain> with the domain you want to use (e.g. example.local).
8b. Get base64 values for the ingress manifests
You will paste these values into the ingress YAML in the next step. Run:8c. Create and apply the ingress manifests
Create aningress directory and an ingress.yaml file. In the manifest below, replace:
<your domain>— The same domain you used in the certificate (e.g.example.local)<your value for tls.crt>— The full output ofbase64 -w 0 tls.crt<your value for tls.key>— The full output ofbase64 -w 0 tls.key
8d. Point the hostname to your VM and open the UI
On each machine where you want to use the Arize UI (your laptop or another host), add a line to/etc/hosts so arize-app.<your domain> resolves to the VM’s IP. This replaces a DNS record for testing.
- Edit hosts (e.g.
sudo vi /etc/hostsorsudo nano /etc/hosts). - Add a line:
<VM IP address> arize-app.<your domain>
Use the same domain as in the certificate and ingress.
- Public IP: If your cloud VM has a public address, use that IP in
/etc/hostsfrom any client that can reach it (subject to your security group or firewall rules). - Private IP only: If the VM has only a private IP, use that private address. The client must be on a network that can route to it (for example same VPC, peered network, or connected VPN). If you reach the VM only via SSH through a bastion, you still need a path for HTTPS (port 443) from the browser/SDK machine to the Arize node—either run the browser on a host inside the VPC, use VPN, or forward ports with
ssh -Land pointlocalhostin/etc/hoststo match your tunnel setup.
https://arize-app.<your domain>. You should see the Arize login page. Accept the self-signed certificate warning if prompted, then sign in with your initial admin credentials. You can now use Arize AX.
Step 9: Validate deployment
The distribution includes example scripts underexamples/sdk. Use them to confirm the cluster can receive traces.
- Certificate: The deployment uses a self-signed cert. Have the certificate (e.g.
tls.crt) available on the machine where you run the script, or configure the script to skip TLS verification if it supports that. - Network: Run the script from a host that can reach the VM’s reachable address for HTTPS (public IP or private IP). If the VM uses only a private IP, run the SDK from a host on the same VPC/VPN or with routing to that host, and use the same hostname in
/etc/hosts(or DNS) as inappBaseUrl.
arize-release-* directory (or wherever you extracted the distribution), run the HTTP trace sample: