Deployment Runbook
<aside>📌 Command-first runbook for customer deployment calls. Replace placeholders before running. For production environments, run changes through the customer-approved change process.
</aside>
Step 1 — Confirm cluster access
Run:
export KUBECONFIG=/path/to/customer-kubeconfig
export KUBE_CONTEXT=<customer-context>
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" config current-context
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get nodes
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get namespace hyperplane-datahub || kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" create namespace hyperplane-datahub
Step 2 — Clone the Shakudo chart
Run:
git clone --depth=1 --branch <release-branch> <https://github.com/devsentient/monorepo.git> /tmp/monorepo
cd /tmp/monorepo/stack-components/datahub/helm
helm dependency update .
Step 3 — Create required secrets
Run:
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" create secret generic datahub-ingestion-secrets -n hyperplane-datahub --from-literal=WAREHOUSE_USER='<read-only-user>' --from-literal=WAREHOUSE_PASSWORD='<password>'
Step 4 — Prepare values.yaml
Run:
cat > /tmp/datahub-values.yaml <<'EOF_VALUES'
datahub:
frontend:
enabled: true
gms:
enabled: true
prerequisites:
elasticsearch:
enabled: true
kafka:
enabled: true
mysql:
enabled: true
ingestion:
enabled: true
global:
graph_service_impl: elasticsearch
datahub_analytics_enabled: false
ingress:
enabled: true
host: datahub.<customer-domain>
EOF_VALUES
Step 5 — Deploy or upgrade
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" upgrade --install datahub /tmp/monorepo/stack-components/datahub/helm \\
--namespace hyperplane-datahub \\
--create-namespace \\
--values /tmp/datahub-values.yaml \\
--timeout 15m \\
--wait
Step 6 — Validate Kubernetes resources
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" status datahub -n hyperplane-datahub
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get pods,svc,pvc,ingress,virtualservice -n hyperplane-datahub
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" get events -n hyperplane-datahub --sort-by=.lastTimestamp | tail -n 60
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" logs -n hyperplane-datahub -l app.kubernetes.io/instance=datahub --tail=100
Step 7 — Smoke test the service
Run:
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" port-forward -n hyperplane-datahub svc/datahub-frontend 9002:9002
# In another terminal:
curl -I <http://localhost:9002>
Rollback
Run:
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" history datahub -n hyperplane-datahub
helm --kubeconfig "$KUBECONFIG" --kube-context "$KUBE_CONTEXT" rollback datahub <REVISION> -n hyperplane-datahub
kubectl --kubeconfig "$KUBECONFIG" --context "$KUBE_CONTEXT" rollout status deployment/datahub -n hyperplane-datahub || true