Skip to content

NativeLink deployment example for Chromium

In this example you’ll deploy NativeLink to a local Kubernetes cluster using Helm and run a Chromium build against it.

Requirements

  • An x86_64-linux system running a recent Ubuntu. Either “real” Linux or WSL2.
  • A local Kubernetes cluster. Either:
  • Helm 3
  • kubectl

Pull the Helm chart from the NativeLink OCI registry and install it:

Terminal window
helm install nativelink \
oci://public.ecr.aws/b1l4l6w7/tracemachina/nativelink \
--version 1.0.0-rc1 \
-n nativelink \
--create-namespace

Wait for the pods to become ready:

Terminal window
kubectl get pods -n nativelink -w

You should see pods for the CAS, scheduler, and worker components:

NAME READY STATUS RESTARTS AGE
nativelink-cas-... 1/1 Running 0 60s
nativelink-scheduler-... 1/1 Running 0 60s
nativelink-worker-... 1/1 Running 0 60s

View logs for individual components:

Terminal window
# CAS (Content Addressable Storage) logs
kubectl logs deploy/nativelink-cas -n nativelink
# Scheduler logs
kubectl logs deploy/nativelink-scheduler -n nativelink
# Worker logs
kubectl logs deploy/nativelink-worker -n nativelink

Port-forward the NativeLink services to your local machine:

Terminal window
# In a separate terminal — keep this running
kubectl port-forward svc/nativelink-cas 50051:50051 -n nativelink &
kubectl port-forward svc/nativelink-scheduler 50052:50052 -n nativelink &

Follow the Chromium Linux build instructions to set up the Chromium source and dependencies, then run a Reclient build against the cluster using the forwarded endpoints.

You can view Reclient’s logs like so:

Terminal window
watch $HOME/chromium/src/buildtools/reclient/reproxystatus

When you’re done testing, remove the NativeLink deployment:

Terminal window
helm uninstall nativelink -n nativelink
kubectl delete namespace nativelink