Kubernetes
Hook0 Self-Hosting Guide on Kubernetes
This guide will help you self-host Hook0 on your Kubernetes cluster using the
provided deployments.yaml file. Follow these steps to get your Hook0 instance up and running.
Prerequisites
Before you begin, ensure you have the following prerequisites:
- A Kubernetes cluster up and running.
kubectl
command-line tool configured to interact with your Kubernetes cluster.- Persistent storage available for PostgreSQL and Mailpit.
Deployment Overview
The provided deployments.yaml file sets up the following components:
- API Service: Exposes the Hook0 API.
- Frontend Service: Hosts the Hook0 frontend.
- Mailpit Service: Manages outgoing emails.
- PostgreSQL Service: Database for storing Hook0 data.
- Output Worker: Processes webhook calls for Hook0.
Steps to Deploy
1. Create the Namespace
First, create a dedicated Hook0
namespace for Hook0 to keep everything organized.
kubectl apply -f deployments.yaml -l kind=Namespace
This command applies only the Namespace
section of the deployments.yaml
.
2. Deploy the Services
Next, deploy all the services and deployments defined in the deployments.yaml
.
kubectl apply -f deployments.yaml
This will create all the necessary services, deployments, and persistent volume claims for Hook0.
3. Verify Deployments
After applying the deployments.yaml
, verify that all pods are running:
kubectl get pods -n hook0
All pods should be in the Running
state. If any pods are not running, use the following command to debug:
kubectl describe pod <pod-name> -n hook0
4. Access the Hook0 Services
Frontend
-
Access the frontend service using the following command to get the service details:
kubectl get svc frontend -n hook0
-
Use the external IP or NodePort displayed to access the frontend in your browser.
API
-
Similarly, to access the API service, use:
kubectl get svc api -n hook0
5. Persistent Data Storage
The PostgreSQL and Mailpit services require persistent data storage, which is managed through Persistent Volume Claims (
PVCs). Ensure that your cluster has sufficient storage for these claims. The provided deployments.yaml
requests 100Mi of storage for each service.
6. Customize Your Deployment (Optional)
You may want to adjust the environment variables in the deployments.yaml
for your specific use case. For example, you can update the DATABASE_URL
, APP_URL
, or any other environment variable to fit your infrastructure.
7. Troubleshooting
- Pods not starting: Check if the images are available and correct.
- Persistent Volume issues: Ensure your storage class supports the requested resources.
- Service access issues: Confirm that your Kubernetes network configuration allows external access.
Cleanup
To delete the Hook0 deployment, run:
kubectl delete namespace hook0
This command will remove all resources associated with Hook0 from your cluster.
Conclusion
Following these steps, you should have a fully functional Hook0 instance running on your Kubernetes cluster. For further
customization and scaling, refer to the Kubernetes and Hook0 documentation.
If you encounter any issues or have questions, feel free to reach out to the Hook0 community or check the official
documentation.
Updated about 1 month ago