Skip to main content

Install with operators

Operators are the recommended Kubernetes deployment model. Complete the registry login and create the namespace-local graph-artifacts image-pull secret described in Prerequisites before installing an operator or applying its custom resource.

The operator manager and the product workloads can run in different namespaces. Create the registry secret in each namespace where a Pod will pull a Graph image.

Graph Studio operator

Current implementation names:

  • Operator chart: anzo-operator
  • Custom resource: apiVersion: anzo.cambridgesemantics.com/v2, kind: Anzo
  • Main CRD: anzos.anzo.cambridgesemantics.com

Create graph-studio-operator-values.yaml:

operator:
image:
repository: artifacts.altair.com/graph-docker/anzo-operator
tag: <graph-studio-operator-tag>
imagePullSecrets:
- name: graph-artifacts

relatedImages:
anzo: artifacts.altair.com/graph-docker/anzo:<graph-studio-image-tag>

Install the operator:

export NAMESPACE=<namespace>
export OPERATOR_RELEASE=graph-studio-operator
export CHART_VERSION=<graph-studio-operator-chart-version>

helm install "${OPERATOR_RELEASE}" \
oci://artifacts.altair.com/graph-helmoci/anzo-operator \
--version "${CHART_VERSION}" \
--namespace "${NAMESPACE}" \
--create-namespace \
--values graph-studio-operator-values.yaml

Create a minimal Graph Studio custom resource. Its pod-template secret applies to the Graph Studio workload; operator.imagePullSecrets applies only to the operator manager.

apiVersion: anzo.cambridgesemantics.com/v2
kind: Anzo
metadata:
name: graph-studio
namespace: <namespace>
spec:
role: AnzoServer
nodeConfig:
spec:
template:
spec:
imagePullSecrets:
- name: graph-artifacts
jsonActivation: true
initJSON: |
{
"sysadminUser": "<admin-user>",
"password": "<admin-password>"
}

Apply and verify:

kubectl apply --filename graph-studio.yaml
kubectl get anzo --namespace "${NAMESPACE}"
kubectl get pods --namespace "${NAMESPACE}"

Use Kubernetes secrets for real credentials and license material. Do not copy demo activation files from source repositories.

Graph Lakehouse operator

Current implementation names:

  • Operator chart: anzograph-operator
  • Custom resource: apiVersion: anzograph.clusters.cambridgesemantics.com/v2, kind: AnzoGraph
  • Main CRD: anzographs.anzograph.clusters.cambridgesemantics.com

Create graph-lakehouse-operator-values.yaml:

image:
repository: artifacts.altair.com/graph-docker/anzograph-operator
tag: <graph-lakehouse-operator-tag>

imagePullSecrets:
- name: graph-artifacts

relatedImages:
db: artifacts.altair.com/graph-docker/anzograph-db@<graph-lakehouse-db-digest>
frontend: artifacts.altair.com/graph-docker/anzograph-frontend@<graph-lakehouse-frontend-digest>
operator: artifacts.altair.com/graph-docker/anzograph-operator@<graph-lakehouse-operator-digest>

Install the operator:

export NAMESPACE=<namespace>
export OPERATOR_RELEASE=graph-lakehouse-operator
export CHART_VERSION=<graph-lakehouse-operator-chart-version>

helm install "${OPERATOR_RELEASE}" \
oci://artifacts.altair.com/graph-helmoci/anzograph-operator \
--version "${CHART_VERSION}" \
--namespace "${NAMESPACE}" \
--create-namespace \
--values graph-lakehouse-operator-values.yaml

Create a minimal Graph Lakehouse custom resource. Configure the pull secret in both pod templates because database and frontend workloads are created separately.

apiVersion: anzograph.clusters.cambridgesemantics.com/v2
kind: AnzoGraph
metadata:
name: graph-lakehouse
namespace: <namespace>
spec:
db:
nodeConfig:
spec:
replicas: 1
template:
spec:
imagePullSecrets:
- name: graph-artifacts
storage:
dataSize: 1000Gi
retainData: true
configSize: 5Gi
retainConfig: true
spillSize: 32Gi
retainSpill: true
frontend:
nodeConfig:
spec:
template:
spec:
imagePullSecrets:
- name: graph-artifacts
deployFrontend: true

Apply and verify:

kubectl apply --filename graph-lakehouse.yaml
kubectl get anzograph --namespace "${NAMESPACE}"
kubectl get pods --namespace "${NAMESPACE}"

Operator warnings

CRDs

Helm installs CRDs on first install but does not reliably upgrade or remove them. Apply CRD updates from approved release artifacts. Deleting a CRD can delete all custom resources of that type.

Graph Lakehouse data

Set retention fields before deleting or upgrading Graph Lakehouse. Reinitializing the database erases persisted data. Export or back up data before version or cluster-shape changes.