Local Kubernetes setup for Outpost using Minikube. This setup includes:
- Outpost services (API, delivery, and log processors). See the architecture for more details.
- Redis as KV and entity storage
- PostgreSQL as log storage
- RabbitMQ for message queuing
Prerequisites
Setup
-
Clone the Outpost repository:
git clone https://github.com/hookdeck/outpost.git
sh
-
Start Minikube and create a namespace:
minikube start
kubectl create namespace outpost
kubectl config set-context --current --namespace=outpost
sh
-
Install dependencies:
cd outpost/deployments/kubernetes
./setup-dependencies.sh
sh
-
Install Outpost:
Helm charts will have versioned releases in the future.
helm install outpost ../../deployments/kubernetes/charts/outpost -f values.yaml
sh
Verify Installation
-
Set up ingress and tunnel (keep this terminal open):
minikube addons enable ingress
kubectl wait --namespace ingress-nginx \
--for=condition=ready pod \
--selector=app.kubernetes.io/component=controller \
--timeout=90s
sudo minikube tunnel
sh
-
In a new terminal, add local domain to /etc/hosts
:
echo "127.0.0.1 outpost.acme.local" | sudo tee -a /etc/hosts
sh
-
Get your Outpost API key:
export OUTPOST_API_KEY=$(kubectl get secret outpost-secrets -o jsonpath='{.data.API_KEY}' | base64 -d)
echo $OUTPOST_API_KEY
sh
-
Test the Outpost API:
# Create tenant
curl --location --request PUT 'http://outpost.acme.local/api/v1/hookdeck' \
--header "Authorization: Bearer $OUTPOST_API_KEY"
# Query tenant
curl http://outpost.acme.local/api/v1/hookdeck \
--header "Authorization: Bearer $OUTPOST_API_KEY"
sh
Cleanup
# Remove Kubernetes resources
kubectl delete namespace outpost
kubectl config set-context --current --namespace=default
# Remove local domain
sudo sed -i '' '/outpost.acme.local/d' /etc/hosts
sh
Explore Further
-
Publish events to test the delivery and log services
-
Access infrastructure:
# Redis CLI
kubectl exec -it outpost-redis-master-0 -- redis-cli
# PostgreSQL
kubectl exec -it outpost-postgresql-0 -- psql -U outpost
# RabbitMQ Management: http://localhost:15672
kubectl port-forward outpost-rabbitmq-0 15672:15672
sh