> ## Documentation Index
> Fetch the complete documentation index at: https://arize-ax.mintlify.site/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Detailed walkthrough (OpenShift)

> Step-by-step guidance for OpenShift values.yaml fields, Ceph or S3-compatible storage, security context values, ingressMode, and installing with arize.sh or Helm.

## Before you start

* Complete [Download and extract the distribution](/ax/selfhosting/getting-started/download-and-unpack-the-distribution). Work from the extracted folder that contains `arize.sh`, `arize-operator-chart.tgz`, and your `values.yaml`.
* Align your cluster with [OpenShift cluster and resources](/ax/selfhosting/installation/openshift/cluster-existing-openshift).
* Contact Arize AI for `clusterSizing`. It must match your cluster capacity.
* Keep the [OpenShift quick start](/ax/selfhosting/installation/openshift/install-arize-quickstart) open as a template.
* Treat `values.yaml` as sensitive. Store generated passwords and keys in your secret manager, not in git history.

For every field that must be base64-encoded, use:

```bash theme={null}
printf '%s' '<plain-text-value>' | base64 | tr -d '\n'
```

## 1. Verify cluster access and clusterName

Confirm the target cluster is reachable:

```bash theme={null}
kubectl config current-context
kubectl get nodes
```

Set `clusterName` to the OpenShift cluster name your platform team uses for this deployment:

```yaml theme={null}
clusterName: "<cluster-name>"
```

## 2. Seed hubJwt

Store the runtime registry JWT Arize AI provided under `hubJwt`, base64-encoded:

```yaml theme={null}
hubJwt: "<JWT_BASE64>"
```

## 3. Configure object storage

For a Ceph or S3-compatible endpoint, set:

```yaml theme={null}
cloud: "ceph"
gazetteBucket: "<gazette-bucket-name>"
druidBucket: "<adb-bucket-name>"
cephS3Endpoint: "<URL to the Ceph S3 endpoint>"
cephS3AccessKeyId: "<base64-encoded-ceph-s3-access-key-id>"
cephS3SecretAccessKey: "<base64-encoded-ceph-s3-secret-access-key>"
```

Pre-provision the Gazette and ArizeDB buckets and grant the credentials read/write access before installing.

## 4. Set secrets, organization, and sizing

Choose a Postgres password and cipher key, base64-encode them, and set the organization and sizing values:

```yaml theme={null}
postgresPassword: "<POSTGRES_PASSWORD_BASE64>"
cipherKey: "<CIPHER_KEY_BASE64>"
organizationName: "<name of the organization or company>"
clusterSizing: "<sizing option>"
```

## 5. Align security context values

Set runAs and fsGroup values to match the SCC policy for the namespaces Arize AX will use:

```yaml theme={null}
baseRunAsUser: 1000
baseRunAsGroup: 1000
baseFsGroup: 1000
postgresRunAsUser: 70
postgresRunAsGroup: 70
postgresFsGroup: 70
operatorRunAsUser: 1000
operatorRunAsGroup: 1000
operatorFsGroup: 1000
```

The numbers above are placeholders from the example. Replace them with values approved for your OpenShift namespaces.

## 6. Set appBaseUrl and ingressMode

Set the URL users will use for the Arize AX UI after ingress and DNS exist:

```yaml theme={null}
appBaseUrl: "https://<arize-app.domain>"
```

Use OpenShift ingress mode:

```yaml theme={null}
ingressMode: 'openshift'
```

Use [OpenShift ingress mode](/ax/selfhosting/installation/openshift/ingress-openshift) and [Configuring ingress and endpoints](/ax/selfhosting/installation/ingress/configuring-endpoints) to plan hostnames, TLS, and endpoint exposure.

## 7. Optional private registry

If the cluster must pull images from your registry, set both registry values:

```yaml theme={null}
pushRegistry: "<container-registry>"
pullRegistry: "<container-registry>"
```

## 8. Install with arize.sh or Helm

Using `arize.sh`:

```bash theme={null}
./arize.sh -y install
```

Using Helm directly:

```bash theme={null}
helm upgrade --install -f values.yaml arize-op arize-operator-chart.tgz
```

Both approaches install the operator chart using the same `values.yaml`.

## Reinstall cleanup

To remove an existing Arize AX install from this cluster before reinstalling, follow [Fresh reinstall cleanup](/ax/selfhosting/advanced/fresh-reinstall-cleanup). That procedure is destructive; use it only when you intentionally want to discard the existing install.

## Next steps

* [Configure ingress on OpenShift](/ax/selfhosting/installation/openshift/ingress-openshift)
* [Validate the deployment](/ax/selfhosting/installation/validate-deployment)
