website/src/content/docs/connect/kubernetes.mdx
kubectl access (EKS, GKE, k3s, etc.)Create a Dockerfile in your project root:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
ENV PORT=8080
CMD ["node", "server.js"]
docker build -t registry.example.com/your-team/rivetkit-app:latest .
docker push registry.example.com/your-team/rivetkit-app:latest
Replace registry.example.com/your-team with your registry path. Auth with docker login first if needed.
After creating your project on the Rivet dashboard, select Kubernetes as your provider. You'll be provided RIVET_ENDPOINT and RIVET_PUBLIC_ENDPOINT environment variables.
Create a rivetkit-secrets.yaml for your environment variables:
apiVersion: v1
kind: Secret
metadata:
name: rivetkit-secrets
type: Opaque
stringData:
RIVET_ENDPOINT: <your-rivet-endpoint>
RIVET_PUBLIC_ENDPOINT: <your-rivet-public-endpoint>
Create a deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: rivetkit-app
spec:
replicas: 1
selector:
matchLabels:
app: rivetkit-app
template:
metadata:
labels:
app: rivetkit-app
spec:
# Allow enough time for actors to gracefully stop on SIGTERM.
# The runner waits up to 120s for actors to finish; 130s provides buffer.
# See: /docs/actors/versions#graceful-shutdown-sigterm
terminationGracePeriodSeconds: 130
containers:
- name: rivetkit-app
image: registry.example.com/your-team/rivetkit-app:latest
envFrom:
- secretRef:
name: rivetkit-secrets
Apply both manifests:
kubectl apply -f rivetkit-secrets.yaml
kubectl apply -f deployment.yaml
Service and Ingress to expose your app externally (e.g. my-app.example.com)/api/rivet path into the connect form (e.g. https://my-app.example.com/api/rivet)Check that the pod is running:
kubectl get pods -l app=rivetkit-app
Your app should appear as connected on the Rivet dashboard once the pod is ready.
</Step> </Steps>